记一次实战中对Ruoyi系统的渗透
字数 1439 2025-08-22 12:22:15
Ruoyi系统渗透测试实战指南
1. Ruoyi系统简介
Ruoyi是一个基于Spring Boot和Shiro权限管理框架的开源后台管理系统,广泛应用于企业级应用开发。由于其流行性,系统存在多个已知安全漏洞。
2. 信息收集方法
2.1 识别Ruoyi系统
使用搜索引擎语法:
body="Ruoyi"
此语法可发现大量使用Ruoyi系统的网站。
3. 常见漏洞利用
3.1 Druid控制台弱口令漏洞
漏洞描述:Druid是阿里巴巴开源的数据库连接池,Ruoyi系统集成了Druid监控控制台,存在默认弱口令风险。
利用步骤:
- 访问Druid控制台路径:
/druid - 尝试默认凭证:
- 用户名:
ruoyi - 密码:
123456
- 用户名:
- 成功登录后可获取数据库连接信息、SQL执行记录等敏感数据
- 可利用控制台功能进行数据重置或删除操作
危害:可能导致数据泄露、数据篡改或删除。
3.2 默认密码保存登录后台
漏洞描述:部分Ruoyi系统安装后保留了默认登录凭证或保存了密码。
利用方法:
- 直接访问后台登录页面
- 使用Burp Suite等工具拦截请求查看凭证
- 尝试常见默认密码组合
3.3 任意文件下载漏洞
漏洞描述:低版本Ruoyi系统存在任意文件下载漏洞,允许攻击者下载服务器上的任意文件。
利用方法:
- 构造文件下载请求,利用路径遍历下载敏感文件
- 高版本对
..进行了过滤,但低版本仍可穿越目录 - 示例利用方式:
- 下载配置文件:
/common/download?fileName=../../application.yml - 下载数据库配置文件:
/common/download?fileName=../../ruoyi-admin/src/main/resources/application-druid.yml
- 下载配置文件:
影响:可能导致数据库凭证、系统配置等敏感信息泄露。
3.4 模板注入漏洞
漏洞描述:Ruoyi系统某些接口存在模板注入漏洞,可能导致远程代码执行。
漏洞位置:
src\main\java\com\ruoyi\web\controller\monitor
多个控制器方法接受String类型参数且未充分过滤。
利用方法:
- 构造恶意SpEL表达式:
${T(java.lang.Runtime).getRuntime().exec("calc.exe")} - 绕过技巧:
- 在
T和(之间添加多个空格 - 对Payload进行URL编码
- 修改请求方法(GET/POST互换)
- 在
- 获取Shell:
- 执行反向连接命令连接到攻击者服务器
- 注意:此操作风险较高,实际测试中应谨慎
3.5 用户信息泄露
漏洞描述:系统存在接口泄露用户敏感信息。
利用方法:
- 通过Druid控制台或其他接口查询用户表数据
- 获取管理员凭证或哈希值
- 可利用泄露信息进行进一步渗透
3.6 添加高权限用户
漏洞描述:部分接口权限控制不严,允许添加高权限用户。
利用方法:
- 找到用户管理相关接口
- 构造请求添加管理员权限用户
- 注意:实际渗透测试中只需证明漏洞存在,不应实际添加用户
4. 防御建议
- 修改所有默认凭证,包括Druid控制台和后台登录
- 及时升级到最新版本Ruoyi系统
- 限制Druid控制台的访问IP
- 对用户输入进行严格过滤,特别是SpEL表达式
- 加强权限控制,避免越权操作
- 定期进行安全审计和渗透测试
5. 法律声明
- 所有渗透测试必须获得系统所有者明确授权
- 未经授权的测试属于违法行为
- 本文仅用于教育目的,作者不承担任何因滥用本文信息导致的后果
- 实际测试中应对敏感信息进行充分打码处理
通过以上方法,安全人员可以全面评估Ruoyi系统的安全性,发现并修复潜在漏洞,提高系统整体安全水平。