log4j<=1.2.17反序列化漏洞(CVE-2019-17571)分析

Posted 回忆飘如雪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了log4j<=1.2.17反序列化漏洞(CVE-2019-17571)分析相关的知识,希望对你有一定的参考价值。

PS: 文章仅用于研究漏洞原理,促进更好的防御, 禁止用于非法用途,否则后果自负!!!


log4j 是Apache开发的一个日志工具。可以将Web项目中的日志输出到 控制台 文件 GUI组件 ,甚至是 套接口服务器 。本次出现漏洞就是因为 log4j 在启动套接口服务器后,对监听端口传入的反序列化数据没有进行过滤而造成的。下面我们以 log4j-1.2.17.jar 的源码来进行分析。


 0x01 漏洞分析 


log4j 启动套接字服务器时,会监听我们命令行传入的端口。然后会创建一个 SocketNode 类的对象来对端口接收到的数据进行处理。

跟进 SocketNode 类,可以发现在对象初始化时,将端口接收到的数据封装为一个 Object流对象 。在 run() 方法中直接调用 readObject() 进行反序列化操作。
这个过程中没有任何过滤措施,总体下来可谓简单粗暴。所以只要运行 log4j classpath 中存在可以利用的 Gadget 就可以直接命令执行了。



 0x02 漏洞复现 


为了方便演示我主动将 commons-collections-3.2.1.jar 加入到 log4j
classpath 中。然后使用 nc 提交生成的恶意序列化文件到 log4j 监听的 4560 端口,漏洞触发。




 0x03 漏洞总结 


在实际的生产环境中,开发人员有时候需要对日志进行集中存储和管理时,会单独在日志服务器上,启动 log4j 套接字服务器,来接收各个Web项目发送过来的日志。在这种场景下可能会存在该漏洞。但鸡肋的是这样启动的 log4j 一般不会有当下已知的 Gadget 。虽然如此,在渗透测试过程中还是可以注意下 4560 端口,说不定有惊喜。


 0x04 参考资料 


  • https://nvd.nist.gov/vuln/detail/CVE-2019-17571 



以上是关于log4j<=1.2.17反序列化漏洞(CVE-2019-17571)分析的主要内容,如果未能解决你的问题,请参考以下文章

log4j反序列化漏洞分析

log4j反序列化漏洞分析

WSO2IS:Log4j 1.2 安全漏洞

漏洞情报 | Apache Log4j SocketServer反序列化漏洞(哨兵云支持检测)

Apache Log4j Server 反序列化漏洞(CVE-2017-5645)

log4j反序列化漏洞详解及利用