PS: 文章仅用于研究漏洞原理,促进更好的防御, 禁止用于非法用途,否则后果自负!!! log4j 是Apache开发的一个日志工具。可以将Web项目中的日志输出到 控制台 , 文件 , GUI组件 ,甚至是 套接口服务器 。本次出现漏洞就是因为 log4j 在启动套接口服务器后,对监听端口传入的反序列化数据没有进行过滤而造成的。下面我们以 log4j-1.2.17.jar 的源码来进行分析。 0x01 漏洞分析 当 log4j 启动套接字服务器时,会监听我们命令行传入的端口。然后会创建一个 SocketNode 类的对象来对端口接收到的数据进行处理。
这个过程中没有任何过滤措施,总体下来可谓简单粗暴。所以只要运行 log4j 的 classpath 中存在可以利用的 Gadget 就可以直接命令执行了。 0x02 漏洞复现 为了方便演示我主动将 commons-collections-3.2.1.jar 加入到 log4j 的 classpath 中。然后使用 nc 提交生成的恶意序列化文件到 log4j 监听的 4560 端口,漏洞触发。

https://nvd.nist.gov/vuln/detail/CVE-2019-17571
[漏洞通告]CVE-2019-17571/Apache Log4j 1.2.X存在反序列化远程代码执行漏洞