CVE漏洞研究

1 CVE-2022-22980 spring Data MongoDB SpEL 表达式注入

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 Configuration是一个Java应用程序的配置管理工具,可以从properties或者xml文件中加载软件的配置信息,用来构建支撑软件运行的基础环境。

该漏洞源于Apache Commons Configuration2执⾏变量interpolation时,允许变量插值。在commons-configuration2的变量插值,就类似于引用动态变量的方式,可以在配置文件中使用${env:envname}, ${sys:user.home}等语法获取想要配置信息。

interpolation的标准格式是“${prefix:name}”,其中“prefix”⽤于定位执⾏interpolation的org.apache.commons.configuration2.interpol.Lookup的实例。

影响范围: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-41852Apache Commons Jxpath 远程代码执行

commons-jxpath 是一个java库,是Xpath基于java语言的一种实现。JXPath 为使用 XPath 语法遍历 JavaBeans、DOM 和其他类型的对象的图形提供了 API。

使用 JXPath 来解释不受信任的 XPath 表达式的人可能容易受到远程代码执行攻击。攻击者可以利用除compile()和compilePath()函数之外的所有处理XPath字符串的JXPathContext类函数通过XPath表达式从类路径加载任何Java类,从而执行恶意代码。

利用范围:

Apache Commons JXpath <= 1.3

漏洞复现:

正常访问 

反射调用方法 

 执行命令

 先进入getValue(String xpath)函数

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

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

看一下getFunction做了什么 

 

调用了class.forName() 

 

然后调用invoke执行反射 

 

执行成功 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值