Fuzzing for beginners! FFuF - Hacker Tools

Intigriti
7 Dec 202109:57

Summary

TLDRIn this educational video, the concept of fuzzing is introduced as an automated process for sending data to a server to discover endpoints and potential vulnerabilities. The tool Ff (Fast and Furious), developed by Finnish hacker Juhoy, is highlighted for its effectiveness in fuzzing. The tutorial covers basic commands, including using wordlists, filtering responses, and handling POST requests. It also touches on ethical considerations like rate limiting and respecting target server load. Advanced features like recursion, redirects, and matcher options are briefly explored, encouraging viewers to delve deeper into the tool's capabilities.

Takeaways

  • 🔍 Fuzzing is an automated process used to discover endpoints by sending various data inputs to a server and observing its responses.
  • 🌐 The tool 'ff' (short for 'fuzz') is a popular choice for fuzzing, created by Finnish hacker juhoy.
  • 📝 Fuzzing can be used to find valid endpoints, vhosts, and even POST data by sending requests with different payloads.
  • 📁 Ff can be used with a wordlist to try various words or paths to discover new endpoints on a server.
  • 🔗 The '-f' flag in ff is used to specify the position in the URL where the wordlist entries will be inserted.
  • 🚫 To avoid overloading the server, it's important to filter out requests that return the same size or status code, which might indicate non-existent endpoints.
  • 🔄 The '-x' flag allows users to specify the HTTP method, such as GET or POST, to be used in fuzzing requests.
  • 📑 The '-d' flag is used to supply POST data, which can include variables from the wordlist for dynamic testing.
  • 🏷️ Ff offers 'bug bounty' options like '-t' for controlling the number of threads and '-r' for setting the request rate to adhere to ethical testing practices.
  • 🔄 Recursion can be enabled with the '-recursion' flag to explore directories and files further by adding new levels to the discovered endpoints.
  • 🔍 The '-m' matcher options in ff allow filtering and matching responses based on status codes, line numbers, regex patterns, response sizes, and word counts.

Q & A

  • What is fuzzing in the context of cybersecurity?

    -Fuzzing is an automated process where data is sent to a server to observe its reactions. It's used to discover endpoints, test APIs, and identify potential vulnerabilities by sending a wide range of inputs to see how the system responds.

  • How can fuzzing help in identifying endpoints on an API?

    -Fuzzing can help identify endpoints by sending various requests to an API and observing the server's responses. Different status codes like 404 or 200 can indicate whether an endpoint exists or not, allowing further exploration of valid endpoints.

  • What is the role of a wordlist in fuzzing?

    -A wordlist in fuzzing contains a collection of words or terms that are used as inputs to test endpoints. It helps in discovering valid endpoints, vhosts, or other resources by replacing parts of the URL or request with these words.

  • Why is ff (fast fuzzer) a popular tool for fuzzing?

    -ff, created by the Finnish hacker juhoy, is popular because of its speed and efficiency in fuzzing. It quickly sends a large number of requests to a server using wordlists, making it easy to identify endpoints and potential vulnerabilities.

  • How does ff handle the placement of fuzzed words in a URL?

    -ff uses a specific syntax to define where the fuzzed words from the wordlist should be placed in a URL. By using a slash followed by 'F' in capital letters, ff knows where to insert the words from the wordlist into the URL.

  • What is the purpose of filtering in fuzzing with ff?

    -Filtering in fuzzing with ff is used to narrow down the results by specific criteria such as response size, status codes, or other attributes. This helps in focusing on potentially interesting endpoints that may indicate vulnerabilities or valid resources.

  • How can ff be used to send POST requests during fuzzing?

    -ff can be configured to send POST requests by using the -X flag followed by 'POST' and the -d flag to supply the post data. This allows for fuzzing of APIs that accept POST requests and may reveal endpoints or resources that handle POST data.

  • What are 'book bounty options' in ff and why are they important?

    -Book bounty options in ff are settings that help adhere to the rules of ethical hacking programs. They include controlling the rate of requests and the number of threads to avoid overloading the server, which is important for responsible and legal fuzzing.

  • How does recursion in fuzzing with ff work?

    -Recursion in fuzzing with ff allows for the scanning of directories or files recursively. When a valid endpoint is found, ff can add another 'F' keyword to continue fuzzing deeper into the directory structure, potentially discovering more endpoints.

  • What are matcher options in ff and how do they help in fuzzing?

    -Matcher options in ff help in identifying responses that match specific criteria such as status codes, response size, or regex patterns. They allow for more targeted fuzzing by showing only the results that meet the defined conditions, making it easier to spot potential vulnerabilities or interesting endpoints.

  • Why is it important to follow redirects during fuzzing?

    -Following redirects during fuzzing is important because it allows the discovery of the final destination of a URL that may be redirected. This can reveal additional endpoints or resources that may not be immediately apparent from the initial request.

Outlines

00:00

🔍 Introduction to Fuzzing with FF

This paragraph introduces the concept of fuzzing as an automated process for sending data to a server to observe its reactions. It explains how fuzzing can be used to discover API endpoints by sending requests and interpreting the server's responses, such as 404 for non-existent endpoints or 200 for existing ones. The paragraph introduces FF (Fast Fuzzing), a tool created by a Finnish hacker named Juhoy, and sets the stage for a demonstration of how to use FF for fuzzing.

05:02

🛠 Exploring FF's Basic Fuzzing Process

This section provides a step-by-step guide on how to perform a basic fuzzing scan using FF. It details the process of initiating a scan by specifying a wordlist, using the 'cyclists' wordlist for discovering web content, and targeting a specific URL (www.integrity.com). The explanation includes the use of flags to define where in the URL the fuzzing words should be placed and how to interpret the server's response codes. It also discusses filtering out requests based on response size to identify potentially valid endpoints.

🚀 Advanced Fuzzing Techniques with FF

This part of the script delves into more advanced fuzzing techniques using FF, such as sending POST requests with specific HTTP methods and data payloads. It discusses the use of flags like -x for HTTP methods and -d for data, which can include variables from the wordlist. The paragraph also covers 'bug bounty options' like controlling the number of threads and request rates to avoid overloading the server, and setting headers and cookies for requests.

🔄 Recursion and Redirects in Fuzzing

The script explains how to use recursion in fuzzing to explore directories and files by adding 'first' keywords to the end of URLs and allowing FF to recursively scan deeper into the server's structure. It mentions setting recursion depth with the '-recursion depth' flag to control the depth of scanning. Additionally, it covers the use of the '-r' flag to follow redirects and the importance of this feature in fuzzing.

🎯 Matcher and Filter Options in FF

This section focuses on matcher options in FF, which allow users to specify criteria for displaying responses based on status codes, line numbers, regex patterns, response sizes, and word counts. It also discusses filter options that enable users to exclude specific entries from the results based on status codes, line numbers, regex, response sizes, and word counts. These options help in refining the fuzzing process to target relevant endpoints more effectively.

Mindmap

Keywords

💡Fuzzing

Fuzzing is an automated process in software testing that involves sending a large amount of random or malformed data to a system to observe its response. In the context of the video, fuzzing is used to discover endpoints on an API by sending various requests to see how the server reacts. The video explains how fuzzing can help identify valid endpoints and potential vulnerabilities by observing the server's responses to different inputs.

💡API

An API, or Application Programming Interface, is a set of rules and protocols for building and interacting with software applications. In the video, the focus is on using fuzzing to explore and test various endpoints within an API to ensure its integrity and security. The script mentions sending requests to an API endpoint to see how the server reacts, which is a common practice in API testing.

💡Endpoints

Endpoints in the context of APIs refer to the specific URLs that a client can request from to access a service or resource. The video discusses the use of fuzzing to discover endpoints, which is crucial for understanding the full scope of an API's functionality and for security testing to ensure that only intended endpoints are accessible.

💡Status Codes

HTTP status codes are standard responses that indicate whether a specific HTTP request has been successfully completed. In the script, status codes like 200, 404, and 301 are mentioned as indicators of how a server responds to fuzzing requests. A 200 status code might suggest that an endpoint exists, while a 404 indicates that the endpoint was not found.

💡Wordlist

A wordlist in fuzzing is a collection of words or terms that are used to generate input for testing. The video mentions using a wordlist with ff (fuzzing tool) to automate the process of sending various requests to a server. The wordlist is crucial for comprehensive fuzz testing as it determines the range of inputs that the tool will use.

💡ff (fast fuzzer)

ff, or fast fuzzer, is a tool created by a Finnish hacker named juhoy, as mentioned in the video. It is used for fuzzing and is designed to send a large number of requests to a server to discover endpoints and potential vulnerabilities. The video provides a demonstration of how to use ff with a wordlist and various command-line options to perform fuzzing.

💡Recursion

In the context of the video, recursion refers to the process of automatically following through on discovered directories or endpoints to explore further layers of an API or web service. The ff tool can be set to recursively fuzz, which means it will continue to add new keywords to the end of a discovered endpoint to find even more endpoints.

💡Redirects

Redirects are HTTP responses that indicate the requested resource has been moved to a different URI. The video explains how the ff tool can be configured to follow redirects (using the -r option), which is important for comprehensive fuzzing as it allows the tool to explore resources that have been moved or redirected.

💡Matcher Options

Matcher options in fuzzing tools like ff are used to filter and identify responses that meet certain criteria. The video discusses various matcher options such as status codes (-mc), line count (-ml), and regex (-mr) that can be used to focus on specific types of server responses during fuzz testing.

💡Rate Limiting

Rate limiting is the practice of controlling the amount of requests a user can send to a server within a certain period. In the video, the concept is mentioned in relation to responsible fuzzing practices, where the -t and -rate options in ff are used to control the number of threads and requests per second, respectively, to avoid overloading the server.

Highlights

Introduction to fuzzing as an automated process for sending data to a server to observe its reactions.

Fuzzing can be used to discover API endpoints by sending requests and interpreting server responses.

The tool F5, created by Finnish hacker Juhoy, is introduced for fuzzing purposes.

A demonstration of a basic F5 scan using a wordlist to find endpoints.

Explanation of using different wordlists for fuzzing, such as 'cyclists' for web content discovery.

The use of the '-u' flag to supply a URL for fuzzing and the importance of defining the endpoint location with '/'.

Observation that a 200 status code might not indicate a valid endpoint due to server behavior.

Technique to filter requests based on response size to find more meaningful endpoints.

Introduction to advanced fuzzing options, including POST requests and supplying HTTP methods with '-x'.

The use of '-d' flag to supply POST data and the ability to include fuzzing keywords in the data.

Discussion on 'book bounty' options like controlling the rate of requests to avoid overloading servers.

Explanation of setting headers and cookies in fuzzing requests using '-h' and '-b' flags.

Introduction to recursion in fuzzing with the '-recursion' flag for directory and file discovery.

The use of '-r' flag to follow redirects and its importance in fuzzing.

Matcher options explained, including matching status codes, response size, and regex patterns.

Filtering options to refine fuzzing results, such as excluding specific status codes or response sizes.

Encouragement to explore F5's help page and GitHub for more advanced fuzzing techniques.

Conclusion summarizing the value of F5 in fuzzing for discovering endpoints, vhosts, and POST data.

Transcripts

play00:00

hello everybody and welcome back to

play00:01

another hacker tools video in today's

play00:04

video we are going to be taking a look

play00:06

at f5 and we're going to look at fuzzing

play00:10

for beginners so let's jump straight

play00:13

into it

play00:17

what is fuzzing well fuzzing is an

play00:20

automated process where we send data to

play00:23

a server and we see how it reacts for

play00:26

example we could have an api and we want

play00:28

to find different endpoints on that api

play00:30

that we can test

play00:32

we can try to send a request saying okay

play00:34

api.integrity.com

play00:37

users how is integrity.com going to

play00:39

react to that it can either react in for

play00:42

example a 404 saying hey i did not find

play00:45

that and then we know okay that's not a

play00:47

valid endpoint but it could also react

play00:49

in a 200 status code saying hey the user

play00:52

id is not found in this case and you

play00:54

know okay that endpoints exist

play00:56

and i um can start looking into that

play00:59

endpoint more so

play01:01

fuzzing is that automated process where

play01:03

we run through a whole word list with

play01:05

all kinds of words and we try to find

play01:07

end points but also v hosts at the

play01:10

beginning of a url but you can even try

play01:13

to first post the data or anything you

play01:15

can really imagine

play01:17

and now a very popular tool for fuzzing

play01:20

is ff standing for first faster you

play01:24

fool now f5 was created by the finnish

play01:26

hacker juhoy and we are going to take a

play01:29

look at how it works right now so let's

play01:32

jump into this and let's let's take a

play01:35

look at a simple ff scan so we're going

play01:38

to start off by typing of course fff

play01:40

and then we're going to supply a word

play01:42

list but this is a word list containing

play01:44

all the different words or

play01:47

things it's going to try to find

play01:50

i like to use cyclists for this which is

play01:52

a great compilation of all kinds of word

play01:54

lists and i have started git repository

play01:57

in slash opt set lists i'm going to look

play02:00

at discovery because i want to discover

play02:02

things and i want to discover some web

play02:04

content now there's a ton of web content

play02:07

in here as you can see

play02:08

but i like to use the raft

play02:12

and then let's use

play02:13

small directories in this case

play02:17

okay with our word list set we can use

play02:20

dash u to supply a url

play02:23

now i'm going to supply http s

play02:26

slash

play02:27

www.integrity.com

play02:32

and now i want to first end points that

play02:34

are that come after this

play02:36

this url so i'm going to type in capital

play02:38

letters slash first and that is how you

play02:40

define the place where ff is going to

play02:43

place your words in the word lists so ff

play02:46

is going to send a ton of http requests

play02:48

with this url always replacing first by

play02:51

the word in our word list and if i run

play02:53

this we will see that we get a ton of

play02:55

requests here and they all have the same

play02:58

size the same status of 200 the same

play03:01

amount of words and lines

play03:03

and this probably means that the

play03:04

integrity the back-end server or the

play03:06

server here

play03:08

sends a 200 status code even if it's not

play03:11

found because for example php underscore

play03:13

uploads baskets email templates those

play03:16

are probably not real endpoints here so

play03:18

what we can do now is we can filter out

play03:21

all the requests with this specific size

play03:24

and to do that we're gonna go to our

play03:26

original request again

play03:27

and i'm gonna

play03:29

do dash f for filter and then s for size

play03:34

we're going to filter things out based

play03:35

on size and i have to scroll up a bit to

play03:37

see the size here that was 2 2

play03:41

and 9 6 6 3 9 6 x 3 okay and now we can

play03:44

run that again and we see that we get

play03:46

some different results with different

play03:48

sizes and things that make way more

play03:51

sense for integrity such as uh programs

play03:54

obviously um

play03:56

so okay that's cool i'm gonna quit this

play03:57

scan now to ask to not overload the

play03:59

server of course

play04:02

uh right now we looked at this simple

play04:04

command that first end points we can

play04:07

obviously also first v hosts or

play04:10

posted and i'm gonna explain all of that

play04:12

and all these flags and how they work

play04:14

in a bit but you can obviously also run

play04:18

ff-h for the help

play04:21

and that will bring up all of the

play04:23

different options but i'm gonna explore

play04:25

some with you here in the next section

play04:28

here

play04:30

and let's look at some of these options

play04:32

first of all we're going to talk about

play04:33

some post request options because it's

play04:35

obviously very useful to try to first in

play04:38

post requests that can lead to idols to

play04:41

all kind of interesting things in apis

play04:43

for example

play04:45

first of all we're going to look at the

play04:46

dash capital x and that is

play04:49

a means for you to supply an http method

play04:52

so the default is get but you can also

play04:54

say post there and then the server or ff

play04:56

is going to send post requests to the

play04:58

server

play05:00

then you can also supply dash capital

play05:02

lowercase d rather and that is to supply

play05:05

some post data which is your json data

play05:08

or any other kind of data and this data

play05:10

can obviously include your first keyword

play05:12

which is going to be used to replace uh

play05:14

to put the things from your word list

play05:17

the words from your word list in so very

play05:20

useful if you want to first out post

play05:22

requests

play05:24

besides that you also have some what i

play05:26

like to call book bounty options these

play05:28

are options that you can use to adhere

play05:30

to the rules of a program uh things like

play05:32

dash t for the amount of threads that

play05:35

are being used and dash rate for the

play05:38

rate of requests per second because

play05:40

obviously you don't want to overload a

play05:41

program

play05:42

requests because you can imagine if 100

play05:45

researchers start doing that it will

play05:47

become very cumbersome for the program

play05:49

so adhere to the rules

play05:52

but besides that you can also set the

play05:53

dash capital h option to supply a header

play05:57

value this is gonna have a header

play06:00

injected in every request and the dash

play06:02

lowercase b option can be used to set

play06:04

some cookies

play06:06

so say cookie name equals value

play06:10

and that's it for the bug bounty options

play06:12

now let's take a look at some recursion

play06:14

and redirects now first of all with dash

play06:17

recursion you can say okay scan this

play06:19

recursively this is only going to work

play06:21

if your first word is at the end of the

play06:23

url so if you're fuzzing for directories

play06:25

or files and what ff is going to do is

play06:28

once it finds a valid or a working

play06:30

endpoint it's going to add another slash

play06:33

to that and add another first keyword to

play06:35

that and it's going to try to first that

play06:36

whole directory again then you can say

play06:38

okay if it's fine if it finds something

play06:40

there again it's going to do the same

play06:42

again and that way you can keep on

play06:44

recursively fuzzing into directory so

play06:46

that you found find every file that

play06:49

there is to be found on that server with

play06:51

dash recursion depth you can then set

play06:54

the depth that is going to be taken so

play06:56

if you only want to go into two

play06:57

directories and not into infinite amount

play06:59

of directories you can set the

play07:02

recursion depth to two

play07:05

then we can also talk about redirects

play07:07

and with dash r you can say that it's

play07:09

gonna follow redirects

play07:11

this can be very useful because

play07:12

obviously you are gonna get 301 status

play07:16

quotes back

play07:17

301 meaning redirect to a specific page

play07:19

and with this option it's going to

play07:21

actually follow that redirect so that

play07:22

you can you can see what it goes to

play07:26

but that's it for recursion and

play07:27

redirects now let's talk about matcher

play07:30

options now what are these these are

play07:32

options that are going to say okay if

play07:34

the answer that we get back so the

play07:36

response for a specific request if it

play07:39

matches one of these it's going to be

play07:41

shown so for example with dash mc we can

play07:45

match status codes so for example if we

play07:48

get a 200 bucks show it and by default

play07:51

you have 200 204 301 and so on all of

play07:54

these codes that are already being

play07:56

matched um besides that you can also say

play07:59

dash ml and that's going to say okay if

play08:01

if this amount these amount of lines

play08:03

that you supply so if you say okay 13

play08:05

lines

play08:06

if the server if ff gets a request back

play08:09

from the server that contains 13 lines

play08:11

and it's gonna show that entry in your

play08:14

list you can also use regex with dash m

play08:17

r uh the response size with dash m s and

play08:20

then the amount of words in the response

play08:22

with dash m w

play08:25

now that is matching but we can also

play08:28

filter out specific entries

play08:31

and for example you can filter out

play08:33

status quotes with dash fc

play08:35

uh if you say fc200 it will not show you

play08:38

any responses that have the status code

play08:41

200 you can do dash fl for lines dash fr

play08:45

to filter out

play08:46

based on specific regex and fs the one

play08:50

we used in the video

play08:51

to filter out specific response sizes as

play08:54

well as dash fw to filter out by the

play08:57

amount of words in a response

play09:01

now those were all the basic options

play09:03

that ff has to offer now there are more

play09:06

you can get really really

play09:08

granular with this tool so definitely

play09:10

check out the health help page and the

play09:13

github

play09:15

but that's all for now

play09:17

i hope ff is going to be your new tool

play09:20

of choice for fuzzing out

play09:22

your targets and making sure that you

play09:24

find every endpoint fee host

play09:26

post data item

play09:28

that you just found find everything and

play09:30

can test everything on a specific

play09:32

endpoint

play09:33

now i hope you enjoyed this enjoyed this

play09:36

video let us know what you think of it

play09:38

below in the comments like it if you

play09:40

like the video and also if you have any

play09:42

suggestions for tools that you would

play09:44

like to see us cover in the future then

play09:47

definitely comment those below as well

play09:50

that was it for the video i hope you

play09:51

enjoyed it and take care

play09:54

[Music]

Rate This

5.0 / 5 (0 votes)

相关标签
Fuzzingff ToolWeb SecurityAPI TestingHacking ToolsCybersecurityBug BountyEndpoint DiscoveryAutomated TestingPenetration Testing
您是否需要英文摘要?