当前位置:   article > 正文

代码审计-Spring Data Commons RCE分析_spring data commons rce漏洞

spring data commons rce漏洞

漏洞简介

Spring Data是一个用于简化数据库访问,并支持云服务的开源框架,包含Commons、Gemfire、JPA、JDBC、MongoDB等模块。此漏洞产生于Spring Data Commons组件,该组件为提供共享的基础框架,适合各个子项目使用,支持跨数据库持久化。

该漏洞的成因是当用户在项目中利用了Sprng-Data的相关Web特性对输入参数进行自动匹配时会将用户提交的form表单和key值作为SpEL的执行内容,导致SpEL表达式注入漏洞。

环境搭建

通过Git命令获取源码

git clone https://github.com/spring-projects/spring-data-examples/

这里由于在2.0.5版本中拒绝使用了SpEl表达式,所以需要回退到一个较早且存在漏洞的版本

 git reset --hard ec94079b8f2b1e66414f410d89003bd333fb6e7d

漏洞分析

Spring MVC框架会处理来自前端的页面的请求,并根据请求进行数据的封装,处理前端页面的请求暂不赘述,我们现在主要探讨对数据的封装处理,因为Spring Data Commons框架在做数据封装处理的时候产生了漏洞。

由提交对比Commit信息,考研发现漏洞文件应为MapDataBinder.java中的setPropertyVlue方法,如下:

public void setPropertyValue(String propertyName, @Nullable Object value) throws BeansException {
            if (!this.isWritableProperty(propertyName)) {
                throw new NotWritablePropertyException(this.type, propertyName);
            } else {
                StandardEvaluationContext context = new StandardEvaluationContext();
                context.addPropertyAccessor(new MapDataBinder.MapPropertyAccessor.PropertyTraversingMapAccessor(this.type, this.conversionService));
                context.setTypeConverter(new StandardTypeConverter(this.conversionService));

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/870125
推荐阅读
相关标签
  

闽ICP备14008679号