如何进行Spring Data Commons RCE分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Spring Data是一个用于简化数据库访问,并支持云服务的开源框架,其主要目标是使数据库的访问变得方便快捷。Spring Data Commons是Spring Data下所有子项目共享的基础框架。Spring的核心是控制反转(IoC)和面向切面(AOP),相比Struts 2框架绝大部分的安全漏洞都都是由于OGNL产生,而自从Spring引入SpEL,也引起很多安全漏洞,今天利用Spring Data Commons (CVE-2018-1273)作为案例和大家聊一聊。Spring Data Commons(1.13至1.13.10之前的版本,2.0至2.0.5的版本以及较旧的不受支持的版本)包含由于特殊元素的不正确中和而导致的属性绑定器漏洞。未经身份验证的远程恶意用户(或攻击者)可以针对Spring Data REST支持的HTTP资源提供特制的请求参数,或者使用Spring Data的基于投影的请求有效负载绑定帽可能导致远程执行代码攻击。Spring MVC框架会处理来自前端的页面的请求,并根据请求进行数据的封装,处理前端页面的请求暂不赘述,我们现在主要探讨对数据的封装处理,因为Spring Data Commons框架在做数据封装处理的时候产生了漏洞,进入org.springframework.web.method.support.InvocableHandlerMethod类,进入getMethodArgumentValues方法,如下图所示:如上图所示红框所示位置,resolveArgument对请求参数进行了进一步处理,进入org.springframework.web.method.support.HandlerMethodArgumentResolverComposite类的resolveArgument方法,如下图所示:由于resolveArgument方法,并没有明显的逻辑,定位到resolve.resolveArgument行进入到org.springframework.web.method.annotation.ModelAttributeMethodProcessor类的resolveArgument方法,如下图所示:进入到resolveArgument方法的第132行代码,如下图所示,该行代码创建attribute的实例对象,并实现具体的数据绑定功能。进入org.springframework.data.web.ProxyingHandlerMethodArgumentResolver类的createAttribute方法,createAttribute方法中调用MapDataBinder类进行传入数据的数据绑定。定位到binder.bind语句进入bind方法,看实现的具体逻辑,进入到org.springframework.web.bind.WebDataBinder类的bind方法,如下图所示:因为WebDataBinder类继承了DataBinder类,所以super.doBind语句是将参数传递给WebDataBinder类的doBinder方法,进入DataBinder类的doBinder方法,如下图所示,在该方法中前两句是校验语句,applyPropertyValues方法是具体的处理逻辑。进入org.springframework.validation.DataBinder类的applyPropertyValues方法,如下图所示:如上图所示箭头位置,继续进入org.springframework.beans.AbstractPropertyAccessor类的setPropertyValues方法,如下图所示:定位到该方法的第97行,如下图所示:进入setPropertyValue方法,如下图所示:继续跟踪进入org.springframework.data.web.MapDataBinder类的setPropertyValue方法,如下图所示:在serPropertyValue免费云主机域名方法中对前端出入的参数进行处理,定位到setPropertyValue方法中的第182行代码,如下图所示:第182行代码中使用Spring 的SpEL表达式对外部的参数进行处理,但是并没有对参数进行进行有效的校验,所示第182行代码是漏洞注入点。抓取前端传入后台的数据包,如下图所示:构造payload,如下图所示:响应结果,如下图所示:本次漏洞问题出现在 Spring Data Commons中。该漏洞是由前端参数传入后台,后台框架使用SpEL表达式处理未校验的恶意字符串所引起的,因此建议采取IP白名单对IP进行限制,或者升级框架到最新版本。看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注云编程开发博客行业资讯频道,感谢您对云编程开发博客的支持。
做过加密的人都应该有“加密之后文件会变大”的经验。变大就变大吧,对于日常使用和APP开发或者服务端开发而言,大个几k字节是无所谓的,但是如果是使用RF(射频)通信,那么大几个字节就会导免费云主机域名致通信失败率的增加,所以对于这样的场景,你就需要确保密文和…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。