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执行反射
执行成功