环境搭建参考第一个链接,springboot启动文件如下,不同的启类,将Application.class修改一下就可以了,直接debug。注意:默认版本是2.0.3版本,修改成低版本,看一下mvn下载的jar包版本
CVE-2017-8046(Spring Data Rest RCE) 随笔 第1张
漏洞利用:
第一次请求:
CVE-2017-8046(Spring Data Rest RCE) 随笔 第2张
第二次请求:
CVE-2017-8046(Spring Data Rest RCE) 随笔 第3张
注意的点:
需要用PATCH方法,而且请求格式为JSON。根据RFC 6902,发送JSON文档结构需要注意以下两点:
1、请求头为Content-Type: application/json-patch+json
2、需要参数op、路径path,其中op所支持的方法很多,如test,add,replace等,path参数则必须使用斜杠分割
下断调试一下,跟入applyPatch
CVE-2017-8046(Spring Data Rest RCE) 随笔 第4张
跟入getPatchOperations
CVE-2017-8046(Spring Data Rest RCE) 随笔 第5张
跟入convert函数,来到这里,path是传入的EL表达式
CVE-2017-8046(Spring Data Rest RCE) 随笔 第6张
CVE-2017-8046(Spring Data Rest RCE) 随笔 第7张
CVE-2017-8046(Spring Data Rest RCE) 随笔 第8张
命令执行的地方
CVE-2017-8046(Spring Data Rest RCE) 随笔 第9张
string转bytes[]脚本

public class Test
{
    public static void main(String[] args)
    {
        //Original String
        String string = "calc";
        //Convert to byte[]
        byte[] bytes = string.getBytes();
        int i;
        for (i=0;i<bytes.length;i++)
        {
            if (i==0)
            {
                System.out.print("[");
            }
            System.out.print(bytes[i]+",");
            if (i==bytes.length-1)
            {
                System.out.print("]");
            }
        }
    }
}

参考链接:https://www.cnblogs.com/co10rway/p/9380441.html
https://github.com/spring-guides/gs-accessing-data-rest.git
https://github.com/vulhub/vulhub/tree/master/spring/CVE-2017-8046

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄