DouSql 是基于Xia Sql二次开发的高度自定义化SQL注入检测插件,专为安全研究人员和渗透测试工程师打造。
插件支持中文/英文双语言界面,可根据系统语言自动选择或手动切换:
- 自动检测:中文系统默认显示中文界面,其他系统默认显示英文界面
- 手动切换:在配置面板的"语言设置/Language"标签页中可随时切换语言
- 完整覆盖:所有界面元素(按钮、标签、菜单、配置面板等)均支持双语言切换
- 即时生效:切换语言后立即更新界面,无需重启插件
- 多种SQL注入检测:支持报错注入、时间盲注、布尔盲注等多种检测方式
- 智能payload管理:内置7个payload组,包含Mysql、Mssql、Oracle等。
- 实时响应分析:自动分析响应长度、时间、状态码等关键指标
- 全面的报错信息识别:内置33种数据库和框架的错误信息模式,支持MySQL、Oracle、PostgreSQL、SQL Server、SQLite等
- 增强JSON处理:使用Burp Suite内置API处理复杂嵌套JSON结构,支持任意深度的对象、数组和混合数据类型
- 参数过滤系统:支持白名单/黑名单模式,精确控制测试范围
- 响应过滤系统:在payload测试过程中过滤无效响应,支持状态码、响应头、响应体内容、响应大小等多种过滤条件,支持AND/OR逻辑组合
- URL黑名单过滤:可配置黑名单URL,跳过不需要测试的路径
- 静态文件过滤:自动跳过图片、样式、脚本等静态资源文件(支持30+种文件类型)
- 响应时间阈值:可自定义时间盲注检测阈值
- 长度差异阈值:可配置响应长度差异检测敏感度
- 自定义延时发包:支持固定延时和随机延时,可配置延时区间(默认1-5秒)
- 自定义追加参数:支持为请求自动追加多个指定参数,兼容URL、POST、JSON等格式
- 智能参数测试控制:追加参数可选择是否参与payload测试,提供灵活的测试策略
- 完全修复中文参数编码问题:支持UTF-8、GBK、GB2312等多种编码格式
- 智能编码检测与修复:自动识别并修复参数传递过程中的编码损坏
- 增强JSON处理能力:完美支持复杂嵌套JSON结构的中文参数
- 优化默认payload:更新18个高质量SQL注入检测payload
- payload管理优化:分离保存和加载功能,操作更直观
- 自定义延时发包:支持三种延时模式,可配置固定或随机延时,避免WAF检测
- 智能追加参数:支持URL、POST、JSON三种格式的多参数自动追加,每个参数可独立控制测试开关
- 双面板设计:左侧显示扫描结果,右侧显示参数测试详情
- 多语言界面:支持中文/英文双语言,可根据系统自动选择或手动切换
- 实时状态更新:支持报错标记(err)、时间超时标记(time)、长度差异标记(diff)等状态显示
- 停止测试功能:右键点击扫描结果中的URL,可选择停止该URL的测试
- 删除测试结果:右键点击扫描结果,可删除单个结果;清空所有结果可使用控制面板的"清空列表"按钮
- 配置持久化:所有配置自动保存,重启后自动恢复
- Windows系统优化:针对Windows系统进行UI布局优化,确保所有按钮和组件完整显示
- 智能右键菜单:支持payload组选择、停止测试、删除结果等多种操作
- 选择性监控:默认只监控Proxy和Repeater的流量,需要手动启用对应的监控选项
- 自动检测:通过右键菜单发送的请求会自动进行检测
- 多格式参数支持:支持URL参数、POST参数、JSON参数、XML参数、Cookie参数等
- 灵活测试策略:可根据不同场景选择合适的payload组,如盲注场景使用blind-injection-fuzz组,登录场景使用login-password-injection-fuzz组,WAF绕过使用union-select-bypass组
- Proxy监控:启用后自动检测通过Proxy的所有HTTP流量
- Repeater监控:启用后自动检测Repeater发送的请求
- Scanner/Intruder:默认不自动监控,可通过右键菜单手动发送到插件
- 右键发送:所有工具都支持通过右键菜单发送请求到插件进行检测
- 使用当前组:使用插件界面当前选中的payload组进行测试
- 指定payload组:可选择特定的payload组(如default、blind-injection-fuzz、login-password-injection-fuzz、union-select-bypass等)进行针对性测试
默认配置目录(推荐):
# Windows
C:\Users\[用户名]\dousql\
# macOS
/Users/[用户名]/dousql/
# Linux
/home/[用户名]/dousql/配置文件结构:
~/dousql/
├── xia_SQL_diy_payload_default.ini # default payload配置
├── xia_SQL_payload_orderby.ini # order测试组payload配置
├── xia_SQL_payload_blind-injection-fuzz.ini # 盲注专用payload配置
├── xia_SQL_payload_login-password-injection-fuzz.ini # 登录绕过payload配置
├── xia_SQL_payload_mssql-payloads-fuzz.ini # MSSQL专用payload配置
├── xia_SQL_payload_oracle-payloads-fuzz.ini # Oracle专用payload配置
├── xia_SQL_payload_union-select-bypass.ini # UNION绕过payload配置
├── xia_SQL_diy_error_default.ini # 自定义报错关键字
├── xia_SQL_response_time_threshold.ini # 响应时间阈值配置
├── xia_SQL_length_diff_threshold.ini # 长度差异阈值配置
├── xia_SQL_blacklist_urls.ini # 黑名单URL配置
├── xia_SQL_whitelist.ini # 白名单参数配置
├── xia_SQL_blacklist.ini # 黑名单参数配置
└── xia_SQL_param_filter_mode.ini # 参数过滤模式配置
特殊情况(jar包同级):
/path/to/extensions/
├── DouSql-6.jar # 插件jar包
└── dousql/ # 配置文件目录
├── xia_SQL_diy_payload.ini
├── xia_SQL_payload_timebased.ini
└── ...
配置目录检测日志示例:
ProtectionDomain路径: /var/folders/.../tmp/burp.../20
使用用户主目录: /Users/username
hello DouSQL!
你好 欢迎使用 DouSQL!
version:3.0. (Montoya API)
jar包目录: /Users/username
配置文件目录: /Users/username/dousql
从 Releases 页面下载最新版本的jar文件
git clone https://github.com/darkfiv/DouSql.git
cd DouSql
mvn clean package- 打开Burp Suite
- 进入 Extensions → Installed
- 点击 Add 按钮
- 选择编译生成的jar文件
- 插件加载成功后,会在标签页看到"DouSQL"
环境要求:
- Java 11+
- Maven 3.x
编译步骤:
# 克隆项目
git clone https://github.com/darkfiv/DouSql.git
cd DouSql
# 编译打包
mvn clean package
# 编译完成后,jar文件位于:
# target/DouSql-3.0.8.jar- 将编译生成的jar文件加载到Burp Suite
- 在Extensions标签页中找到"DouSQL"插件
- 配置相关检测参数和阈值
- 通过右键菜单或监控模式发送请求进行检测
- 查看扫描结果和参数测试详情
- ERR! - 响应中匹配到报错信息,表示疑似存在SQL注入漏洞
- time > N - 响应时间大于配置的时间阈值(N秒),表示疑似存在时间盲注
- diff: ±N - 响应长度与原始响应差异超过阈值,可能存在布尔盲注
- ✔ ==> ? - 特殊payload响应长度变化,可能存在逻辑漏洞
- start - 正在测试中
- start [time] - 正在测试中,已发现时间异常
- start [err] - 正在测试中,已发现报错信息
- start [diff] - 正在测试中,已发现长度差异
- end! - 测试完成
- end! [time] - 测试完成且发现时间异常(优先级最高)
- end! [err] - 测试完成且发现报错信息(优先级第二)
- end! [diff] - 测试完成且发现长度差异(优先级第三)
- 已停止 - 用户手动停止测试
优先级说明:当同时存在多种异常时,按照 time > err > diff 的优先级显示状态标记。
- 如果检测到时间延迟(time),只显示
time - 如果检测到错误信息(err)和长度差异(diff),显示
err+diff - 如果只检测到长度差异(diff),显示
diff - 测试结束时(end!),会显示所有检测到的异常类型,如
end! TIME ERR DIFF
插件内置了7个专业的payload组,涵盖各种SQL注入场景:
- default(21个payload):通用SQL注入检测,包含时间盲注、布尔盲注、报错注入等常见payload
- order测试组(3个payload):专门用于ORDER BY子句的注入测试
- blind-injection-fuzz(42个payload):盲注专用字典,包含MySQL、MSSQL、PostgreSQL的sleep/waitfor/benchmark等时间盲注payload
- login-password-injection-fuzz(73个payload):登录绕过专用字典,包含各种认证绕过和万能密码payload
- mssql-payloads-fuzz(14个payload):MSSQL数据库专用payload,包含xp_cmdshell、waitfor等特性
- oracle-payloads-fuzz(8个payload):Oracle数据库专用payload,包含utl_http、utl_inaddr等特性
- union-select-bypass(30个payload):UNION注入绕过字典,包含各种WAF绕过技巧
- 快速扫描:使用
default组进行初步检测 - 深度测试:根据目标数据库类型选择对应的专用组(mssql/oracle)
- 登录场景:使用
login-password-injection-fuzz组测试登录表单 - 盲注场景:使用
blind-injection-fuzz组进行时间盲注测试 - WAF绕过:使用
union-select-bypass组尝试绕过防护 - 自定义场景:创建专门的payload组,针对特定应用优化
- 无过滤模式:测试所有检测到的参数,适合全面扫描
- 白名单模式:只测试配置的关键参数(如id、username、password等)
- 黑名单模式:排除配置的无关参数(如token、timestamp、csrf_token等)
- 独立存储:白名单和黑名单参数分别保存,切换模式时不会丢失配置
- 提高效率:避免测试大量无意义参数,专注于可能存在漏洞的参数
- 排除静态资源路径(如
/static/*、*.css、*.js、*.jpg、*.png等) - 排除管理后台路径(如
/admin/*) - 排除API文档路径(如
/swagger/*、/api-docs/*)
插件会自动跳过以下类型的静态文件:
- 图片文件:jpg, jpeg, png, gif, bmp, tiff, tif, webp, svg, ico
- 样式和脚本:css, js
- 字体文件:woff, woff2, ttf, eot, otf
- 媒体文件:mp3, mp4, avi, mov, wmv, flv, mkv
- 压缩文件:zip, rar, 7z, tar, gz
- 文档文件:pdf
- 响应时间阈值:根据目标服务器性能调整(建议2-5秒)
- 长度差异阈值:根据应用响应特点调整(建议50-200字节)
- 快速测试:选择"使用当前组"进行快速测试,使用插件界面当前选中的payload组
- 精确测试:根据测试场景选择特定payload组:
- default组:通用SQL注入检测,适合快速扫描
- order测试组:ORDER BY注入测试
- blind-injection-fuzz组:时间盲注深度测试
- login-password-injection-fuzz组:登录表单绕过测试
- mssql-payloads-fuzz组:MSSQL数据库专项测试
- oracle-payloads-fuzz组:Oracle数据库专项测试
- union-select-bypass组:UNION注入WAF绕过
- 自定义组:根据目标特点创建的专门payload组
- 测试策略:可以先用default组进行快速扫描,发现可疑点后再用专门的payload组深入测试
- 紧急停止:当目标服务器异常或需要立即停止测试时,右键点击扫描结果中的URL
- 选择性停止:只停止选中的特定URL测试,不影响其他URL的测试进程
- 智能提示:菜单会显示当前测试状态,已完成的测试无法停止
- 安全停止:正在进行的payload测试会在当前完成后停止,避免请求中断
- 启用过滤:在配置面板的"响应过滤配置"标签页中启用响应过滤功能
- 过滤条件类型:
- 状态码过滤:根据HTTP状态码过滤(如跳过404、500等错误响应)
- 响应头过滤:根据特定响应头的值过滤(如Content-Type、Server等)
- 响应体内容过滤:根据响应体中的关键字过滤(如跳过包含"error"的响应)
- 响应大小过滤:根据响应体大小过滤(如跳过过小或过大的响应)
- 比较操作符:支持等于、不等于、包含、不包含、大于、小于等多种比较方式
- 逻辑组合:支持AND(所有条件都满足)和OR(任一条件满足)两种逻辑模式
- 实际应用:
- 跳过错误页面:状态码不等于200
- 跳过空响应:响应大小大于10字节
- 跳过特定内容:响应体不包含"success"
- 组合条件:状态码等于200 AND 响应体包含"data"
- 自动检测:插件会根据系统语言自动选择界面语言(中文系统显示中文,其他系统显示英文)
- 手动切换:在配置面板找到"语言设置/Language"标签页
- 即时生效:选择语言后点击"Switch Language/切换语言"按钮,选择"Update Now/立即更新"即可立即生效
- 完整覆盖:所有界面元素都会切换,包括按钮、标签、菜单、配置面板等
- 国际化友好:支持国际用户使用,提供专业的英文界面
- 删除单个结果:右键点击扫描结果中的URL,选择"删除测试结果"
- 清空所有结果:使用控制面板的"清空列表"按钮,一次性清理所有测试数据
- 确认机制:删除前会显示确认对话框,防止误操作
- 完整清理:删除操作会清理所有相关数据,包括payload测试结果
- 实时更新:删除后立即刷新界面,保持数据一致性
- 适用场景:清理误报结果、删除无关测试、整理测试列表、重新开始测试
- 默认payload为作者日常SRC、渗透测试所用的通用payload
- 师傅们需要根据自己的实际场景去优化、添加POC
- 建议针对不同目标创建专门的payload组
- 可以根据目标技术栈(如Java、PHP、.NET等)定制payload
运行环境:
- Burp Suite Professional 2024.6+
- Java 11+
- 支持Windows、macOS、Linux操作系统
编译环境:
- Java 11+
- Maven 3.x
- Java版本:Java 11
- Burp Suite版本:2024.8.2
- 构建工具:Maven 3.x
- API框架:Montoya API (Burp Suite官方扩展API)
- 新增响应过滤配置:在payload测试过程中过滤无效响应,符合配置条件的响应将被保留,不进行分析和记录,提高检测效率(支持响应体、响应头、状态码、响应body length等)
- 修复JSON格式请求双引号转义的错误:完善JSON参数处理逻辑
- 参数测试详情中payload只展示payload:不展示参数,提高可视化效果
- 修复自定义错误信息正则表达式不生效的问题:优化错误匹配机制
- 应国际网友反馈,支持中文/英文双版本切换使用:
- 智能语言检测:中文系统默认中文,其他系统默认英文
- 完整界面国际化:所有按钮、标签、配置面板均支持双语言
- 实时语言切换:在语言设置面板可即时切换,无需重启 详细更新记录请查看 CHANGELOG.md
交流群二维码老过期,有需要的师傅可关注安全鸭公众号,联系作者,私聊进群。
本工具仅供安全测试和教育目的使用,使用者应遵守相关法律法规,不得用于非法用途。开发者不承担因误用本工具造成的任何责任。