mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 14:40:37 +00:00
351 lines
30 KiB
Markdown
351 lines
30 KiB
Markdown
# 웹 도구 - WFuzz
|
|
|
|
<details>
|
|
|
|
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
|
|
|
|
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을 제출하여 **해킹 기교를 공유**하세요.
|
|
|
|
</details>
|
|
|
|
웹 애플리케이션을 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 \<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
|
|
도움말 메시지를 표시하고 종료합니다. 이 옵션은 사용 가능한 모든 출력 옵션에 대한 정보를 제공합니다.
|
|
```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,<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 매개변수 워드리스트](https://raw.githubusercontent.com/s0md3v/Arjun/master/arjun/db/params.txt)
|
|
```
|
|
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을 통해 전달하는 데 사용됩니다. 이들은 종종 애플리케이션 내에서 특정 리소스나 동작을 지정하는 데 사용됩니다. 경로 매개변수 브루트 포싱은 해커들이 경로 매개변수에 대해 다른 값들을 체계적으로 테스트하여 숨겨진 또는 취약한 리소스를 발견하는 기술입니다.
|
|
```bash
|
|
wfuzz -c -w ~/git/Arjun/db/params.txt --hw 11 'http://example.com/path%3BFUZZ=FUZZ'
|
|
```
|
|
### 헤더 인증
|
|
|
|
#### **기본, 2개의 목록, 필터 문자열 (표시), 프록시**
|
|
```bash
|
|
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는 프록시를 사용하여 트래픽을 중계할 수 있습니다. 이를 통해 테스트 중에 트래픽을 모니터링하거나 조작할 수 있습니다.
|
|
```bash
|
|
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 브루트)
|
|
|
|
#### **쿠키, 필터 코드 (표시), 프록시**
|
|
```bash
|
|
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.
|
|
```bash
|
|
wfuzz -c -w user-agents.txt -p 127.0.0.1:8080:HTTP --ss "Welcome " -H "User-Agent: FUZZ" "http://example.com/index.php"
|
|
```
|
|
#### **호스트**
|
|
```bash
|
|
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.
|
|
```bash
|
|
wfuzz -c -w methods.txt -p 127.0.0.1:8080:HTTP --sc 200 -X FUZZ "http://example.com/index.php"
|
|
```
|
|
#### **인라인 리스트 사용하기**
|
|
```bash
|
|
$ wfuzz -z list,GET-HEAD-POST-TRACE-OPTIONS -X FUZZ http://testphp.vulnweb.com/
|
|
```
|
|
### 디렉토리 및 파일 무차별 대입 공격
|
|
|
|
웹 애플리케이션의 디렉토리와 파일을 무차별 대입 공격을 통해 찾을 수 있습니다. 이는 웹 서버에 존재하는 숨겨진 디렉토리와 파일을 탐색하는 데 사용됩니다. 이를 통해 웹 애플리케이션의 보안 취약점을 찾을 수 있습니다.
|
|
|
|
#### wfuzz를 사용한 디렉토리 및 파일 무차별 대입 공격
|
|
|
|
wfuzz는 웹 애플리케이션의 디렉토리와 파일을 무차별 대입 공격하기 위한 강력한 도구입니다. 다음은 wfuzz를 사용하여 디렉토리와 파일을 무차별 대입 공격하는 방법입니다.
|
|
|
|
```plaintext
|
|
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를 사용하여 파일 확장자를 무차별 대입 공격하는 것도 가능합니다. 다음은 파일 확장자를 무차별 대입 공격하는 방법입니다.
|
|
|
|
```plaintext
|
|
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를 사용하여 디렉토리와 파일을 무차별 대입 공격하는 것은 웹 애플리케이션의 보안 취약점을 찾는 데 유용한 기술입니다. 그러나 합법적인 목적으로만 사용해야 하며, 권한이 없는 시스템에 대한 공격은 불법입니다.
|
|
```bash
|
|
#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](https://github.com/carlospolop/fuzzhttpbypass)
|
|
|
|
<details>
|
|
|
|
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
|
|
|
|
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)을 **팔로우**하세요.
|
|
* **Hacking 트릭을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks)와 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소에 PR을 제출하세요.
|
|
|
|
</details>
|