SQL 注入全面检查 Workflow 记录
Workflows
- 格式化接口文档为 openapi 格式
- 导入 bruno,新建 bruno Collection
- 在 bruno 配置
- Auth 添加变量
- Collection 中配置环境信息,正确的服务端地址,环境代号并激活
- Bruno Collection 预处理
- 为 env 配置文件中的参数添加,有效的示例值
- 使用 bruno 批量 run
Bruno Collection 预处理
如下步骤已经由 bruno-lint 小工具实现,效率和质量远比手动处理要高:
- 递归查找参数值为变量形式
- 初始化 get 请求链接,拼接处理后的参数到 URL query
- 递归提取参数到 env 配置文件
Bruno Batch Run
这个步骤也可以在经过Bruno Collection 预处理 之后直接在 bruno 中进行,实测可以实现动态替换参数变量为对应的值
基本参数示例:
似乎:
-env和-env-file互斥,不能同时使用- bru 直接指定子目录 run 似乎存在 bug,测试下来最稳当的方式就是子啊 collection 根目录直接运行
bru run
bru run --env fat
其他参数补充:
--parallel:--reporter-html results.html:保存一个 html 格式的报告,似乎意义不大
安装 bruno 和 bruno-cli
scoop install bruno
npm install -g @usebruno/cli
SQLmap 批量验证
这个批量验证的方式主要是利用 sqlmap 对 burp log 的兼容特性来实现,示例参数列表
sqlmap -l dp_log.txt \
--batch \
--level=5 \
--risk=3 \
--force-ssl \
--dbms=postgresql \
--param-exclude="pageSize|currentPage|pageNum" \
--skip="user-agent,referer,cookie,x-requested-with,accept,dnt,content-type,accept-encoding,accept-language,connection" \
--threads=10 \
--time-sec=10 \
-s "dp-log.sqlite" \
-t "sqlmap-for-db-log.txt" \
--save sqlmap.conf \
--random-agent
通过 -H 参数添加 cookie
sqlmap -l dp_log.txt \
--batch \
--level=5 \
--risk=3 \
--force-ssl \
--dbms=postgresql \
--param-exclude="pageSize|currentPage|pageNum" \
--skip="user-agent,referer,cookie,x-requested-with,accept,dnt,content-type,accept-encoding,accept-language,connection" \
--threads=10 \
--time-sec=10 \
-s "dp-log.sqlite" \
-t "sqlmap-for-db-log.txt" \
--save sqlmap.conf
-H 'Cookie: JSESSIONID=2EE6C2475878D6DF28723FE6485D92BA'
使用 sqlmap.conf 配置文件继续执行
sqlmap -c sqlmap.conf \
-s "dp-log.sqlite" \
-t "sqlmap-for-db-log.txt" \
-H 'Cookie: JSESSIONID=2EE6C2475878D6DF28723FE6485D92BA'
Det-sql Todo
- myhash 去重应该是添加了时间戳,导致重复检查
- 右键菜单导出日志,格式与 burp 直接导出存在明显差异,sqlmap 在运行时识别的检查目标比实际日志偏少