CVE-2022-23305 Weblogic http RCE or Apache Log4j SQL Injection?

渗透技巧 2年前 (2022) admin
801 0 0
漏洞信息


最近有小伙伴微信@我,提到Oracle官方在4月份补丁中发布了一个Weblogic http匿名RCE漏洞,编号CVE-2022-23305。在刷朋友圈时我也发现多篇漏洞预警文章中提到了这个漏洞,比如某公众号:


CVE-2022-23305 Weblogic http RCE or Apache Log4j SQL Injection?


这引起了我的研究兴趣,查询资料后发现其实这是Apache Log4j v1.2.x的一个SQL注入漏洞,并不是Weblogic本身的漏洞。通报如下:


CVE-2022-23305 Weblogic http RCE or Apache Log4j SQL Injection?


Weblogic引入Log4j依赖项后,很容易想到通过SQL注入在一定配置条件下,确实可以实现匿名RCE(比如配置后台数据库为H2 database,并且日志配置为数据库记录模式),但是这种场景非常少见。分析后发现漏洞非常简单,下面将简要概念分析分享给各位小伙伴。

漏洞分析


从官网的描述来看,漏洞出在`JDBCAppender`。`JDBCAppender`提供了用于将日志事件发送到数据库表的机制。每个追加调用将添加到ArrayList缓冲区。当缓冲区已满时,每个日志事件都将放置在sql语句(可配置)中并执行。


参考官方说明文档,创建log配置文件`log4j.properties`:


CVE-2022-23305 Weblogic http RCE or Apache Log4j SQL Injection?


在log4j中,`%m`表示代码中指定的日志消息字符串,`%p`输出优先级(`DEBUG`、`INFO`、`WARN`、`ERROR`、`FATAL`),`%c`输出所属的类目。在后台数据库中创建数据库表LOGS,用于存储日志信息:


CREATE TABLE LOGS(  USER_ID VARCHAR(20) NOT NULL,  DATED   DATETIME NOT NULL,  LOGGER  VARCHAR(50) NOT NULL,  LEVEL   VARCHAR(10) NOT NULL,  MESSAGE VARCHAR(1000) NOT NULL);


启动调试,在写入日志过程中,首先会调用`JDBCAppender#setSql`函数来设置SQL语句:


CVE-2022-23305 Weblogic http RCE or Apache Log4j SQL Injection?


进入`PatternLayout#format`函数:


CVE-2022-23305 Weblogic http RCE or Apache Log4j SQL Injection?


循环通过`PatternConverter#format`完成占位符的替换:


CVE-2022-23305 Weblogic http RCE or Apache Log4j SQL Injection?


由于对日志内容缺少检查,导致最终输入的字符串全部拼接进入SQL语句:


CVE-2022-23305 Weblogic http RCE or Apache Log4j SQL Injection?


连接数据库并执行SQL指令,从而导致SQL注入漏洞。

后记


由于Log4j v1.x系列已经停止更新了,所以无法直接进行升级修复,建议程序更新为Log4j v2.x系列。另外众多Java应用程序仍在使用Log4j v1.x,所以除了Oracle之外,诸如IBM、netapp等也发布了这个漏洞的修复通告:


CVE-2022-23305 Weblogic http RCE or Apache Log4j SQL Injection?


CVE-2022-23305 Weblogic http RCE or Apache Log4j SQL Injection?



由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。


CVE-2022-23305 Weblogic http RCE or Apache Log4j SQL Injection?

点关注,不迷路!

CVE-2022-23305 Weblogic http RCE or Apache Log4j SQL Injection?

原文始发于微信公众号(且听安全):CVE-2022-23305 Weblogic http RCE or Apache Log4j SQL Injection?

版权声明:admin 发表于 2022年4月22日 上午7:20。
转载请注明:CVE-2022-23305 Weblogic http RCE or Apache Log4j SQL Injection? | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...