前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >log4j反序列化漏洞分析

log4j反序列化漏洞分析

作者头像
用户6343818
发布2021-05-28 14:38:02
2.5K0
发布2021-05-28 14:38:02
举报
文章被收录于专栏:安全小圈

0x00 前言

前段时间在看某个cms代码的时候,发现log4j组件版本存在漏洞,并且开启了端口,但web站点是nginx反向代理的,而在外网并没有开放到该端口,所以并没有利用成功。但该漏洞遇到的比较少,就算一些cms中log4j组件版本存在漏洞,该漏洞需要使用SimpleSocketServer开启端口才能够接受socket中的数据进行反序列化操作,从而才能利用。

0x01 log4j 漏洞简介

漏洞简介

log4j用的其实还是比较多,记录一些Java的日志,这个相信接触过Java的都知道,在此不做多的赘诉。

漏洞版本:CVE-2019-17571

代码语言:javascript
复制
1.2.4 <= Apache Log4j <= 1.2.17

漏洞原因是因为调用SimpleSocketServer.main开启一个端口,进行接受数据,进行反序列化操作。

根据官方描述作用是把接受到的LoggingEvent作为本地的日志记录事件,再使用在服务器端配置的Log4J环境来记录日志。默认可能会开启在4560端口中。

0x02 log4j 反序列化分析

漏洞复现

配置漏洞代码

代码语言:javascript
复制
import org.apache.log4j.net.SimpleSocketServer;
public class log4j {
    public static void main(String[] args) {
        System.out.println("INFO: Log4j Listening on port 1234");
        String[] arguments = {"1234", (new log4j()).getClass().getClassLoader().getResource("log4j.properties").getPath()};
        SimpleSocketServer.main(arguments);
        System.out.println("INFO: Log4j output successfuly.");
    }
}

配置log4j文件

代码语言:javascript
复制
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

然后使用yso生成gadget的序列化数据,直接使用nc进行发送。但是nc发送传输有时候会有些问题,有时候传输数据缺失,会反序列化失败。

代码语言:javascript
复制
nc 127.0.0.1 1234 < log4j.curl.bin

漏洞分析

漏洞比较简单,还是现在漏洞位置先下断点。

跟进查看

在这里开启serverSocket进行监听,也就是socket的服务端,然后new了SocketNode进行传入。

继续跟进

而在这里接受了socket的数据。

下一步会来到run的这个方法里面,是因为前面调用了线程的start,而start的底层会调用run

直接就对ois也就是刚刚接受的socket数据,调用readobject进行反序列化。

0x03 工具编写

在复现的时候,使用nc发送数据时数据传输不完整,导致反序列化失败。就随手写了一个小工具,方便下次遇到的时候使用(可能也极少能遇到,比较鸡肋)

命令执行:

反弹shell:

POC:

由于比较少见,反序列化回显暂不构造。

github地址:https://github.com/nice0e3/log4j_POC

动动小手点点start

0x04 结尾

log4j的反序列化漏洞比较简单,而类似于这种反序列化工具原理其实差不多,只是发包构造的数据包不一样,分析一下漏洞知道漏洞怎么形成的。原理其实比较简单,但也会遇到很多细节问题,如回显方式,或gui的优化问题。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 零度安全攻防实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 前言
  • 0x01 log4j 漏洞简介
    • 漏洞简介
    • 0x02 log4j 反序列化分析
      • 漏洞复现
        • 漏洞分析
        • 0x03 工具编写
        • 0x04 结尾
        相关产品与服务
        文件存储
        文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档