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

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

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

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

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

Категории

Все категории
Loading categories
WAF-A-MoLE — Управляемый фаззер на основе мутаций для межсетевых экранов веб-приложений на основе машинного обучения | Kitploit
Инструменты/GitHubGitHub/avalz/waf-a-mole
Обход WAFВеб-безопасностьФаззингМашинное ОбучениеСостязательная Атака
GitHubavalz/waf-a-mole

WAF-A-MoLE

Управляемый фаззер на основе мутаций для межсетевых экранов веб-приложений на основе машинного обучения

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

Популярное

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

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

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

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

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

WAF-A-MoLE

Направляемый мутационный фаззер для ML-основанных межсетевых экранов веб-приложений (WAF), вдохновлённый AFL и основанный на FuzzingBook Андреаса Целлера и соавторов.

Принимая на вход SQL-инъекционный запрос, он пытается сгенерировать семантически инвариантный запрос, способный обойти целевой WAF. Этот инструмент можно использовать для оценки устойчивости вашего продукта, позволяя WAF-A-MoLE исследовать пространство решений и находить опасные «слепые зоны», не покрытые целевым классификатором.

Python Version License Documentation Status

Архитектура

WAF-A-MoLE Architecture

WAF-A-MoLE берёт начальную нагрузку и помещает её в пул нагрузок Pool, который управляет очередью с приоритетом, упорядоченной по оценке уверенности WAF в каждой нагрузке.

На каждой итерации начало пула нагрузок передаётся Fuzzer, где оно случайным образом мутируется путём применения одного из доступных операторов мутации.

Операторы мутации

Операторы мутации все сохраняют семантику и используют высокую выразительную силу языка SQL (в этой версии — MySQL).

Ниже приведены операторы мутации, доступные в текущей версии WAF-A-MoLE.

МутацияПример
Case Swappingadmin' OR 1=1# ⇒ admin' oR 1=1#
Whitespace Substitutionadmin' OR 1=1# ⇒ admin'\t\rOR\n1=1#
Comment Injectionadmin' OR 1=1# ⇒ admin'/**/OR 1=1#
Comment Rewritingadmin'/**/OR 1=1# ⇒ admin'/*xyz*/OR 1=1#abc
Integer Encodingadmin' OR 1=1# ⇒ admin' OR 0x1=(SELECT 1)#
Operator Swappingadmin' OR 1=1# ⇒ admin' OR 1 LIKE 1#
Logical Invariantadmin' OR 1=1# ⇒ admin' OR 1=1 AND 0<1#
Number Shufflingadmin' OR 1=1# ⇒ admin' OR 2=2#

Как цитировать

WAF-A-MoLE реализует методологию, представленную в статье «WAF-A-MoLE: Evading Web Application Firewalls through Adversarial Machine Learning». Препринт нашей статьи также доступен на arXiv.

Если вы хотите сослаться на нас, используйте следующую ссылку (BibTeX):

@inproceedings{demetrio20wafamole,
  title={WAF-A-MoLE: evading web application firewalls through adversarial machine learning},
  author={Demetrio, Luca and Valenza, Andrea and Costa, Gabriele and Lagorio, Giovanni},
  booktitle={Proceedings of the 35th Annual ACM Symposium on Applied Computing},
  pages={1745--1752},
  year={2020}
}

Запуск WAF-A-MoLE

Предварительные требования

  • numpy
  • keras
  • scikit-learn
  • joblib
  • sqlparse
  • networkx
  • Click

Установка

pip install -r requirements.txt

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

Вы можете оценить устойчивость собственного WAF или опробовать WAF-A-MoLE на некоторых примерах классификаторов. В первом случае ознакомьтесь с классом Model. Ваша пользовательская модель должна реализовывать этот класс, чтобы WAF-A-MoLE мог её оценить. Мы уже предоставили обёртки для классификаторов sci-kit learn и keras, которые можно расширить для соответствия вашему этапу извлечения признаков (если таковой имеется).

Справка

wafamole --help

Usage: wafamole [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  evade  Launch WAF-A-MoLE against a target classifier.

wafamole evade --help

Usage: wafamole evade [OPTIONS] MODEL_PATH PAYLOAD

  Launch WAF-A-MoLE against a target classifier.

Options:
  -T, --model-type TEXT     Type of classifier to load
  -t, --timeout INTEGER     Timeout when evading the model
  -r, --max-rounds INTEGER  Maximum number of fuzzing rounds
  -s, --round-size INTEGER  Fuzzing step size for each round (parallel fuzzing
                            steps)
  --threshold FLOAT         Classification threshold of the target WAF [0.5]
  --random-engine TEXT      Use random transformations instead of evolution
                            engine. Set the number of trials
  --output-path TEXT        Location were to save the results of the random
                            engine. NOT USED WITH REGULAR EVOLUTION ENGINE
  --help                    Show this message and exit.

Обход примеров моделей

Мы предоставляем несколько предварительно обученных моделей, с которыми можно поиграть; они находятся в wafamole/models/custom/example_models. Использованные классификаторы перечислены в таблице ниже.

Название классификатораАлгоритм
WafBrainRecurrent Neural Network
ML-Based-WAFNon-Linear SVM
ML-Based-WAFStochastic Gradient Descent
ML-Based-WAFAdaBoost
Token-basedNaive Bayes
Token-basedRandom Forest
Token-basedLinear SVM
Token-basedGaussian SVM
SQLiGoT - Directed ProportionalGaussian SVM
SQLiGoT - Directed UnproportionalGaussian SVM
SQLiGoT - Undirected ProportionalGaussian SVM
SQLiGoT - Undirected UnproportionalGaussian SVM

В дополнение к ML-основанным WAF, WAF-a-MoLE также поддерживает WAF на основе правил. В частности, предоставляется обёртка для WAF ModSecurity, оснащённого OWASP Core Rule Set (CRS), на основе проекта pymodsecurity.

WAF-BRAIN - Recurrent Neural Newtork

Обход предварительно обученного классификатора WAF-Brain с использованием эквивалента admin' OR 1=1#.

wafamole evade --model-type waf-brain wafamole/models/custom/example_models/waf-brain.h5  "admin' OR 1=1#"

ML-Based-WAF - Non-Linear SVM (с оригинальным набором данных WAF-A-MoLE)

Обход предварительно обученного классификатора ML-Based-WAF SVM с использованием эквивалента admin' OR 1=1#.

wafamole evade --model-type mlbasedwaf wafamole/models/custom/example_models/mlbasedwaf_svc.dump  "admin' OR 1=1#"

ML-Based-WAF - Non-Linear SVM (с наборами данных SQLiV5/SQLiV3)

Обход предварительно обученного классификатора ML-Based-WAF SVM с использованием эквивалента admin' OR 1=1#. Обратите внимание: SQLiV5 — это набор данных, полученный из Kaggle и дополненный серией запросов, сгенерированных самим WAF-A-MoLE, в качестве доказательства концепции того, что запросы WAF-A-MoLE могут повысить устойчивость WAF при повторном обучении. Используйте mlbasedwaf_svc_sqliv3.dump для обхода WAF, обученного на оригинальном наборе данных Kaggle (SQLiV3).

wafamole evade --model-type mlbasedwaf wafamole/models/custom/example_models/mlbasedwaf_svc_sqliv5.dump  "admin' OR 1=1#"
Скачать инструмент