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

admin 2022年4月22日23:31:38评论771 views字数 1168阅读3分53秒阅读模式
漏洞信息


最近有小伙伴微信@我,提到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?

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月22日23:31:38
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2022-23305 Weblogic http RCE or Apache Log4j SQL Injection?http://cn-sec.com/archives/933587.html

发表评论

匿名网友 填写信息