# 웹 도구 - WFuzz
htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!
HackTricks를 지원하는 다른 방법:
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요. 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)을 **팔로우**하세요.
* **HackTricks**와 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 기교를 공유**하세요.
웹 애플리케이션을 FUZZ하는 도구입니다.
> [Wfuzz](https://github.com/xmendez/wfuzz)는 웹 애플리케이션 평가 작업을 용이하게 하기 위해 만들어졌으며, 간단한 개념에 기반합니다: 주어진 payload의 값으로 FUZZ 키워드에 대한 참조를 대체합니다.
## 설치
Kali에 설치됨
Github: [https://github.com/xmendez/wfuzz](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" 단어를 포함하는 요청만 표시합니다.
```bash
--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 \
Specify the output file where the results will be saved. By default, the results are printed on the standard output.
### -f, --filter \
Filter the output based on a specific expression. Only the results that match the expression will be displayed.
### -s, --saveoutput \
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 \
Specify the delimiter to be used in the CSV output. The default delimiter is a comma (,).
### -t, --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 \
결과가 저장될 출력 파일을 지정합니다. 기본적으로 결과는 표준 출력에 출력됩니다.
### -f, --filter \
특정 표현식을 기반으로 출력을 필터링합니다. 표현식과 일치하는 결과만 표시됩니다.
### -s, --saveoutput \
특정 표현식의 출력을 파일로 저장합니다. 출력의 특정 부분만 저장하고 싶을 때 유용합니다.
### -c, --csv
출력을 CSV 형식으로 저장합니다. 이는 결과를 스프레드시트나 CSV 파일을 지원하는 다른 도구로 가져오고자 할 때 유용합니다.
### -d, --delimiter \
CSV 출력에서 사용할 구분자를 지정합니다. 기본 구분자는 쉼표(,)입니다.
### -t, --template \
사용자 정의 출력 템플릿을 지정합니다. 이를 통해 출력의 형식을 직접 정의할 수 있습니다.
### -v, --verbose
자세한 출력을 표시합니다. 이 옵션은 요청과 응답에 대한 더 많은 정보를 제공합니다.
### -q, --quiet
결과를 제외한 모든 출력을 억제합니다. 출력 양을 최소화하고자 할 때 유용합니다.
### -h, --help
도움말 메시지를 표시하고 종료합니다. 이 옵션은 사용 가능한 모든 출력 옵션에 대한 정보를 제공합니다.
```bash
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.
```bash
wfuzz -e encoders #Prints the available encoders
#Examples: urlencode, md5, base64, hexlify, uri_hex, doble urlencode
```
인코더를 사용하려면 **"-w"** 또는 **"-z"** 옵션에서 지정해야 합니다.
예시:
```bash
-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, 단일 목록, 문자열 필터링 (숨김)**
```bash
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 목록, 필터 코드 (표시)**
```bash
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, -u -H "Cookie: " -p --hc --hh --hl --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl --hc --hh --hs --hw --hl