Ffuf爆破神器(超详细)

news2024/10/3 17:01:13

目录

  • 为什么是Ffuf
  • 基本使用
    • 最基本的使用
    • 多个字典同时使用
    • 带cookie扫描(-b)
    • 静默模式(-s)
    • 递归扫描(-recursion)
    • 指定扩展名(-e)
    • POST请求爆破
      • 方式1:指明请求地址和请求体【不推荐】
      • 排雷方式1:添加请求头(-H)
      • 方式2:从文本中加载【推荐】
    • 随机User-Agent
      • 为什么要随机User-Agent
      • 直接添加User-Agent
      • 随机化User-Agent【不好用】
    • 子域名爆破
    • 保存结果
  • 匹配响应内容
    • 匹配 http 状态码(-mc)
    • 匹配响应包的行数(-ml)
    • 匹配字数(-mw)
    • 匹配大小(-ms)
    • 匹配正则(-mr)
  • 过滤响应内容
    • 过滤状态码(-fc)
    • 过滤响应包的行数(-fl)
    • 过滤字数(-fw)
    • 过滤大小(-fs)
    • 过滤正则(-fr)
  • 其他参数
    • 颜色输出(-c)
    • 设置线程(-t)
    • 请求延时(-p)
    • 跟随重定向(-r)
    • 超时时间(-timeout)
    • 测试详情(-v)
    • 代理(-x)
    • 任务最大时间(-maxtime )
    • 忽略字典的注释信息(-ic)
  • 参考

ffuf是一款Go语言编写的高速Web Fuzzer工具。
这里整理学习了网上的相关文章,你可以在“参考”中看到原始的出处。

为什么是Ffuf

  1. 基于Go语言开发,速度极快,并且跨平台
  2. 可以颜色高亮输出
  3. 强大的过滤系统和代理系统
  4. 能适应多种情景下的模糊测试
  5. 广受好评,持续更新

能同时满足以上5点的,目前只有,应该只有Ffuf了,项目地址:https://github.com/ffuf/ffuf

这款工具有两点我不大满意:

  1. 不能够完整打印出爆破出来的URI路径。
  2. user-agent特征明显,不能随机user-agent。

基本使用

最基本的使用

格式:ffuf -u 目标地址/FUZZ -w 字典
举例:ffuf -u http://192.168.111.131/FUZZ -w /usr/share/SecLists-2022.2/Discovery/Web-Content/common.txt

在这里插入图片描述

多个字典同时使用

靶机案例参见:https://www.yuque.com/u1881995/xwfvho/duyuuv#sIEeo

使用格式:
ffuf -u 目标地址/FUZZ1:FUZZ2 -w 字典:FUZZ1 -w 字典:FUZZ2

举例:
ffuf -u http://192.168.111.132/sqli/example1.php?FUZZ1=FUZZ2 -w /usr/share/SecLists-2022.2/Discovery/Web-Content/burp-parameter-names.txt:FUZZ1 -w /usr/share/SecLists-2022.2/Fuzzing/fuzz-Bo0oM.txt:FUZZ2

在这里插入图片描述

带cookie扫描(-b)

ffuf -u http://192.168.111.130/DVWA-master/FUZZ -w /usr/share/SecLists-2022.2/Discovery/Web-Content/common.txt -b "security=low; PHPSESSID=pj0emeebmimf3t9ddpv6pknah0"

首先获取到cookie
在这里插入图片描述

在这里插入图片描述

静默模式(-s)

-s其实就是不打印附加信息,只输出结果

ffuf -u http://192.168.111.130/DVWA-master/FUZZ -w /usr/share/SecLists-2022.2/Discovery/Web-Content/common.txt -s

递归扫描(-recursion)

一个普通的扫描如下图:
在这里插入图片描述

尝试递归扫描:
值得注意的是字典内开头不要有 / 不然不会进行递归的,如下图(我手动给字典每行的开头位置添加了/

.\ffuf.exe -u http://192.168.111.130/FUZZ -w D:\字典\SecLists-2022.2\Discovery\Web-Content\common.txt -recursion 2

在这里插入图片描述

正确的递归方式是确保字典开头没有/,这个时候使用 -maxtime就不行了,一起使用-maxtime-job-recursion递归扫描,用于指定每个目录递归扫描时间,避免扫描时间过长。

.\ffuf.exe -u http://192.168.111.130/FUZZ -w D:\字典\SecLists-2022.2\Discovery\Web-Content\common.txt -recursion 2 -maxtime-job 10

在这里插入图片描述

指定扩展名(-e)

存在多个扩展的话,用逗号隔开

ffuf -u http://192.168.111.130/FUZZ -w /usr/share/SecLists-2022.2/Discovery/Web-Content/common.txt -e .php,.zip

在这里插入图片描述

POST请求爆破

方式1:指明请求地址和请求体【不推荐】

获取请求地址和请求体,并开始爆破,这里有点奇怪,从BurpSuite中得知成功的响应包和长度是与失败的响应包长度不同的,但是Ffuf显示的长度一致。

ffuf -X POST -u http://192.168.111.130/pikachu-master/vul/burteforce/bf_form.php -d "username=admin&password=FUZZ&submit=Login" -w /usr/share/SecLists-2022.2/Passwords/2020-200_most_used_passwords.txt

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

排雷方式1:添加请求头(-H)

由于方式2可以爆破出来,因此怀疑可能是请求头导致的爆破失败。
首先使用方式1中的原始命令,捕获数据包如下:
在这里插入图片描述

接着使用BurpSuite尽可能的删除请求头,发现Content-Type: application/x-www-form-urlencoded会影响到爆破测试结果
在这里插入图片描述

那么就添加此参数,数据包说明参数添加正常,测试结果说明爆破成功

ffuf -X POST -u http://192.168.111.130/pikachu-master/vul/burteforce/bf_form.php -d "username=admin&password=FUZZ&submit=Login" -H "Content-Type: application/x-www-form-urlencoded" -w /usr/share/SecLists-2022.2/Passwords/2020-200_most_used_passwords.txt

在这里插入图片描述

方式2:从文本中加载【推荐】

用别名代替测试的内容,保存为文本。

ffuf -request test.txt -request-proto http -mode clusterbomb -w /usr/share/SecLists-2022.2/Passwords/2020-200_most_used_passwords.txt
  1. -mode 爆破模块,目前有clusterbombpitchfork两个模式具体,类似burpsuite的爆破模块
    1. clusterbomb模式下,用户名单词列表中的每个单词都将与密码单词列表中的每个单词组合使用。就像如果列表 1 中有 4 个单词而列表 2 中有 5 个单词,那么总共会有 20 个请求。(集束炸弹模式)
    2. pitchfork模式下,用户名列表中第一个单词将与密码列表中第一个单词一起使用,同样,用户名列表中第二个单词将与密码列表中第二个单词一起使用。如果两个列表中的单词数量不同,那么一旦单词数量较少的列表耗尽就会停止。
  2. -request标志可用于指定与原始HTTP请求文件,并且将相应使用FUZZ
  3. -request-proto与原始请求一起使用的协议(默认值:https)

在这里插入图片描述

在这里插入图片描述

随机User-Agent

为什么要随机User-Agent

Ffuf不会随机User-Agent,这导致它很容易被安全设备识别出来,更糟糕的是它不支持随机User-Agent,那我们只能自己动手丰衣足食了。
在这里插入图片描述

Ffuf有-H参数允许我们添加请求头,我们可以那它做文章。
我在网上找到了一些User-Agent

  1. https://epi052.github.io/feroxbuster-docs/docs/examples/random-agent/
  2. https://github.com/deibit/cansina/blob/master/core/ua.txt

直接添加User-Agent

ffuf -u http://192.168.111.130/FUZZ -w /usr/share/SecLists-2022.2/Discovery/Web-Content/common.txt -c -H "User-Agent: Mozilla/5.0 Windows NT 10.0 Win64 AppleWebKit/537.36 Chrome/69.0.3497.100"

在这里插入图片描述

随机化User-Agent【不好用】

在谷歌上搜索出一个生成随机UA的工具:randomua
一些常见的Web黑客工具允许添加自定义请求头,randomua正式利用了这一点来生成随机UA

  1. 下载安装
git clone https://github.com/picatz/randomua.git
cd randomua
gem install randomua
randomua -h

在这里插入图片描述

  1. 使用工具,但是不知道为什么,失败了。测试了别的工具,也不大好用,gg
ffuf -u http://192.168.111.130/FUZZ -w /usr/share/SecLists-2022.2/Discovery/Web-Content/common.txt -c "User-Agent: $(randomua -d)"

子域名爆破

kali自带的一些子域名字典:locate dns | grep "/usr/share" | grep ".txt"
在这里插入图片描述

ffuf -w /usr/share/SecLists-2022.2/Discovery/DNS/bitquark-subdomains-top100000.txt -u http://shoppy.htb -H "Host:FUZZ.shoppy.htb" -fs 169

在这里插入图片描述

保存结果

测试发现,需要同时用到-of(指明导出文件类型)、-o(指明导出的文件位置和文件名字)
如果只是使用了其中的一个参数,会导致导出的结果有问题,不能正常查看。
在这里插入图片描述

下面分别是html效果和csv导出的效果
在这里插入图片描述

在这里插入图片描述

匹配响应内容

匹配 http 状态码(-mc)

-mc all意味着匹配所有的状态码(Ffuf本身会过滤一些如404的状态码)

ffuf -u http://192.168.111.130/FUZZ -w /usr/share/SecLists-2022.2/Discovery/Web-Content/common.txt -c -mc 200,301

在这里插入图片描述

匹配响应包的行数(-ml)

从数据包中可以看到,phpMyAdmin目录的响应体只有7行,推测Ffuf把响应头和响应体之间的回车换行算成1行

ffuf -u http://192.168.111.130/FUZZ -w /usr/share/SecLists-2022.2/Discovery/Web-Content/common.txt -c -ml 8

在这里插入图片描述

在这里插入图片描述

匹配字数(-mw)

不知道这个字数代表的是什么字数

ffuf -u http://192.168.111.130/FUZZ -w /usr/share/SecLists-2022.2/Discovery/Web-Content/common.txt -c -mw 14

匹配大小(-ms)

ffuf -u http://192.168.111.130/FUZZ -w /usr/share/SecLists-2022.2/Discovery/Web-Content/common.txt -ms 236

匹配正则(-mr)

ffuf -u http://192.168.111.130/FUZZ -w /usr/share/SecLists-2022.2/Discovery/Web-Content/common.txt -c -mr "phpmyadmin"

过滤响应内容

过滤状态码(-fc)

ffuf -u http://192.168.111.130/FUZZ -w /usr/share/SecLists-2022.2/Discovery/Web-Content/common.txt -c -fc 403

过滤响应包的行数(-fl)

ffuf -u http://192.168.111.130/FUZZ -w /usr/share/SecLists-2022.2/Discovery/Web-Content/common.txt -c -fl 8

过滤字数(-fw)

ffuf -u http://192.168.111.130/FUZZ -w /usr/share/SecLists-2022.2/Discovery/Web-Content/common.txt -c -fw 14

过滤大小(-fs)

ffuf -u http://192.168.111.130/FUZZ -w /usr/share/SecLists-2022.2/Discovery/Web-Content/common.txt -fs 236

过滤正则(-fr)

ffuf -u http://192.168.111.130/FUZZ -w /usr/share/SecLists-2022.2/Discovery/Web-Content/common.txt -c -fr "phpmyadmin"

其他参数

颜色输出(-c)

目前windows下没有颜色高亮效果(目前指的是最新版本v1.5.0

ffuf -u http://192.168.111.130/FUZZ -w /usr/share/SecLists-2022.2/Discovery/Web-Content/common.txt -c

在这里插入图片描述

设置线程(-t)

线程默认40,我这里修改为50

ffuf -u http://192.168.111.130/FUZZ -w /usr/share/SecLists-2022.2/Discovery/Web-Content/common.txt -c -t 50

在这里插入图片描述

请求延时(-p)

 ffuf -u http://192.168.111.130/FUZZ -w /usr/share/SecLists-2022.2/Discovery/Web-Content/common.txt -c -p 0.1

在这里插入图片描述

跟随重定向(-r)

ffuf -u http://192.168.111.130/FUZZ -w /usr/share/SecLists-2022.2/Discovery/Web-Content/common.txt -c -r

超时时间(-timeout)

ffuf -request test.txt -request-proto http -mode clusterbomb -w /usr/share/SecLists-2022.2/Passwords/2020-200_most_used_passwords.txt -timeout 2

测试详情(-v)

ffuf -request test.txt -request-proto http -mode clusterbomb -w /usr/share/SecLists-2022.2/Passwords/2020-200_most_used_passwords.txt -v

代理(-x)

For example: http://127.0.0.1:8080 or socks5://127.0.0.1:8080

 .\ffuf.exe -u http://192.168.111.130/FUZZ -w D:\字典\SecLists-2022.2\Discovery\Web-Content\common.txt -x http://127.0.0.1:8080

在这里插入图片描述

任务最大时间(-maxtime )

-maxtime在有限的时间内完成测试,不论是否完成都将终止,单位为秒

ffuf -u http://192.168.111.130/FUZZ -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -c -maxtime 60

在这里插入图片描述

忽略字典的注释信息(-ic)

如下图,有的字典可能有一些注释信息,但是ffuf不知道这是注释的,就当成字典测试了。使用-ic参数即可解决此问题。

ffuf -u http://192.168.111.130/FUZZ -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -c -ic

在这里插入图片描述

参考

https://github.com/ffuf/ffuf
https://codingo.io/tools/ffuf/bounty/2020/09/17/everything-you-need-to-know-about-ffuf.html
ffuf 基础食用指南
Ffuf使用教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/115900.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

iOS 自动化测试踩坑(一): 技术方案、环境配置与落地实践

移动端的自动化测试,最常见的是 Android 自动化测试,我个人觉得 Android 的测试优先级会更高,也更开放,更容易测试;而 iOS 相较于 Android 要安全稳定的多,但也是一个必须测试的方向,这个系列文…

Android实现雪花特效自定义view

一、前言 这个冬天,老家一直没有下雨, 正好圣诞节,就想着制作一个下雪的特效。 圣诞祝福:平安夜,舞翩阡。雪花飘,飞满天。心与心,永相伴。 圣诞节是传统的宗教节日,对于基 督徒&…

前端自学你还在浪费时间吗?

其实最主要不是学的过程,而是学完后,你有没有把今天的练习题自己在重新敲个2,3遍,这样印象就会更加深刻,以后自己写代码的时候也会更加的得心应手。 手抄笔记让我打好了HTML基础和良好的CSS能力,当然这不一…

Cesium打包入门(gulp与esbuild)

本文针对Cesium源码包的打包工具gulp和esbuild进行了初步探讨,属于入门篇。 首先简要介绍采用gulpesbuild如何为多个源代码文件打包成一个单独文件,然后介绍了下Cesium中的源码包的结构,并简要分析了其打包的相关函数。 本文编译环境IDE使用…

【并发编程学习】一、线程的基本认识

一、线程的基本认识 1.1线程的基本介绍 线程是什么? 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运行单位。 为什么会有多线程? ①因为其是CPU的最小调度单位,所以在多核CPU中&#xff0c…

圣诞节,深圳街头有点冷清了~

正文大家好,我是bug菌~今天是圣诞节,这也是我新冠康复的第二周了吧,还有点小咳嗽,伴随有点鼻炎,不过这周已经上了三天班了,整体感觉还算好吧,毕竟我嘴巴不硬,也比较低调不嚣张&#…

底层硬件创新夯实算力、应用创新贴近业务:英特尔至强助力下的VR医疗培训系统

早在1935年,科幻小说家斯坦利温鲍姆的小说《皮格马利翁的眼镜》中,就构想了一款实现虚拟现实(VR)的眼镜。近年来,除游戏、娱乐等大众熟知的应用场景外,VR逐渐涉足医疗、教育、生产制造等各种领域。 以医疗…

LeetCode-1759-统计同构子字符串的数目

1、数学 我们可以使用数学进行分析:每当出现连续的nnn个字符时,我们最终将其合在一起进行计算个数。显然我们可以获得的同构子字符串的个数应为n(n1)2\frac{n \times (n1)}{2}2n(n1)​。因此我们只需要遍历整个字符串,分别统计连续出现的字符…

57岛屿数量-61全排列 最长递增路径

57岛屿数量 矩阵中多处聚集着1,要想统计1聚集的堆数而不重复统计,那我们可以考虑每次找到一堆相邻的1,就将其全部改成0,而将所有相邻的1改成0的步骤又可以使用深度优先搜索(dfs):当我们遇到矩阵…

AtCoder Beginner Contest 283 (A~F)

比赛名称&#xff1a;UNIQUE VISION Programming Contest 2022 Winter(AtCoder Beginner Contest 283) 比赛链接&#xff1a;AtCoder Beginner Contest 283 A - Power 题意&#xff1a; 求A^B(1<A,B<9) 要注意这个int强制转换&#xff0c;不然9^9输出结果时387420489&…

python根据json数据画疫情分布地图

目录 一.基础地图使用 1.掌握使用pyecharts构建基础的全国地图可视化图表 二.疫情地图——国内疫情地图 1.案例效果 代码 三.疫情地图——省级疫情地图 四.数据集 注&#xff1a;数据集在文章最后 一.基础地图使用 1.掌握使用pyecharts构建基础的全国地图可视化图表 演…

Learning to Segment Every Thing

摘要 现有的目标实例分割方法要求所有训练样本都具有分割mask标注。然而&#xff0c;标注新的类别是非常费劲的&#xff0c;因此这将实例分割模型的应用范围限制在100个左右的有标注的类。本文的目的是提出一种新的部分监督的训练模型&#xff0c;以及一种新的权重传递函数&am…

洛谷【算法1-7】搜索刷题——优化、错题

文章目录[USACO1.5]八皇后 Checker Challenge题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示思路搜索框架代码位运算优化lowbit运算思路kkksc03考前临时抱佛脚题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示思路代码吃奶酪题目描述输入格式输…

C++ STL 之可变长数组 Vector 详解

文章目录Part.I AttentionChap.I 注意事项Chap.II 操作技巧Part.II FunctionChap.I 构造函数Chap.II 增加函数Chap.III 删除函数Chap.IV 遍历函数Chap.V 判断/大小/其他函数Part.III CodePart.I Attention Chap.I 注意事项 使用vector需要注意的地方&#xff1a; 加引用#inc…

分布式与微服务系列 - SpringBoot + Zookeeper集群 + Dubbo分布式托管(提供者、消费者)+ Nginx反向代理

一、前言 本内容仅用于个人学习笔记&#xff0c;如有侵扰&#xff0c;联系删除 再搭建集群项目前&#xff0c;请先学习相关技术的知识&#xff1a; 分布式与微服务系列 - Dubbo分布式与微服务系列 - Zookeeper上篇&#xff1a;入门到精通参考文档&#xff1a;分布式与微服务…

状态机——奇葩的状态表示

状态机——奇葩的状态表示 简述 在动态规划中&#xff0c;遇到有一个点有多个状态&#xff0c;混在一起无法表示&#xff0c;那么就可以把状态分开&#xff0c;并且构造出不同状态之间的转移关系&#xff0c;然后再求出状态转移方程&#xff0c;之后就OK了。 题目 1049. 大…

GNN algorithms(3): Tri-party Deep Network Representation

目录 Tri-party Deep Network Representation Essence Thinking Abstract Introduction Problem Definition Tri-DNR pipelines Model Architecture Tri-party Deep Network Representation Essence 1) Deepwalk提取graph structure信息&#xff0c;即structural nod…

MyBatis 一文基础总结

MyBatis 一文基础总结老师的随堂上课笔记&#xff0c; 供参考~1.框架概述1.1 软件开发常用结构1.1.1三层架构三层的处理请求的交互&#xff1a;用户---> 界面层--->业务逻辑层--->数据访问层--->DB 数据库1.1.2 常用框架常见的 J2EE 中开发框架&#xff1a;MyBatis…

adworld-web-inget-20221226

inget 题目来源: 宜兴网信办 题目描述: 无 题目场景: http://61.147.171.105:51222 http://61.147.171.105:51222/?id1%27%20%20or%2011%20– Please enter ID,and Try to bypass nice : congratulations Flag Is : cyberpeace{3df1eecfb5f794d6a94eba429f7e2846} ┌…

【NI Multisim 14.0编辑环境——菜单栏】

目录 序言 一、菜单栏 &#x1f349;1.文件 &#x1f349;2.编辑 &#x1f349;3.视图 &#x1f349; 4.绘制 &#x1f349;5.MCU&#xff08;微控制器&#xff09;菜单 &#x1f349; 6.仿真 &#x1f349; 7.转移 &#x1f349; 8.工具 &#x1f349; 9.报告 &…