热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

反序列化_log4j<=1.2.17反序列化漏洞(CVE201917571)分析

本文由编程笔记#小编为大家整理,主要介绍了log4j<=1.2.17反序列化漏洞(CVE-2019-17571)分析相关的知识,希望对你有一定的参考价值。
本文由编程笔记#小编为大家整理,主要介绍了log4j<=1.2.17反序列化漏洞(CVE-2019-17571)分析相关的知识,希望对你有一定的参考价值。




PS: 文章仅用于研究漏洞原理,促进更好的防御,
禁止用于非法用途,否则后果自负!!!




log4j
是Apache开发的一个日志工具。可以将Web项目中的日志输出到
控制台

文件

GUI组件
,甚至是
套接口服务器
。本次出现漏洞就是因为
log4j
在启动套接口服务器后,对监听端口传入的反序列化数据没有进行过滤而造成的。下面我们以
log4j-1.2.17.jar
的源码来进行分析。










 0x01 漏洞分析 











log4j
启动套接字服务器时,会监听我们命令行传入的端口。然后会创建一个
SocketNode
类的对象来对端口接收到的数据进行处理。






跟进
SocketNode
类,可以发现在对象初始化时,将端口接收到的数据封装为一个
Object流对象
。在
run()
方法中直接调用
readObject()
进行反序列化操作。




这个过程中没有任何过滤措施,总体下来可谓简单粗暴。所以只要运行
log4j

classpath
中存在可以利用的
Gadget
就可以直接命令执行了。







 0x02 漏洞复现 











为了方便演示我主动将
commons-collections-3.2.1.jar
加入到
log4j




classpath
中。然后使用
nc
提交生成的恶意序列化文件到
log4j
监听的
4560
端口,漏洞触发。
















 0x03 漏洞总结 










在实际的生产环境中,开发人员有时候需要对日志进行集中存储和管理时,会单独在日志服务器上,启动
log4j
套接字服务器,来接收各个Web项目发送过来的日志。在这种场景下可能会存在该漏洞。但鸡肋的是这样启动的
log4j
一般不会有当下已知的
Gadget
。虽然如此,在渗透测试过程中还是可以注意下
4560
端口,说不定有惊喜。










 0x04 参考资料 










  • https://nvd.nist.gov/vuln/detail/CVE-2019-17571 







推荐阅读
  • 在本地环境中部署了两个不同版本的 Flink 集群,分别为 1.9.1 和 1.9.2。近期在尝试启动 1.9.1 版本的 Flink 任务时,遇到了 TaskExecutor 启动失败的问题。尽管 TaskManager 日志显示正常,但任务仍无法成功启动。经过详细分析,发现该问题是由 Kafka 版本不兼容引起的。通过调整 Kafka 客户端配置并升级相关依赖,最终成功解决了这一故障。 ... [详细]
  • 如何正确配置Log4j以优化日志记录效果? ... [详细]
  • 利用注解在Spring框架中实现面向切面编程(AOP)
    本文探讨了如何在Spring框架中通过注解实现面向切面编程(AOP)。具体介绍了使用`@Retention(RetentionPolicy.RUNTIME)`和`@Target({ElementType.TYPE, ElementType.METHOD})`等注解来定义切面,以及如何配置Spring AOP以实现对业务逻辑的增强和解耦。通过实例代码,详细展示了注解驱动的AOP在实际项目中的应用,为开发者提供了实用的参考。 ... [详细]
  • 前期部署1.JDK安装,配置PATH2.下载spark-1.6.1-bin-hadoop2.6.tgz,并上传到服务器解压3.在 usr 下创建软链接到目标文件夹4.修改配置文件, ... [详细]
  • Logstash安装配置
    阅读此文请先阅读上文:[大数据]-Elasticsearch5.3.1IK分词,同义词联想搜索设置,前面介绍了ES,Kiba ... [详细]
  • Mybatis_04日志
    前几天临近期末考试,一直在准备考试,吐槽一下,这个学期的考试真是全背书,服了,背吐了。考完试到元旦又放肆了几天 ... [详细]
  • 原标题:springboot2.0mybatismapper-locations扫描多个路径mapper-loca文章来源地址48461.htmltions扫描多个路径,中间 ... [详细]
  • 增加Maven构建profile配置在项目最顶层的pom.xml添加common和release两个profile,并声明${app.run.env}作为环境切换变量<profiles> ... [详细]
  • 20210317 springboot yml文件mabatis、druid,完整配置:
    springbootyml文件mabatis、druid,完整配置:spring:datasource:username:rootpassword:12 ... [详细]
  • Android自动 ... [详细]
  • 如何理解MyBatis动态SQL
    本篇内容主要讲解“如何理解MyBatis动态SQL”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解M ... [详细]
  • MQ的使用
    安装环境:linuxredhatactivemq版本:5.8.01.从http:activemq.apache.orgdownload.html地址下载 ... [详细]
  • Hbase 的伪分布部署、shell基本操作及hbase相关理念
    1,HBase的的的的伪分布式配置-对zookeeper的配置,这个前面配置过,修改zoo.cfg文件,指定zookeeper的主入口-配置的HBase的的:进入optmo ... [详细]
  • Elasticsearch简单使用系列安装
    2019独角兽企业重金招聘Python工程师标准1.elasticsearch支持的操作系统和JVM版本https:www.elastic.cosupportmatrix2. ... [详细]
  • log4cpp概述与使用实例一、log4cpp概述Log4cpp是一个开源的C类库,它提供了C程序中使用日志和跟踪调试的功能,它的优点如下࿱ ... [详细]
author-avatar
qinyu1982_469
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有