Fuzz Testing (模糊测试)是一种测试方法,即构造一系列无规则的“坏”数据(“坏”数据:非正常数据)插入应用程序,判断程序是否出现异常,以发现潜在的bug。在信息安全领域,也有人尝试引入fuzz testing思想进行安全漏洞挖掘,而且效果不错。
一般涉及生成数据列表,并让程序按数据列表内容请求测试的都可以称为fuzz
fuzz模糊测试,主要作用在于我们遇到一些可疑的页面,进行一些测试
比如,我们遇到这种页面
http://www.wangehacker.cn/sqli-labs/Less-1/
这种我们正常是在后面拼接?id=
但是我们如果遇到不知道的情况,我们就可以使用工具进行模糊测试,这里使用工具arjun,该工具可以在kali中直接下载
然后我们想对这种类型进行模糊测试,就可以指定一个网址目标
arjun -u http://www.wangehacker.cn/sqli-labs/Less-1/
我们可以看到这里检测出来id可能是一个传递参数的关键函数
然后我们想测试id里面的参数里面传递什么值可以得到我们想要的东西,就可以通过burp进行爆破
上面我们检测的时候,也可以选择不同传递参数的方式
通过-m进行选择,可以选择的方式有:/GET/POST/JSON/XML
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 文件。
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
arjun -u https://api.example.com/endpoint -m JSON --include='{"root":{"a":"b",$arjun$}}'
或者
arjun -u https://api.example.com/endpoint -m XML --include='<?xml><root>$arjun$</root
如果想多线程,可以使用-t参数,默认是2个线程
arjun -u http://www.wangehacker.cn/sqli-labs/Less-1/ -t 10
选项:--passive
您可以从 CommonCrawl、Open Threat Exchange 和 WaybackMachine 收集域(而非子域)的参数名称,并检查它们是否存在于您的目标上。
arjun https://api.example.com/endpoint --passive example.com
如果您想使用目标 URL 中的域,请使用--passive -. 它仅适用于单个目标。
选项:--headers
您可以简单地从命令行添加自定义标头,按\n如下所示分隔:
arjun -u https://api.example.com/endpoint --headers "Accept-Language: en-US\nCookie: null"
使用--headers不带任何参数的选项将打开文本编辑器(默认为“nano”),您只需将 HTTP 标头粘贴到此处并按Ctrl + S保存即可。
选项:--include
假设您有一个 API 密钥,需要在每个请求中发送,为了告诉 Arjun 这样做,您可以使用--include以下选项:
arjun -u https://api.example.com/endpoint --include 'api_key=xxxxx'
或者
arjun -u https://api.example.com/endpoint --include '{"api_key":"xxxxx"}'
要包含多个参数,请使用&分隔它们或将它们作为有效的 JSON 对象传递。
选项:-c
默认情况下,Arjun 在请求中包含 500 个参数,有时可能会超出某些服务器的最大 URL 长度限制。-c您可以通过指定一次发送的参数数量来处理这种情况。
arjun -u https://api.example.com/endpoint -c 250
扫描二维码关注我们吧!