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

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

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

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

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

Категории

Все категории
Loading categories
wafparan01d3 — Quick WAF "paranoid" Doctor Evaluation | WAFPARAN01D3 Tool | Kitploit
Инструменты/GitHubGitHub/alt3kx/wafparan01d3
Defensive ToolsScripting & AutomationConfiguration AuditingWeb SecurityPenetration Testing
GitHubalt3kx/wafparan01d3

wafparan01d3

Quick WAF "paranoid" Doctor Evaluation | WAFPARAN01D3 Tool

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

Популярное

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

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

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

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

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

Быстрая оценка WAF «параноидальным» доктором

wafparano1d3
WAFPARAN01D3

Инструмент для тестирования уровня паранойи Web Application Firewall.
— От alt3kx.github.io

Введение в уровни паранойи

По сути, уровень паранойи (PL) позволяет определить, насколько агрессивным является базовый набор правил (Core Rule Set).
Ссылка: https://coreruleset.org/20211028/working-with-paranoia-levels/

Как это работает

  • Python3-скрипт wafparan01d3.py отправляет вредоносные запросы, используя закодированные полезные нагрузки, размещённые в различных частях HTTP-запросов на основе GET-параметров. Результаты оценки записываются в отладочный файл отчёта wafparan01d3.log, создаваемый на вашей машине.
  • Наблюдайте за поведением и ответом для каждого уровня паранойи WAF, задавая различные атаки или полезные нагрузки с помощью уровня конфигурации по умолчанию.
  • Приведённый ниже PoC обеспечивает базовую установку и настройку с нуля, а также повторное использование текущего развёрнутого WAF путём настройки базового «Mock» и имитации серверной части (backend).
  • Доступная по умолчанию полезная нагрузка называется mysql_gosecure.txt и основана на исследовании «A Scientific Notation Bug in MySQL left AWS WAF Clients Vulnerable to SQL Injection» от gosecure, доступном здесь: https://www.gosecure.net/blog/2021/10/19/a-scientific-notation-bug-in-mysql-left-aws-waf-clients-vulnerable-to-sql-injection/. В нём оцениваются наши WAF с использованием ModSecurity на различных уровнях паранойи — как в конфигурации по умолчанию, так и с отключением различных правил / ID поэтапным и быстрым способом.

Подход

  • Pentesters: область GreyBox с ограниченным доступом к Linux-хосту WAF с использованием «shell» с привилегиями для запуска/перезагрузки и редактирования конфигурационных файлов WAF Apache в средах DEV/STG/TEST с отправкой различных полезных нагрузок.
  • Специалисты по безопасности (Security Officers): принимают наилучшее решение о применении уровня паранойи WAF для каждого решения в вашей организации.
  • Blueteamers: обеспечение соблюдения правил, улучшенные оповещения, меньше ложных срабатываний в вашей организации.
  • Интеграторы (Integrators): выполняют более глубокую диагностику и быстро определяют адекватный уровень паранойи WAF, настраивая правила или создавая виртуальные патчи.

Proof of Concept: на основе Ubuntu 20.04.3 и OWASP Core Rule Set (CRS) v3.3.2

Ссылка: https://www.inmotionhosting.com/support/server/apache/install-modsecurity-apache-module/

Первоначальная установка

  1. Обновите программные репозитории:
root@kitploit:~
$ sudo apt update -y && sudo apt dist-upgrade -y
  1. Установите необходимые компоненты (Essentials):
root@kitploit:~
$ sudo apt-get install build-essential -y
  1. Установите apache2 для Ubuntu (если он не установлен):
root@kitploit:~
$ sudo apt-get install apache2 -y
  1. Загрузите и установите модуль ModSecurity для Apache:
root@kitploit:~
$ sudo apt install libapache2-mod-security2 -y
  1. Установите curl для Ubuntu (если он не установлен):
root@kitploit:~
$ sudo apt-get install curl vim gridsite-clients net-tools -y
  1. Перезапустите службу Apache:
root@kitploit:~
$ sudo systemctl restart apache2
  1. Убедитесь, что установленная версия программного обеспечения не ниже 2.9.x:
root@kitploit:~
$ sudo apt-cache show libapache2-mod-security2

install

Настройка ModSecurity

  1. Скопируйте и переименуйте файл:
root@kitploit:~
$ sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

Затем измените режим обнаружения ModSecurity. Сначала перейдите в папку, выполнив cd /etc/modsecurity
2. Отредактируйте файл конфигурации ModSecurity с помощью vi, vim, emacs или nano.

root@kitploit:~
$ sudo vim /etc/modsecurity/modsecurity.conf
  1. В верхней части файла вы увидите SecRuleEngine DetectionOnly. Измените DetectionOnly на On.

Исходное значение: SecRuleEngine DetectionOnly
Новое значение: SecRuleEngine On

modsec

  1. Сохраните изменения.
  2. Перезапустите Apache:
root@kitploit:~
$ sudo systemctl restart apache2

Загрузка OWASP Core Rule Set

  1. Загрузите последнюю версию CRS с сайта CoreRuleSet.org/installation
root@kitploit:~
$ cd ~
$ wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v3.3.2.zip
  1. Проверьте контрольную сумму, убедитесь в её соответствии публично доступной здесь: https://coreruleset.org/installation/
root@kitploit:~
$ sha1sum v3.3.2.zip && echo ProvidedChecksum
88f336ba32a89922cade11a4b8e986f2e46a97cf  v3.3.2.zip
ProvidedChecksum 

checksum

  1. Распакуйте zip-файл.
root@kitploit:~
$ unzip v3.3.2.zip
  1. Переместите файл настройки CRS из нового каталога в ваш каталог ModSecurity:
root@kitploit:~
$ sudo mv coreruleset-3.3.2/crs-setup.conf.example /etc/modsecurity/crs/crs-setup.conf
  • (Необязательно, но рекомендуется) Переместите каталог rules из нового каталога в ваш каталог ModSecurity:
root@kitploit:~
$ sudo mv coreruleset-3.3.2/rules/ /etc/modsecurity/crs/
  1. Отредактируйте файл security2.conf Apache, чтобы убедиться, что он загружает правила ModSecurity:
root@kitploit:~
$ sudo vim /etc/apache2/mods-enabled/security2.conf
root@kitploit:~
<IfModule security2_module>
        # Default Debian dir for modsecurity's persistent data
        SecDataDir /var/cache/modsecurity

        # Include all the *.conf files in /etc/modsecurity.
        # Keeping your local configuration in that directory
        # will allow for an easy upgrade of THIS file and
        # make your life easier
        IncludeOptional /etc/modsecurity/crs-setup.conf
        IncludeOptional /etc/modsecurity/rules/*.conf

        # Include OWASP ModSecurity CRS rules if installed
        #IncludeOptional /usr/share/modsecurity-crs/*.load
</IfModule>

secmodule

  1. Убедитесь, что перечислены и файл конфигурации ModSecurity по умолчанию, и новый файл конфигурации CRS. Путь к первому файлу conf может уже быть включён. Второй путь к файлу должен указывать туда, куда вы переместили каталог /rules.
  2. Отредактируйте /etc/apache2/apache2.conf
root@kitploit:~
$ sudo vim /etc/apache2/apache2.conf

Скопируйте и вставьте следующий код и сохраните его.

root@kitploit:~
# Include list of ports to listen on
Include ports.conf

Include /etc/modsecurity/modsecurity.conf
Include /etc/modsecurity/crs/crs-setup.conf
Include /etc/modsecurity/crs/rules/*.conf

ports

Apache: загрузка модулей Rewrite & Proxy

  1. Скопируйте следующие модули. Включите модули Proxy и Rewrite.
root@kitploit:~
$ cd /etc/apache2
$ sudo cp mods-available/proxy_http.load mods-enabled
$ sudo cp mods-available/proxy.load mods-enabled/
$ sudo cp mods-available/rewrite.load mods-enabled/
  1. Перезапустите Apache
root@kitploit:~
$ sudo systemctl restart apache2

Добавление виртуальных хостов для тестирования «Mocks»

  1. Добавьте порты, отредактируйте /etc/apache2/ports.conf
root@kitploit:~
$ sudo vim /etc/apache2/ports.conf

Скопируйте и вставьте следующий код и сохраните его.

root@kitploit:~
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 8080
Listen 18080

<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>

ports2

  1. Перейдите в /etc/apache2/sites-enabled, создайте файл 001-test.conf
root@kitploit:~
$ cd /etc/apache2/sites-enabled/
$ sudo touch 001-test.conf
$ sudo vim 001-test.conf

Скопируйте и вставьте следующий код и сохраните его.

root@kitploit:~
<VirtualHost *:8080>
        ServerName test.domain:8080

        SecRuleEngine On

        ErrorLog ${APACHE_LOG_DIR}/test_error.log
        CustomLog ${APACHE_LOG_DIR}/test_access.log combined
        SecAuditLog ${APACHE_LOG_DIR}/test_audit.log

        ProxyPass / http://127.0.0.1:18080/
        ProxyPassReverse / http://127.0.0.1:18080/
</VirtualHost>
  1. Перейдите в /etc/apache2/sites-enabled, создайте файл 002-moc.conf
root@kitploit:~
$ cd /etc/apache2/sites-enabled/
$ sudo touch 002-moc.conf
$ sudo vim 002-moc.conf

Скопируйте и вставьте следующий код и сохраните его.

root@kitploit:~
<VirtualHost 127.0.0.1:18080>

        ErrorLog ${APACHE_LOG_DIR}/moc_error.log
        CustomLog ${APACHE_LOG_DIR}/moc_access.log combined

        RewriteEngine On
        RewriteRule ^(.*)$ $1 [R=200,L]
</VirtualHost>
  1. Перезапустите Apache
root@kitploit:~
$ sudo systemctl restart apache2
  1. Создайте файл wafparan01d3_rulesremove.conf внутри /etc/apache2/conf-enabled
root@kitploit:~
$ sudo touch /etc/apache2/conf-enabled/wafparan01d3_rulesremove.conf
  1. Перезагрузите Apache
root@kitploit:~
$ sudo service apache2 reload

Проверка FE и BE (mock)

root@kitploit:~
Must be specify a domain , edit the following lines  

Windows:
C:\Windows\System32\drivers\etc\hosts
192.168.56.106 test.domain <-- add this line and specify your IP address  

Linux: 
/etc/hosts
192.168.1.23 test.domain <-- add this line and specify your IP address 

$ curl -i -k -s -XGET http://test.domain:8080/
HTTP/1.1 200 OK
Date: Mon, 22 Nov 2021 06:31:41 GMT
Server: Apache/2.4.41 (Ubuntu)
Content-Length: 571
Content-Type: text/html; charset=iso-8859-1
Vary: Accept-Encoding

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>200 OK</title>
</head><body>
<h1>OK</h1>
<p>The server encountered an internal error or
misconfiguration and was unable to complete
your request.</p>
<p>Please contact the server administrator at 
 [no address given] to inform them of the time this error occurred,
 and the actions you performed just before this error.</p>
<p>More information about this error may be available
in the server error log.</p>
<hr>
<address>Apache/2.4.41 (Ubuntu) Server at 127.0.0.1 Port 18080</address>
</body></html>

$ curl -i -k -s -XGET http://localhost:18080/
HTTP/1.1 200 OK
Date: Mon, 22 Nov 2021 06:27:17 GMT
Server: Apache/2.4.41 (Ubuntu)
Content-Length: 571
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>200 OK</title>
</head><body>
<h1>OK</h1>
<p>The server encountered an internal error or
misconfiguration and was unable to complete
your request.</p>
<p>Please contact the server administrator at 
 [no address given] to inform them of the time this error occurred,
 and the actions you performed just before this error.</p>
<p>More information about this error may be available
in the server error log.</p>
<hr>
<address>Apache/2.4.41 (Ubuntu) Server at localhost Port 18080</address>
</body></html>

Как использовать

Для справки вы можете использовать опцию help. Основной способ использования — передача различных определённых аргументов.
Пример:

root@kitploit:~
$ sudo python3 wafparan01d3.py -h 

           (                                  )   ) (       )
 (  (      ))\ )          ) (      )        ( /(( /( )\ ) ( /(
 )\))(  ( /(()/( `  )  ( /( )(  ( /(  (     )\())\()|()/( )\())
((_)()\ )(_))(_))/(/(  )(_)|()\ )(_)) )\ ) ((_)((_)\ ((_)|(_)\
_(()((_|(_)(_) _((_)_\((_)_ ((_|(_)_ _(_/( /  (_) (_)_| |__ (_)
\ V  V / _` |  _| '_ \) _` | '_/ _` | ' \)) () || |/ _` ||_ \
 \_/\_/\__,_|_| | .__/\__,_|_| \__,_|_||_| \__/ |_|\__,_|___/
                |_|

                    ~ WAFPARANO1D3 : v1.1 ~
     The Web Application Firewall Paranoia Level Test Tool.

usage: wafparan01d3.py [-h] [--run [_RUN]] [--debug [_DEBUG]] [--pl [_PARANOIALEVEL ...]] [--proxy [_PROXY]] [--payload [_PAYLOAD]] [--rules-remove [_RULESREMOVE]] [--log [_LOG]] [--domain [_DOMAIN]] [--conf-file [_CONF_FILE]]
                       [--time-sleep [_TIME_TO_SLEEP]] [--time-sleep-request [_TIME_TO_SLEEP_REQUEST]] [--desc [_DESC]] [--output-desc [_OUTPUT_DESC]]

optional arguments:
  -h, --help            show this help message and exit
  --run [_RUN]          Run script
  --debug [_DEBUG]      Debug mode
  --pl [_PARANOIALEVEL ...]
                        Define paranoia level Ex. -pl 2
  --proxy [_PROXY]      Define Proxy. Ex: http://127.0.0.1:8081
  --payload [_PAYLOAD]  Define payload file. Ex. --payload payload2.txt
  --rules-remove [_RULESREMOVE]
                        Define rules remove file. Ex. --rules-remove rules1.txt
  --log [_LOG]          Define path of the log file. Ex. --log /var/log/apache/wafparan01d3.log
  --domain [_DOMAIN]    Define your domain. Ex. --domain example.domain:8080
  --conf-file [_CONF_FILE]
                        Define configuration file. Ex. --conf-file /opt/modsecurity/crs/rules/INITIALIZATION.conf
  --time-sleep [_TIME_TO_SLEEP]
                        Sleep time per PL. Ex. --time-sleep 3
  --time-sleep-request [_TIME_TO_SLEEP_REQUEST]
                        Sleep time per Request. Ex. --time-sleep-request 3
  --desc [_DESC]        Description of the script and authors
  --output-desc [_OUTPUT_DESC]
                        Description of the output on console mode.
                                                              

Необязательные аргументы

root@kitploit:~
$ sudo python3 wafparan01d3.py -h 
	- show the help message

$ sudo python3 wafparan01d3.py --run
	- run the script with default options.

$ sudo python3 wafparan01d3.py --run --debug
	- Print every line on console.
	
$ sudo python3 wafparan01d3.py --run --pl 1
	- Run the script in assigned Paranoia Level.
	- By default runs on Paranoia Level 1, 2, 3, 4

$ sudo python3 wafparan01d3.py --run --payload file_payload2.txt
	- Define the payload file that you want to send to WAF.
	- By default takes the file mysql_gosecure.txt

$ sudo python3 wafparan01d3.py --run --rules-remove rules_removex.txt
	- Define the rules that you want to remove on GWAF.
	- Example of the file: 
		- Default 920000 920001 920002
	- By default takes the files: rules_remove1.txt, rules_remove2.txt, rules_remove3.txt, rules_remove4.txt

$ sudo python3 wafparan01d3.py --run --log /home/waf_user/paranoia.log
	- Define LOG File.
	- By default print the log on paranoia_debug.log

$ sudo python3 wafparan01d3.py --run --domain mydomain.test.com
	- Define Domain of Front End WAF.
	- By default runs over domain domain.test:8080
	
$ sudo python3 wafparan01d3.py --run --conf-file /opt/modsecurity/crs/rules/INITIALIZATION.conf
	- Define the configuration file to update the Paranoia Level
	- By default takes /etc/modsecurity/crs/rules/REQUEST-901-INITIALIZATION.conf

$ sudo python3 wafparan01d3.py --run --time-sleep 3
	- Define the time to sleep per Paranoia Level.

$ sudo python3 wafparan01d3.py --run --time-sleep-request 2
	- Define the time to sleep per request send to WAF.

$ sudo python3 wafparan01d3.py --desc
	- Print the description of the script and the authors.

Демонстрации

Вы можете опробовать wafparan01d3.py, запустив виртуальную среду (Ubuntu), которая разворачивает WAF ModSecurity и «Mock» с использованием последней версии OWASP Core Rule Set CRS 3.3.2, что позволяет легко настраивать уровни паранойи ModSecurity.

Для запуска:

root@kitploit:~
$ git clone https://github.com/alt3kx/wafparan01d3.git
$ cd wafparan01d3
$ sudo python3 wafparan01d3.py --help 
root@kitploit:~
$ sudo python3 wafparan01d3.py --run

wafparan01d3_001

root@kitploit:~
$ sudo python3 wafparan01d3.py --run --debug --proxy http://192.168.56.1:8081

wafparan01d3_002

root@kitploit:~
$ sudo python3 wafparan01d3.py --run --debug --pl 1 2 --proxy http://192.168.56.1:8081 --log test.log --domain vulnerable.domain:8080 --time-sleep-request 1 --time-sleep 1 --rules-remove my_rules_remove.txt --payload my_payload.txt

wafparan01d3_003

Правило WAF: научная нотация

https://github.com/mindhack03d/WAF-Rule-Scientific-Notation

Авторы

Алекс Эрнандес (Alex Hernandez), он же (@_alt3kx_)
Хесус Уэрта (Jesus Huerta), он же @mindhack03d

Скачать инструмент