Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
ftw — Фреймворк для тестирования WAF (FTW!) | Kitploit
Инструменты/GitHubGitHub/fastly/ftw
Сканеры уязвимостейОбход WAFВеб-безопасностьТестирование на ПроникновениеDevSecOpsArchived
GitHubfastly/ftw

ftw

Фреймворк для тестирования WAF (FTW!)

Репозиторий
263583 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Framework for Testing WAFs (FTW)

Build Status

Назначение

Этот проект был создан исследователями из ModSecurity и Fastly для обеспечения строгих тестов правил WAF. В нем используется OWASP Core Ruleset V3 в качестве базового набора для тестирования правил на WAF. Каждое правило из набора загружается в YAML-файл, который отправляет HTTP-запросы, вызывающие эти правила.

Цели / сценарии использования включают:

  • Поиск регрессий в развертываниях WAF с помощью непрерывной интеграции и выполнения повторяемых атак на WAF.
  • Предоставление тестового фреймворка для новых правил в ModSecurity: если правило отправляется, ОБЯЗАТЕЛЬНО должны быть соответствующие положительные и отрицательные тесты.
  • Оценка WAF на основе общего согласованного базового набора правил (OWASP).
  • Тестирование и проверка пользовательских правил для WAF, не входящих в основной набор правил.

Установка

  • git clone [email protected]:fastly/ftw.git
  • cd ftw
  • Убедитесь, что pip установлен: apt-get install python-pip
  • pip install -r requirements.txt

Запуск тестов только с проверкой содержимого HTML и кода состояния

  • Создайте YAML-файлы, указывающие на ваш веб-сервер с WAF перед ним.
  • py.test test/test_default.py --ruledir test/yaml

Подготовка Apache+Modsecurity+OWASP CRS

Если вам нужна среда для тестирования правил WAF, была создана среда с Apache, Modsecurity и версией 3.0.0 основного набора правил OWASP. Ее можно развернуть следующим образом:

  • Клонирование репозитория: git clone https://github.com/fastly/waf_testbed.git
  • Выполнение vagrant up

Запуск тестов с переопределением адреса назначения в YAML-файлах на пользовательский домен

  • запустите ваш тестовый веб-сервер
  • py.test test/test_default.py --ruledir=test/yaml --destaddr=domain.com --port 443 --protocol https

Запуск интеграционного теста, локальный веб-сервер, может потребоваться sudo

  • py.test test/integration/test_logcontains.py -s --ruledir=test/integration/

КАК ИНТЕГРИРОВАТЬ ЛОГИ

  1. Создайте файл *.py с необходимыми импортами. Пример приведен в test/integration/test_logcontains.py.
  2. Все функции, начинающиеся с test*, будут выполнены py.test, поэтому создайте функцию def test_somewaf.
  3. Реализуйте класс, наследующий LogChecker.
    1. Реализуйте функцию get_logs(). FTW вызовет эту функцию после выполнения теста и установит значения datetime self.start и self.end.
    2. Используйте информацию из переменных datetime для извлечения файлов из вашего WAF (будь то файл или вызов API).
    3. Получите логи, сохраните их в массив строк и верните из get_logs().
  4. Используйте py.test fixtures. Примените декоратор функции @pytest.fixture, верните ваш новый объект . Всякий раз, когда вы используете аргумент функции в тестах, имя которого совпадает с именем , объект будет создан, и тесты будет проще запускать. Пример этого приведен в файле Python из шага 1.

Выполнение HTTP-запросов программно

Хотя предпочтительнее отправлять запросы с помощью формата YAML, часто автоматизированные тесты требуют выполнения множества динамических запросов. В таком случае рекомендуется использовать фреймворк py.test для создания тестовых случаев, которые могут выполняться как часть общего набора. В общем, выполнение HTTP-запроса просто:

  1. Создайте экземпляр класса HttpUA().
  2. Создайте экземпляр класса Input(), указав любые параметры, которые вы не хотите устанавливать по умолчанию.
  3. Передайте экземпляр класса Input в HttpUA.send_request().

Некоторые примеры см. в тестах интеграции http

Скачать инструмент
LogChecker
@pytest.fixture
  • Напишите конфигурацию тестирования в формате *.yaml, как показано в test/integration/LOGCONTAINSFIXTURE.yaml. Строка log_contains требует строку, которая является регулярным выражением. FTW скомпилирует строку log_contains из каждого этапа YAML-файла в регулярное выражение. Затем это регулярное выражение будет использоваться вместе со строками логов, переданными из get_logs(), для поиска совпадений. Строка log_contains должна быть уникальным идентификатором правила, так как FTW жаден и будет передавать первое совпадение. Ложные срабатывания смягчаются временем начала/окончания, переданным объекту LogChecker, но лучше перестраховаться и использовать уникальные регулярные выражения.
  • Для каждого этапа вызывается функция get_logs(), поэтому обязательно учитывайте вызовы API, если вы получаете логи таким образом.