CVE复现1

1 CVE-2022-22980

spring Data MongoDB SpEL 表达式注入,Spring Data MongoDB应用程序在对包含查询参数占位符的SpEL表达式使用@Query或@Aggregation注解的查询方法进行值绑定时,如果输入未被过滤,则容易受到SpEL注入攻击。

影响范围

Spring Data MongoDB 3.4.0

Spring Data MongoDB 3.3.0 - 3.3.4

以及其它旧的、不受支持的版本。

漏洞复现:

 此次漏洞修复的主要位置在ParameterBindingJsonReader 类的 bindableValueFor 函数。

先查找id

然后查找id后面的表达式 

 然后执行this.evaluateExpression(expression)

 又重复上面一遍,匹配id和后面的表达式

 

   

2 CVE-2022-33980

apache Commons Configuration 远程命令执行漏洞,该漏洞源于Apache Commons Configuration2执⾏变量interpolation时,允许动态评估和扩展属性。interpolation的标准格式是“${prefix:name}”,其中“prefix”⽤于定位执⾏interpolation的org.apache.commons.configuration2.interpol.Lookup的实例。

Apache Commons Configuration是一个Java应用程序的配置管理工具,可以从properties或者xml文件中加载软件的配置信息,用来构建支撑软件运行的基础环境。在一些配置文件较多较复杂的情况下,使用该配置工具比较可以简化配置文件的解析和管理,提高开发效率和软件的可维护性。

影响范围:2.4 <= Apache Commons Configuration <=2.7

漏洞复现:

 首先进入到org.apache.commons.configuration2.interpol.ConfigurationInterpolator#interpolate函数

判断格式 

 随后会进入resolveSingleVariable函数

resolveSingleVariable函数主要是extractVariableName获取字符串然后resolve处理 

 接下来来到fetchLookupForPrefix,

 根据前缀找获取到stringLookup对象

根据前缀script转到ScriptStringLookup

最终执行scriptEngine.eval(script) ,执行命令

3 CVE-2022-41852

Apache Commons Jxpath 反射注入漏洞,Apache Commons JXPath 存在安全漏洞,攻击者可以利用除compile()和compilePath()函数之外的所有处理XPath字符串的JXPathContext类函数通过XPath表达式从类路径加载任何Java类,从而执行恶意代码。

Apache Commons JXPath是美国阿帕奇(Apache)基金会的一种 XPath 1.0 的基于 Java 的实现。JXPath 为使用 XPath 语法遍历 JavaBeans、DOM 和其他类型的对象的图形提供了 API。

利用范围:

Apache Commons JXpath <= 1.3

漏洞复现:

正常访问 

反射调用方法 

 执行命令

 先进入getValue(String xpath)函数

然后进入到getValue(String xpath, Expression expr) 函数

 进入computeValue,关键是context.getRootContext().getFunction()

看一下getFunction做了什么 

 

调用了class.forName() 

 

然后调用invoke执行反射 

 

执行成功 


版权声明:本文为xlsj228原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。