漏洞描述
由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。漏洞利用无需特殊配置,Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影响。
影响版本
Apache Log4j 2.x < 2.15.0-rc2
影响范围
含有该漏洞的Log4j影响到超过 6000个中间件或应用,目前已知的可能受影响的应用及组件包括但不限于如下清单中所列出的:
-
Spring-Boot-strater-log4j2
-
Apache Struts2
-
Apache Solr
-
Apache Flink
-
Apache Druid
-
ElasticSearch
-
Flume
-
Dubbo
-
Redis
-
Logstash
-
Kafka
验证过程
靶场使用vulfocus的靶场,该靶场漏洞位置存在于/hello路径,漏洞验证过程使用burpsuite、JNDIExploit以及拥有公网ip的vps的服务器。
-
漏洞检测
首先对vulfocus的靶场进行抓取数据包。
然后进入存在漏洞的路径,使用POST请求尝试将请求dnslog地址,通过查看dnslog上的记录查看是否执行请求。
当前ceye.io没有数据,发送构造好的POST包后,dnslog将会出现对应的解析记录。
说明漏洞存在。
2.命令执行
首先将payload进行base64编码(注意 在注入中 需要将base64加密后的+进行url编码 ,burpsuite需要二次url编码)。
使用靶机可远程访问的服务器,开启能够执行恶意命令的ldap服务器,这里使用JNDIExploit,JNDIExploit具体使用参数如下图。
工具使用
该工具从InScan专业版分离,包含漏洞验证功能与漏洞利用功能,在利用漏洞时候需要在公网IP上部署一个JNDI恶意服务(https://github.com/feihong-cs/JNDIExploit)
参数如下图,填入LDAP地址框,然后再使用公网IP监听端口来反弹shell。
当然InScan专业版也集成了dnslog与自动化反弹shell功能,可全自动检测和利用 Log4j2远程代码执行漏洞,通过Log4j2自动内网横向移动。
排查方法
在用内部搜索log4j-core-*.jar以及log4j-api-*.jar两个关键字,查看其版本是否在受影响的版本范围中,同时查看其pom.xml文件内部的版本号进行二次确认。也可以通过查看内部JAVA源代码库中所引入的组件清单列表来确认是否引入了Apache Log4j 2.x的Jar包。
修复建议
1、升级Apache Log4j2所有相关应用到最新的 log4j-2.15.0-rc2 版本,地址 https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2
2、升级已知受影响的应用及组件,如srping-boot-strater-log4j2、Apache Solr、Apache Flink、Apache Druid