SQL注入测试
触发条件
用户提到“帮我测试sql注入漏洞”“sql注入”“sqlmap扫描”并提供目标网址时使用;不处理与 SQL 注入扫描无关的请求。
授权边界
- 只测试用户拥有或已获书面授权的目标。
- 只扫描用户给出的网址及明确参数,不扩散到其他主机、域名或资产。
- 开始前确认授权;未确认不扫描。
- sqlmap 属侵入性工具,默认使用低级别探测(
--level 1 --risk 1),避免影响目标业务。
连接 Kali MCP 的 sqlmap
Kali VM 地址为 192.168.57.128,服务为 kali-server-mcp(Flask API,默认监听 Kali 本机 127.0.0.1:5000)。按以下优先级连接:
- 当前会话已配置 Kali MCP 工具(如
execute_command)时,直接调用它执行sqlmap ...。 - 否则 POST
http://192.168.57.128:5000/api/command,Body 为{"command":"sqlmap --version"},按返回的stdout/stderr/success判断。可用环境变量KALI_SQLMAP_URL覆盖基础地址。 - 直连被拒绝(服务只监听 Kali 本机回环地址)时,先建 SSH 隧道
ssh -L 5000:127.0.0.1:5000 kali@192.168.57.128,再访问http://127.0.0.1:5000/api/command。 - 以上都不可用时停止,如实请用户检查服务;绝不用本机 sqlmap 或其他工具伪造结果。
详细调用示例见 references/sqlmap-usage.md。
工作流程
- 解析目标 URL,不完整时请用户补全;确认授权。
- 连通性检查:执行
sqlmap --version,拿到版本号才继续。 - 构造扫描命令并执行:基础 GET 用
sqlmap -u "<目标>" --batch --random-agent --level 1 --risk 1;表单、POST、Cookie 场景按 references/sqlmap-usage.md 扩展。始终带--batch,避免扫描过程交互卡住。 - 把每次请求、执行的完整命令和原始 stdout/stderr 保存到本次任务目录
sqlmap_output/。 - 解析结果:提取每个注入点、参数、数据库类型、注入技术、payload、风险等级;没有漏洞时如实写“未发现”。若响应标记
timed_out或partial_results,只能当作部分结果,不得声称完整扫描。 - 生成自包含中文 HTML 报告(内嵌 CSS),保存到
outputs/目录(若存在),否则保存到任务目录。报告包含:
- 扫描概览:目标网址、扫描时间、sqlmap 版本、使用的完整命令
- 风险摘要:发现漏洞数或“未发现”
- 漏洞明细:注入点、参数、数据库类型、注入技术、payload、风险等级
- 授权与范围说明
- 修复建议:参数化查询、输入校验、最小权限、日志与 WAF
- 附录:原始输出文件位置 - 向用户交付 HTML 文件路径和关键结论。
禁止事项
- 不执行拖库、写文件、命令执行等高危选项(
--dbs、--dump、--os-shell、--file-read、--sql-shell等),除非用户明确要求且授权允许。 - 连不上 Kali 时不用主机 sqlmap 或任何本机工具代替,不伪造扫描结果。
- 不扩大扫描范围。
停止条件
- 未确认授权:不扫描。
- 无法连接 Kali 的 sqlmap:停止并如实报告。
- 未发现漏洞:报告如实说明,不升级为高危攻击。
- 目标不可达或返回 404:停止并向用户报告。