Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
ftw — Framework for Testing WAFs (FTW!) | Kitploit
Outils/GitHubGitHub/fastly/ftw
Vulnerability ScannersWAF BypassWeb SecurityPenetration TestingDevSecOpsArchived
GitHubfastly/ftw

ftw

Framework for Testing WAFs (FTW!)

Voir le dépôt
26358il y a 3 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Framework de test pour les WAFs (FTW)

Build Status

Objectif

Ce projet a été créé par des chercheurs de ModSecurity et Fastly pour fournir des tests rigoureux pour les règles WAF. Il utilise le OWASP Core Ruleset V3 comme référence pour tester les règles sur un WAF. Chaque règle de l'ensemble de règles est chargée dans un fichier YAML qui émet des requêtes HTTP qui déclencheront ces règles.

Objectifs / Cas d'utilisation :

  • Trouver des régressions dans les déploiements WAF en utilisant l'intégration continue et en envoyant des attaques reproductibles à un WAF
  • Fournir un framework de test pour les nouvelles règles dans ModSecurity, si une règle est soumise, elle DOIT avoir des tests positifs et négatifs correspondants
  • Évaluer les WAFs par rapport à un ensemble de règles de base commun et convenu (OWASP)
  • Tester et vérifier les règles personnalisées pour les WAFs qui ne font pas partie de l'ensemble de règles de base

Installation

  • git clone [email protected]:fastly/ftw.git
  • cd ftw
  • Assurez-vous que pip est installé apt-get install python-pip
  • pip install -r requirements.txt

Exécuter les tests avec uniquement les vérifications de contenu HTML et de code d'état

  • Créez des fichiers YAML qui pointent vers votre serveur web avec un WAF devant
  • py.test test/test_default.py --ruledir test/yaml

Provisionnement d'Apache+Modsecurity+OWASP CRS

Si vous avez besoin d'un environnement pour tester les règles WAF, un environnement a été créé avec Apache, Modsecurity et la version 3.0.0 de l'ensemble de règles de base OWASP. Il peut être déployé en :

  • Cloner le dépôt : git clone https://github.com/fastly/waf_testbed.git
  • Taper vagrant up

Exécuter les tests en remplaçant l'adresse de destination dans les fichiers yaml par un domaine personnalisé

  • démarrez votre serveur web de test
  • py.test test/test_default.py --ruledir=test/yaml --destaddr=domain.com --port 443 --protocol https

Exécuter le test d'intégration, serveur web local, peut nécessiter sudo

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

COMMENT INTÉGRER LES LOGS

  1. Créez un fichier *.py avec les importations nécessaires, un exemple est donné dans test/integration/test_logcontains.py
  2. Toutes les fonctions commençant par test* seront exécutées par py.test, créez donc une fonction def test_somewaf
  3. Implémentez une classe qui hérite de LogChecker
    1. Implémentez la fonction get_logs(). FTW appellera cette fonction après avoir exécuté le test, et définira les datetime de self.start et self.end
    2. Utilisez les informations des variables datetime pour récupérer les fichiers de votre WAF, que ce soit un fichier ou un appel API
    3. Obtenez les logs, stockez-les dans un tableau de chaînes et retournez-les depuis get_logs()
  4. Utilisez les fixtures py.test. Utilisez un décorateur de fonction @pytest.fixture, retournez votre nouvel objet . Chaque fois que vous utilisez un argument de fonction dans vos tests qui correspond au nom de ce , il instanciera votre objet et facilitera l'exécution des tests. Un exemple est donné dans le fichier python de l'étape 1.

Effectuer des requêtes HTTP par programmation

Bien qu'il soit préférable d'effectuer des requêtes en utilisant le format YAML, les tests automatisés nécessitent souvent de nombreuses requêtes dynamiques. Dans ce cas, il est recommandé d'utiliser le framework py.test pour produire des cas de test qui peuvent être exécutés dans le cadre de l'ensemble. Généralement, effectuer une requête HTTP est simple :

  1. créez une instance de la classe HttpUA()
  2. créez une instance de la classe Input() en fournissant les paramètres que vous ne souhaitez pas par défaut
  3. fournissez l'instance de la classe input à HttpUA.send_request()

Pour quelques exemples, voir les tests d'intégration http

Télécharger l’outil
LogChecker
@pytest.fixture
  • Écrivez une configuration de test au format *.yaml comme dans test/integration/LOGCONTAINSFIXTURE.yaml, la ligne log_contains nécessite une chaîne qui est une regex. FTW compilera la chaîne log_contains de chaque étape du fichier YAML en une regex. Cette regex sera ensuite utilisée avec les lignes de logs passées depuis get_logs() pour rechercher une correspondance. La chaîne log_contains doit donc être un identifiant de règle unique car FTW est gourmand et passera à la première correspondance. Les faux positifs sont atténués par l'heure de début/fin passée à l'objet LogChecker, mais il est préférable de rester prudent et d'utiliser des regex uniques.
  • Pour chaque étape, la fonction get_logs() est appelée, assurez-vous donc de prendre en compte les appels API si c'est ainsi que vous récupérez vos logs.