漏洞描述
能够控制配置文件或属性的攻击者可能能够运行任意系统命令
影响版本
Apache Commons 配置 2.7
漏洞复现
问题:不安全的脚本评估 ( GHSL-2022-017)
默认情况下,Commons Configuration 执行变量插值,允许动态评估和扩展属性。变量名的一般语法是${prefix:name}. 前缀告诉 Commons Configuration 该变量将在特定上下文中进行评估。如果缺少前缀,则上下文是当前配置实例。如果提供了前缀,那么它将用于查找Lookup将解析变量的匹配类。Commons Configuration 使用 Commons TextStringSubstitutor和默认的插值查找集。默认的可用查找之一是ScriptStringLookup使用javax.script包来运行脚本(例如:Javascript、Groovy 等)。攻击者可以提供配置属性,例如${script:javascript:java.lang.Runtime.getRuntime().exec()}在检索属性时运行任意系统命令。
POC
创建一个属性文件,例如:
加载database.user属性:
/tmp/foo应该已经创建了一个名为的文件。
脚本
https://github.com/tangxiaofeng7/CVE-2022-33980-Apache-Commons-Configuration-RCE
好
有情人终成眷属,没钱人亲眼目睹。
可以嘲笑你的朋友,但不能嘲笑他喜欢的东西。
每一个不曾起舞的日子,都是对生命的辜负。
一起去看星星吧。