在 SQLMap 中,`--risk` 参数用于控制注入测试的侵入性和潜在风险等级。该参数定义了测试语句的破坏性程度,数值越高,攻击性越强,但也可能引发更大的数据破坏或系统风险。以下是具体说明:
---
风险等级(--risk)的划分
1. Risk 1(默认)
- 特点:仅测试安全的 SELECT 查询类语句,不会对数据库造成数据修改或破坏。
- 适用场景:常规渗透测试,确保操作可控,避免触发 WAF 或日志报警。
2. Risk 2
- 特点:在 Risk 1 基础上,增加基于事件的测试语句(如基于时间的盲注)。
- 潜在风险:可能触发更复杂的注入逻辑,但通常不会直接修改数据。
3. Risk 3
- 特点:引入包含 `OR` 条件的测试语句(如 `OR 1=1`),可能导致 UPDATE、DELETE 等写操作。
- 高风险场景:
- 在 UPDATE 语句中,`OR` 条件可能修改整张表数据(例如:`UPDATE users SET password='123' OR 1=1`)。
- 可能引发数据丢失或破坏数据库结构。
---
注意事项
- 法律与授权:未经授权使用高 Risk 等级测试可能触犯法律,需确保在合法授权范围内操作。
- 误操作风险:Risk 3 可能因 `OR` 条件导致不可逆的数据修改,需谨慎评估目标环境。
- 与 `--level` 配合:`--level` 控制检测的广度(如参数覆盖范围),而 `--risk` 决定检测的深度和破坏性,两者需结合使用。
---
使用建议
- 低风险测试:优先使用默认 Risk 1,仅在必要时逐步提升等级。
- 生产环境禁用:避免在真实业务系统中使用 Risk 3,可选择模拟环境验证漏洞。
- 日志监控:高 Risk 测试易被安全设备记录,需配合 `--proxy` 等参数隐藏流量。
通过合理选择风险等级,可以在安全性与测试深度之间取得平衡。更多参数细节可参考 SQLMap 官方文档或相关技术指南。