0x01 工具介绍
DetSql是基于 BurpSuite Java 插件 API 开发的 SQL 注入探测插件,主要作用为快速从 http 流量中筛选出可能存在 SQL 注入的请求,在尽可能减少拦截的情况下提高 SQL 注入测试效率。
下载地址
https://github.com/saoshao/DetSql
0x02 功能简介
判断方式
为方便叙述使用 value 表示请求的一个参数值,respbody 表示该请求的响应体,value->respbody,表示参数值为 value 时发送请求得到响应体 respbody,以下判断依赖 MySQL,sqlserver,oracle,postgresql 四种数据库某版本测试结果。
支持检测类型
报错类型判断
请求中任一参数值+报错 poc 作为新参数值即 value+poc其中 poc 包括:',%DF',",%DF",`,其中%DF考虑到宽字节,同时增加了 URL 编码的单双引号,在遇到 json 数据时增加了 Unicode 编码的单双引号。
数字类型判断
当 value 为数字时,且该 value 不为 json 的键值,将发起以下请求判断,否则该 value 将不再判断。
order 类型注入
当 value 不为空时,发起以下请求判断,否则该 value 将不再判断。
字符类型注入
如果为 json 格式的数据,该键值 value 需被双引号包裹才会发起后续请求判断,否则该 value 将不再判断。
附加判定
除了前述通过计算相似度作为判断规则外还添加了响应长度的变化阈值作为判断辅助,从而丰富判断依据,例如两个响应长度相同时可直接判断相似度为百分之百,两个响应长度差超过某个值此处设为100,就将辅助判断的相似度定位百分之九十,在判断时如果希望此时的相似度较大(小)时为好,则会选择用算法计算出的相似度和辅助判断的相似度两者中较大(小)者去比较;如果两个响应的长度差很小,则会使用算法计算出的相似度去做比较。
主面板(dashboard)
左上显示原始流量,一共 7 列,从左至右依次为序号,从 0 开始;请求来源,proxy 或 repeater,为减少请求,其他模块来源点的请求将忽略。
在Logger模块中查看扫描流量,选择Extensions类型如下
例子
报错类型页面
order类型页面
数字类型页面
字符类型页面(包含多种类型)
配置面板(config)
白名单为测试的请求域名,如 baidu.com,192.168.1.2,多个域名使用竖线分隔
手动停止页面
删除日志页面
为方便分析,dashboard处添加了右键删除日志的功能,可删除选择的日志;或者删除不存在漏洞的所有日志,包括vulnstate值为空和手动停止的日志
辅助面板(codetool)
由于 burpsuite 自带的 base64 编码,URL 编码解码遇到中文会出现乱码,因此添加了基于 UTF-8 的可编解码中文的 base64,URL 编码,如果 base64 解码后为 json 字符串可点击 JSON 格式化按钮对其格式化,同时为便于查看中文还增加了 Unicode 解码。
建议
DetSql目的用于辅助手动测试,由于设置线程较小不利于大量请求时的被动扫描,建议使用时在白名单处设置测试域名或IP,如www.baidu.com,以此减少不必要的无效扫描,填baidu.com即代表baidu.com及其所有子域,多个可表示为baidu.com|qq.com,若出现卡顿建议按此配置,如下
正常很少会出现卡顿情况,同时建议使用最新版进行测试,经本人测试,未设置白名单将请求扫描数量快速加到170个左右未发现卡顿、闪退等异常,可正常运行,如下
0x03更新说明
1、添加删除日志功能,右键可删除选择的日志;或者删除不存在漏洞的所有日志,包括vulnstate值为空和手动停止的日志
2、优化order类型判断方式,在原有基础上添加,0和,1或,0和,2相似度对比
3、解决某些数据包不能完整展示问题
0x04 使用介绍
DetSql采用 Montoya API 进行开发,BurpSuite 版本需满足(>=2023.12.1)
0x05 https://github.com/saoshao/DetSql
原文始发于微信公众号(渗透安全HackTwo):一款能快速探测可能存在SQL注入的Burpsuite插件 提高 SQL 注入测试效率|渗透测试
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论