此仓库是 CVE-2021-44228 漏洞的概念验证。
它衍生自此仓库。
在此仓库中,我制作了一个易受攻击的应用程序示例,并演示了如何利用该漏洞。
我已修改上游 Python 脚本,以自动化生成此漏洞。
此仓库中有两个 Dockerfile,可方便使用,如下所示:
在此 Docker 镜像中,我们从我的 Google Drive 下载 java jdk-8u20,因为您需要在 Oracle 上注册账号才能下载。
如果您不信任此来源,可以修改 Dockerfile 中的下载文件,并从此处下载 jdk(确保下载适用于 Linux 的 Java SE Development Kit 8u20 版本)。
此 Docker 镜像运行 kozmer 提供的脚本的修改版本,并执行以下操作:
默认使用的端口:JNDI LDAP 为 1389,SimpleHttpServer 为 8000,反向 shell 为 9001!
编译并运行此镜像,请执行:
sudo docker build -t log4j-ldap .
sudo docker run -d -p 8000:8000 -p 1389:1389 log4j-ldap
运行 docker logs <containerID> 可查看应用程序日志并获取需要提供给易受攻击应用程序的正确输入。
对于此 PoC,我使用了 Docker 的默认 IP(172.17.0.1/24),您可以在 ./Docker-Ldap/run.sh 脚本中修改它们以匹配您的场景。
此 Docker 镜像运行一个易受攻击的 Web 应用程序,该应用程序使用未修补的 Log4J 2 版本,并将其暴露在端口 8080 上。
应用程序源代码也在 ./Docker-Vuln 中,感谢 kozmer。
编译并运行此镜像,请执行:
sudo docker build -t log4j-ldap .
sudo docker run -d -p 8000:8000 -p 1389:1389 log4j-ldap
用户名字段是可注入字段!
为了接收反向 shell,您必须为端口 9001 创建一个 netcat 监听器。
nc -lvnp 9001
下载仓库后,请确保已安装 Docker 引擎,并且机器上没有运行其他 Docker 镜像。
config.sh 脚本来构建镜像并启动它们。(此脚本使用 root 权限运行,您可以根据需要修改它们)。9001 上打开一个 netcat 监听器。localhost:8080docker logs <containerID>)。