hacktricks/pentesting-web/web-tool-wfuzz.md
2024-02-10 21:30:13 +00:00

30 KiB

웹 도구 - WFuzz

htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!

HackTricks를 지원하는 다른 방법:

웹 애플리케이션을 FUZZ하는 도구입니다.

Wfuzz는 웹 애플리케이션 평가 작업을 용이하게 하기 위해 만들어졌으며, 간단한 개념에 기반합니다: 주어진 payload의 값으로 FUZZ 키워드에 대한 참조를 대체합니다.

설치

Kali에 설치됨

Github: https://github.com/xmendez/wfuzz

pip install wfuzz

필터링 옵션

-c, --code

  • 응답 코드로 필터링합니다. 예를 들어, -c 200,301,403은 200, 301, 403 응답 코드를 가진 요청만 표시합니다.

-w, --wordlist

  • 응답에서 특정 단어로 필터링합니다. 예를 들어, -w "error,invalid"은 응답에서 "error" 또는 "invalid" 단어를 포함하는 요청만 표시합니다.

-r, --regex

  • 정규 표현식을 사용하여 응답을 필터링합니다. 예를 들어, -r "^[0-9]{3}$"은 세 자리 숫자로 이루어진 응답 코드만 표시합니다.

-s, --size

  • 응답 크기로 필터링합니다. 예를 들어, -s 200,500은 200바이트에서 500바이트 사이의 응답만 표시합니다.

-e, --exclude

  • 특정 단어를 제외한 응답을 필터링합니다. 예를 들어, -e "error,invalid"은 응답에서 "error" 또는 "invalid" 단어를 포함하지 않는 요청만 표시합니다.

-x, --exclude-code

  • 특정 응답 코드를 제외한 응답을 필터링합니다. 예를 들어, -x 404,500은 404 또는 500 응답 코드를 가진 요청을 제외한 모든 요청을 표시합니다.

-m, --multiple

  • 여러 필터링 옵션을 동시에 사용합니다. 예를 들어, -m "-c 200,301 -w error"은 200 또는 301 응답 코드를 가지고 "error" 단어를 포함하는 요청만 표시합니다.
--hs/ss "regex" #Hide/Show
#Simple example, match a string: "Invalid username"
#Regex example: "Invalid *"

--hc/sc CODE #Hide/Show by code in response
--hl/sl NUM #Hide/Show by number of lines in response
--hw/sw NUM #Hide/Show by number of words in response
--hh/sh NUM #Hide/Show by number of chars in response
--hc/sc NUM #Hide/Show by response code

출력 옵션

wfuzz provides several options to control the output format and content. These options can be used to customize the output according to your needs.

-o, --output <file>

Specify the output file where the results will be saved. By default, the results are printed on the standard output.

-f, --filter <expression>

Filter the output based on a specific expression. Only the results that match the expression will be displayed.

-s, --saveoutput <expression>

Save the output of a specific expression to a file. This can be useful when you want to save only certain parts of the output.

-c, --csv

Save the output in CSV format. This is useful when you want to import the results into a spreadsheet or another tool that supports CSV files.

-d, --delimiter <delimiter>

Specify the delimiter to be used in the CSV output. The default delimiter is a comma (,).

-t, --template <template>

Specify a custom output template. This allows you to define your own format for the output.

-v, --verbose

Display verbose output. This option provides more detailed information about the requests and responses.

-q, --quiet

Suppress all output except for the results. This option is useful when you want to minimize the amount of output displayed.

-h, --help

Display the help message and exit. This option provides information about all the available output options.

wfuzz는 출력 형식과 내용을 제어하기 위해 여러 옵션을 제공합니다. 이러한 옵션을 사용하여 출력을 필요에 맞게 사용자 정의할 수 있습니다.

-o, --output <file>

결과가 저장될 출력 파일을 지정합니다. 기본적으로 결과는 표준 출력에 출력됩니다.

-f, --filter <expression>

특정 표현식을 기반으로 출력을 필터링합니다. 표현식과 일치하는 결과만 표시됩니다.

-s, --saveoutput <expression>

특정 표현식의 출력을 파일로 저장합니다. 출력의 특정 부분만 저장하고 싶을 때 유용합니다.

-c, --csv

출력을 CSV 형식으로 저장합니다. 이는 결과를 스프레드시트나 CSV 파일을 지원하는 다른 도구로 가져오고자 할 때 유용합니다.

-d, --delimiter <delimiter>

CSV 출력에서 사용할 구분자를 지정합니다. 기본 구분자는 쉼표(,)입니다.

-t, --template <template>

사용자 정의 출력 템플릿을 지정합니다. 이를 통해 출력의 형식을 직접 정의할 수 있습니다.

-v, --verbose

자세한 출력을 표시합니다. 이 옵션은 요청과 응답에 대한 더 많은 정보를 제공합니다.

-q, --quiet

결과를 제외한 모든 출력을 억제합니다. 출력 양을 최소화하고자 할 때 유용합니다.

-h, --help

도움말 메시지를 표시하고 종료합니다. 이 옵션은 사용 가능한 모든 출력 옵션에 대한 정보를 제공합니다.

wfuzz -e printers #Prints the available output formats
-f /tmp/output,csv #Saves the output in that location in csv format

인코더 옵션

There are several encoder options available in wfuzz that can be used to modify the payload sent in requests. These options can help in bypassing certain security measures or evading detection. The following are the available encoder options:

  • URL Encoding: This option is used to encode special characters in the URL. It can be enabled using the --urlencode flag.

  • HTML Encoding: This option is used to encode special characters in HTML format. It can be enabled using the --html-encode flag.

  • Base64 Encoding: This option is used to encode the payload in Base64 format. It can be enabled using the --base64 flag.

  • Hex Encoding: This option is used to encode the payload in hexadecimal format. It can be enabled using the --hex flag.

  • UTF-8 Encoding: This option is used to encode the payload in UTF-8 format. It can be enabled using the --utf8 flag.

  • Double URL Encoding: This option is used to perform double URL encoding on the payload. It can be enabled using the --double-urlencode flag.

  • Unicode Encoding: This option is used to encode the payload in Unicode format. It can be enabled using the --unicode flag.

  • Mixed Encoding: This option is used to perform a combination of different encodings on the payload. It can be enabled using the --mixed flag.

These encoder options can be used to obfuscate the payload and make it more difficult to detect or exploit.

wfuzz -e encoders #Prints the available encoders
#Examples: urlencode, md5, base64, hexlify, uri_hex, doble urlencode

인코더를 사용하려면 "-w" 또는 "-z" 옵션에서 지정해야 합니다.

예시:

-z file,/path/to/file,md5 #Will use a list inside the file, and will transform each value into its md5 hash before sending it
-w /path/to/file,base64 #Will use a list, and transform to base64
-z list,each-element-here,hexlify #Inline list and to hex before sending values

치트시트

로그인 양식 무차별 대입

POST, 단일 목록, 문자열 필터링 (숨김)

wfuzz -c -w users.txt --hs "Login name" -d "name=FUZZ&password=FUZZ&autologin=1&enter=Sign+in" http://zipper.htb/zabbix/index.php
#Here we have filtered by line

POST, 2 목록, 필터 코드 (표시)

wfuzz.py -c -z file,users.txt -z file,pass.txt --sc 200 -d "name=FUZZ&password=FUZ2Z&autologin=1&enter=Sign+in" http://zipper.htb/zabbix/index.php
#Here we have filtered by code

GET, 2 목록, 문자열 필터 (표시), 프록시, 쿠키


wfuzz

wfuzz는 웹 응용 프로그램의 디렉토리, 파일, vhost, 파라미터 및 HTTP 프로토콜의 다른 부분에 대한 Fuzzing을 수행하는 도구입니다. wfuzz는 웹 응용 프로그램의 취약점을 찾는 데 사용될 수 있습니다.

wfuzz 사용법
wfuzz -z file,<wordlist> -u <target_url> -H "Cookie: <cookie_value>" -p <proxy> --hc <http_status_code> --hh <http_header> --hl <http_length> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length> --hc <http_code> --hh <http_header> --hs <http_string> --hw <http_word> --hl <http_length>
```bash
wfuzz -c -w users.txt -w pass.txt --ss "Welcome " -p 127.0.0.1:8080:HTTP -b "PHPSESSIONID=1234567890abcdef;customcookie=hey" "http://example.com/index.php?username=FUZZ&password=FUZ2Z&action=sign+in"

디렉토리 브루트포스/RESTful 브루트포스

Arjun 매개변수 워드리스트

wfuzz -c -w /tmp/tmp/params.txt --hc 404 https://domain.com/api/FUZZ

경로 매개변수 BF

Path parameters are used in web applications to pass data through the URL. They are often used to specify a specific resource or action within the application. Path parameter brute forcing is a technique used by hackers to discover hidden or vulnerable resources by systematically testing different values for the path parameters.

경로 매개변수는 웹 애플리케이션에서 데이터를 URL을 통해 전달하는 데 사용됩니다. 이들은 종종 애플리케이션 내에서 특정 리소스나 동작을 지정하는 데 사용됩니다. 경로 매개변수 브루트 포싱은 해커들이 경로 매개변수에 대해 다른 값들을 체계적으로 테스트하여 숨겨진 또는 취약한 리소스를 발견하는 기술입니다.

wfuzz -c -w ~/git/Arjun/db/params.txt --hw 11 'http://example.com/path%3BFUZZ=FUZZ'

헤더 인증

기본, 2개의 목록, 필터 문자열 (표시), 프록시

wfuzz -c -w users.txt -w pass.txt -p 127.0.0.1:8080:HTTP --ss "Welcome" --basic FUZZ:FUZ2Z "http://example.com/index.php"

NTLM, 2개의 리스트, 필터 문자열 (표시), 프록시


NTLM

NTLM은 Windows 운영 체제에서 사용되는 인증 프로토콜입니다. WFuzz는 NTLM 인증을 테스트하기 위해 사용될 수 있습니다.

2개의 리스트

WFuzz는 두 개의 리스트를 사용하여 테스트를 수행할 수 있습니다. 첫 번째 리스트는 사용자 이름 목록이고, 두 번째 리스트는 비밀번호 목록입니다.

필터 문자열 (표시)

필터 문자열을 사용하면 특정 조건을 충족하는 결과만 표시할 수 있습니다. 이를 통해 테스트 결과를 정리하고 분석할 수 있습니다.

프록시

WFuzz는 프록시를 사용하여 트래픽을 중계할 수 있습니다. 이를 통해 테스트 중에 트래픽을 모니터링하거나 조작할 수 있습니다.

wfuzz -c -w users.txt -w pass.txt -p 127.0.0.1:8080:HTTP --ss "Welcome" --ntlm 'domain\FUZZ:FUZ2Z' "http://example.com/index.php"

쿠키/헤더 브루트포스 (vhost 브루트)

쿠키, 필터 코드 (표시), 프록시

wfuzz -c -w users.txt -p 127.0.0.1:8080:HTTP --ss "Welcome " -H "Cookie:id=1312321&user=FUZZ"  "http://example.com/index.php"

User-Agent, 필터 코드 (숨기기), 프록시

  • The User-Agent header is used by web servers to identify the client making the request. It contains information about the client's operating system, browser, and other relevant details. In some cases, modifying the User-Agent can help bypass certain restrictions or filters.

  • Wfuzz allows you to set a custom User-Agent using the --ua option. For example, you can use a User-Agent string that mimics a different browser or operating system to evade detection or bypass certain filters.

  • Additionally, you can use filter codes in Wfuzz to hide specific responses from the output. Filter codes are used to define conditions that must be met for a response to be displayed. For example, you can use a filter code to hide responses that contain certain keywords or status codes.

  • To use a filter code, you need to specify it using the --filter option followed by the condition. For example, --filter "not contains 'error'" will hide any responses that contain the word "error".

  • Wfuzz also supports the use of proxies to route your requests through different IP addresses. This can be useful for bypassing IP-based restrictions or for anonymizing your traffic. You can specify a proxy using the --proxy option followed by the proxy address.

  • For example, --proxy http://127.0.0.1:8080 will route your requests through a proxy running on 127.0.0.1 and listening on port 8080.

  • By combining the use of custom User-Agent strings, filter codes, and proxies, you can enhance your ability to evade detection and bypass filters during web application testing.

wfuzz -c -w user-agents.txt -p 127.0.0.1:8080:HTTP --ss "Welcome " -H "User-Agent: FUZZ"  "http://example.com/index.php"

호스트

wfuzz -c -w /usr/share/wordlists/SecLists/Discovery/DNS/subdomains-
top1million-20000.txt --hc 400,404,403 -H "Host: FUZZ.example.com" -u
http://example.com -t 100

파일 사용

wfuzz can be used to brute force HTTP verbs (methods) by specifying a file containing a list of verbs to test. This can be useful for identifying hidden or misconfigured endpoints that respond differently to different HTTP methods.

To use a file for HTTP verb brute forcing, create a text file and list the HTTP verbs you want to test, one per line. For example:

GET
POST
PUT
DELETE

Save the file with a .txt extension, such as verbs.txt.

Then, use the -z option in wfuzz to specify the file containing the verbs:

wfuzz -z file,verbs.txt ...

This will instruct wfuzz to iterate through each verb in the file and send requests using that verb. By analyzing the responses, you can identify any differences in behavior based on the HTTP method used.

Keep in mind that brute forcing HTTP verbs can be time-consuming and may generate a large number of requests. It is important to use this technique responsibly and with proper authorization.

wfuzz -c -w methods.txt -p 127.0.0.1:8080:HTTP --sc 200 -X FUZZ "http://example.com/index.php"

인라인 리스트 사용하기

$ wfuzz -z list,GET-HEAD-POST-TRACE-OPTIONS -X FUZZ http://testphp.vulnweb.com/

디렉토리 및 파일 무차별 대입 공격

웹 애플리케이션의 디렉토리와 파일을 무차별 대입 공격을 통해 찾을 수 있습니다. 이는 웹 서버에 존재하는 숨겨진 디렉토리와 파일을 탐색하는 데 사용됩니다. 이를 통해 웹 애플리케이션의 보안 취약점을 찾을 수 있습니다.

wfuzz를 사용한 디렉토리 및 파일 무차별 대입 공격

wfuzz는 웹 애플리케이션의 디렉토리와 파일을 무차별 대입 공격하기 위한 강력한 도구입니다. 다음은 wfuzz를 사용하여 디렉토리와 파일을 무차별 대입 공격하는 방법입니다.

wfuzz -c -z file,/usr/share/wordlists/dirb/common.txt --hc 404 http://example.com/FUZZ

위의 명령은 /usr/share/wordlists/dirb/common.txt 파일의 각 줄을 FUZZ로 대체하여 http://example.com/FUZZ에 요청을 보냅니다. 만약 404 응답을 받으면 해당 디렉토리 또는 파일이 존재하지 않는 것으로 간주됩니다.

wfuzz를 사용한 파일 확장자 무차별 대입 공격

wfuzz를 사용하여 파일 확장자를 무차별 대입 공격하는 것도 가능합니다. 다음은 파일 확장자를 무차별 대입 공격하는 방법입니다.

wfuzz -c -z file,/usr/share/wordlists/dirb/extensions_common.txt --hc 404 http://example.com/test.FUZZ

위의 명령은 /usr/share/wordlists/dirb/extensions_common.txt 파일의 각 줄을 FUZZ로 대체하여 http://example.com/test.FUZZ에 요청을 보냅니다. 만약 404 응답을 받으면 해당 확장자를 가진 파일이 존재하지 않는 것으로 간주됩니다.

wfuzz를 사용한 디렉토리와 파일 무차별 대입 공격의 결과 분석

wfuzz를 사용하여 디렉토리와 파일을 무차별 대입 공격한 후에는 결과를 분석해야 합니다. 이를 통해 웹 애플리케이션의 보안 취약점을 발견할 수 있습니다. 다음은 wfuzz 결과를 분석하는 방법입니다.

  • 200 OK 응답: 해당 디렉토리 또는 파일이 존재함을 나타냅니다.
  • 403 Forbidden 응답: 해당 디렉토리 또는 파일에 대한 액세스 권한이 없음을 나타냅니다.
  • 301/302 Redirect 응답: 해당 디렉토리 또는 파일이 다른 위치로 리디렉션됨을 나타냅니다.
  • 500 Internal Server Error 응답: 서버에서 오류가 발생함을 나타냅니다.

wfuzz를 사용하여 디렉토리와 파일을 무차별 대입 공격하는 것은 웹 애플리케이션의 보안 취약점을 찾는 데 유용한 기술입니다. 그러나 합법적인 목적으로만 사용해야 하며, 권한이 없는 시스템에 대한 공격은 불법입니다.

#Filter by whitelisting codes
wfuzz -c -z file,/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --sc 200,202,204,301,302,307,403 http://example.com/uploads/FUZZ

웹 우회를 위한 도구

https://github.com/carlospolop/fuzzhttpbypass

htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!

HackTricks를 지원하는 다른 방법: