Forwarded from Похек (Сергей Зыбнев)
Поиск неизвестных уязвимостей с помощью фаззинга Nuclei v3.2
#nuclei #projectdiscovery #fuzzing
🛠 Недавно была добавлена поддержка многих новых функций. Если пересказать кратко, то:
- Поддержка аутентификации
- Расширенная поддержка фаззинга
- Поддержка импорта HTTP-запросов (Burp, JSONL, MultiDoc YAML или генерация с помощью API схем OpenAPI, Swagger)
Пример:
- Поддержка LDAP
- И пачка bugfix'ов
В этом же посте мы разберём 2 и 3 пункты.
Пример запроса:
Практически каждое поле мы можем фаззить (query, path, header, cookie, body).
У нас есть некоторые правила, по которым мы можем это делать:
Возьмем за основу простую SQL инъекцию:
Если же мы импортируем запросы из BurpSuite к примеру, то нам не обойтись без фильтрации входящих запросов.
Для примера выберем тип DSL, но также существуют другие типы фильтров.
Возьмем для примера простую проверку на то, что body не пустой и метод POST,
В итоге мы можем собрать Франкенштейна:
Данный функционал будет полезен не только пентестерам, но и DevSecOps'у. К примеру первые могут импортировать в nuclei запросы из burp suite и их фаззить. А вторые могут импортировать API схемы и также фаззить.
➡️ Оригинал статьи
👍 Дополнительный материал:
- Дока по fuzzing'у
- Дока с примерами фаззинг шаблонов
- Дока по фильтрам
- Дока по экстракторам
p.s. надеюсь на вашу поддержку, я постарался над написанием этого поста ❤️
🌚 @poxek
#nuclei #projectdiscovery #fuzzing
- Поддержка аутентификации
- Расширенная поддержка фаззинга
- Поддержка импорта HTTP-запросов (Burp, JSONL, MultiDoc YAML или генерация с помощью API схем OpenAPI, Swagger)
Пример:
nuclei -l bugbounty-proxify.yaml -im yaml -t fuzz/- Поддержка LDAP
- И пачка bugfix'ов
В этом же посте мы разберём 2 и 3 пункты.
Пример запроса:
POST /reset-password?token=x0x0x0&source=app HTTP/1.1
Host: 127.0.0.1:8082
User-Agent: Go-http-client/1.1
Cookie: PHPSESSID=1234567890
Content-Length: 23
Content-Type: application/json
Accept-Encoding: gzip
Connection: close
{"password":"12345678"}
Практически каждое поле мы можем фаззить (query, path, header, cookie, body).
У нас есть некоторые правила, по которым мы можем это делать:
prefix - Добавить полезную нагрузку в качестве префикса к значениюpostfix - Добавить полезную нагрузку в качестве постфикса к значениюreplace - Заменить значение на полезную нагрузкуinfix - Добавить полезную нагрузку в качестве инфикса к значению (инфикс - это нагрузка, вставленная по середине значения)replace-regex - Заменить значение на нагрузку с помощью regexВозьмем за основу простую SQL инъекцию:
http:
...
payloads:
injection: # В этом разделе перечисляем полезные нагрузки
- "'"
...
fuzzing:
- part: query # Указываем какую часть запроса менять: query, path, header, cookie, body
type: postfix # Указываем одно из правил: prefix, postfix, replace, infix,replace-regex
mode: single # Указываем режим мутации: single, multiple
fuzz:
- '{{injection}}' # Переменная нагрузки
Если же мы импортируем запросы из BurpSuite к примеру, то нам не обойтись без фильтрации входящих запросов.
Для примера выберем тип DSL, но также существуют другие типы фильтров.
DSL - продвинутая фильтрация, с помощью, которой мы можем проверять длину запроса, статус код, хедеры, body и даже raw данные
Возьмем для примера простую проверку на то, что body не пустой и метод POST,
condition: and значит, что оба условия должны быть TRUE- filters:
- type: dsl
dsl:
- method == POST
- len(body) > 0
condition: and
В итоге мы можем собрать Франкенштейна:
http:
# в начале мы отсеиваем запросы по перечисленным параметрам
- filters:
- type: dsl
dsl:
- method == POST
- len(body) > 0
condition: and
# тут указываем полезные нагрузки
payloads:
injection:
- "'"
- "\""
- ";"
# fuzzing rules
fuzzing:
- part: body # Говорим нукле тыкать body
type: postfix # Добавляем нагрузку в конце значения
mode: single # Говорим добавлять нагрузку только 1 раз
fuzz:
- '{{injection}}' # Вызываем полезные нагрузки из переменной
Данный функционал будет полезен не только пентестерам, но и DevSecOps'у. К примеру первые могут импортировать в nuclei запросы из burp suite и их фаззить. А вторые могут импортировать API схемы и также фаззить.
- Дока по fuzzing'у
- Дока с примерами фаззинг шаблонов
- Дока по фильтрам
- Дока по экстракторам
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍5🔥5⚡2