前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Fuzz模糊测试,侦探的推理手法

Fuzz模糊测试,侦探的推理手法

作者头像
网e渗透安全部
发布2024-01-19 17:20:01
840
发布2024-01-19 17:20:01
举报
文章被收录于专栏:白安全组白安全组

Fuzz Testing (模糊测试)是一种测试方法,即构造一系列无规则的“坏”数据(“坏”数据:非正常数据)插入应用程序,判断程序是否出现异常,以发现潜在的bug。在信息安全领域,也有人尝试引入fuzz testing思想进行安全漏洞挖掘,而且效果不错。

一般涉及生成数据列表,并让程序按数据列表内容请求测试的都可以称为fuzz

fuzz模糊测试,主要作用在于我们遇到一些可疑的页面,进行一些测试

比如,我们遇到这种页面

代码语言:javascript
复制
http://www.wangehacker.cn/sqli-labs/Less-1/

这种我们正常是在后面拼接?id=

但是我们如果遇到不知道的情况,我们就可以使用工具进行模糊测试,这里使用工具arjun,该工具可以在kali中直接下载

然后我们想对这种类型进行模糊测试,就可以指定一个网址目标

代码语言:javascript
复制
arjun -u http://www.wangehacker.cn/sqli-labs/Less-1/

我们可以看到这里检测出来id可能是一个传递参数的关键函数

然后我们想测试id里面的参数里面传递什么值可以得到我们想要的东西,就可以通过burp进行爆破

上面我们检测的时候,也可以选择不同传递参数的方式

通过-m进行选择,可以选择的方式有:/GET/POST/JSON/XML

代码语言:javascript
复制
arjun -u http://www.wangehacker.cn/sqli-labs/Less-1/ -m POST

同时该软件可以导入burp、简单文本文件和原始请求文件导入目标

arjun -i targ.txt

注意:在 Burp Suite 中导出项目时取消选中“base64”选项。

如果想到处结果,可以通过选项-oJ/-oB/-oT

您可以使用相应的选项将结果导出到 BurpSuite 或 txt/JSON 文件。

代码语言:javascript
复制
arjun -u https://api.example.com/endpoint -oJ result.json

-oJ result.json

-oT result.txt

-oB 127.0.0.1:8080

指定注入点

Arjun默认可以在使用JSON或方法参数时检测指定位置的参数。XML所有可用的方法有:GET/POST/JSON/XML

代码语言:javascript
复制
arjun -u https://api.example.com/endpoint -m JSON --include='{"root":{"a":"b",$arjun$}}'

或者

代码语言:javascript
复制
arjun -u https://api.example.com/endpoint -m XML --include='<?xml><root>$arjun$</root

如果想多线程,可以使用-t参数,默认是2个线程

代码语言:javascript
复制
arjun -u http://www.wangehacker.cn/sqli-labs/Less-1/ -t 10

从被动源收集参数名称

选项:--passive

您可以从 CommonCrawl、Open Threat Exchange 和 WaybackMachine 收集域(而非子域)的参数名称,并检查它们是否存在于您的目标上。

代码语言:javascript
复制
arjun https://api.example.com/endpoint --passive example.com

如果您想使用目标 URL 中的域,请使用--passive -. 它仅适用于单个目标。

使用自定义 HTTP 标头

选项:--headers

您可以简单地从命令行添加自定义标头,按\n如下所示分隔:

代码语言:javascript
复制
arjun -u https://api.example.com/endpoint --headers "Accept-Language: en-US\nCookie: null"

使用--headers不带任何参数的选项将打开文本编辑器(默认为“nano”),您只需将 HTTP 标头粘贴到此处并按Ctrl + S保存即可。

包括持久数据

选项:--include

假设您有一个 API 密钥,需要在每个请求中发送,为了告诉 Arjun 这样做,您可以使用--include以下选项:

代码语言:javascript
复制
arjun  -u https://api.example.com/endpoint --include 'api_key=xxxxx'

或者

代码语言:javascript
复制
arjun  -u https://api.example.com/endpoint --include '{"api_key":"xxxxx"}'

要包含多个参数,请使用&分隔它们或将它们作为有效的 JSON 对象传递。

控制查询/块大小

选项:-c

默认情况下,Arjun 在请求中包含 500 个参数,有时可能会超出某些服务器的最大 URL 长度限制。-c您可以通过指定一次发送的参数数量来处理这种情况。

代码语言:javascript
复制
arjun -u https://api.example.com/endpoint -c 250
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-01-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 白安全组 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 从被动源收集参数名称
  • 使用自定义 HTTP 标头
  • 包括持久数据
  • 控制查询/块大小
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档