Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
ftw — Framework for Testing WAFs (FTW!) | Kitploit
Tools/GitHubGitHub/fastly/ftw
Vulnerability ScannersWAF BypassWeb SecurityPenetration TestingDevSecOpsArchived
GitHubfastly/ftw

ftw

Framework for Testing WAFs (FTW!)

Repository anzeigen
26358vor 3 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Framework zum Testen von WAFs (FTW)

Build Status

Zweck

Dieses Projekt wurde von Forschern von ModSecurity und Fastly erstellt, um rigorose Tests für WAF-Regeln bereitzustellen. Es verwendet das OWASP Core Ruleset V3 als Grundlage, um Regeln auf einer WAF zu testen. Jede Regel aus dem Regelsatz wird in eine YAML-Datei geladen, die HTTP-Anfragen ausgibt, die diese Regeln auslösen.

Ziele / Anwendungsfälle umfassen:

  • Regressionen in WAF-Bereitstellungen finden, indem kontinuierliche Integration genutzt und wiederholbare Angriffe auf eine WAF durchgeführt werden
  • Ein Testframework für neue Regeln in ModSecurity bereitstellen; wenn eine Regel eingereicht wird, MUSS sie entsprechende positive & negative Tests haben
  • WAFs gegen ein gemeinsames, akzeptables Basis-Regelset (OWASP) bewerten
  • Benutzerdefinierte Regeln für WAFs testen und verifizieren, die nicht Teil des Kernregelsatzes sind

Installation

  • git clone [email protected]:fastly/ftw.git
  • cd ftw
  • Stellen Sie sicher, dass pip installiert ist: apt-get install python-pip
  • pip install -r requirements.txt

Ausführen von Tests nur mit HTML-enthält- und Statuscode-Prüfungen

  • Erstellen Sie YAML-Dateien, die auf Ihren Webserver mit einer vorgeschalteten WAF verweisen
  • py.test test/test_default.py --ruledir test/yaml

Bereitstellung von Apache+Modsecurity+OWASP CRS

Wenn Sie eine Umgebung zum Testen von WAF-Regeln benötigen, wurde eine mit Apache, Modsecurity und Version 3.0.0 des OWASP-Kernregelsatzes erstellt. Diese kann wie folgt bereitgestellt werden:

  • Das Repository auschecken: git clone https://github.com/fastly/waf_testbed.git
  • vagrant up eingeben

Ausführen von Tests unter Überschreibung der Zieladresse in den YAML-Dateien auf eine benutzerdefinierte Domain

  • starten Sie Ihren Test-Webserver
  • py.test test/test_default.py --ruledir=test/yaml --destaddr=domain.com --port 443 --protocol https

Integrationstest ausführen, lokaler Webserver, möglicherweise muss sudo verwendet werden

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

SO INTEGRIEREN SIE PROTOKOLLE

  1. Erstellen Sie eine *.py-Datei mit den erforderlichen Importen; ein Beispiel finden Sie in test/integration/test_logcontains.py
  2. Alle Funktionen, die mit test* beginnen, werden von py.test ausgeführt, erstellen Sie also eine Funktion def test_somewaf
  3. Implementieren Sie eine Klasse, die von LogChecker erbt
    1. Implementieren Sie die Funktion get_logs(). FTW ruft diese Funktion nach dem Testlauf auf und legt die Datums-/Uhrzeitwerte von self.start und self.end fest.
    2. Verwenden Sie die Informationen aus den datetime-Variablen, um die Protokolle von Ihrer WAF abzurufen, sei es eine Datei oder ein API-Aufruf.
    3. Holen Sie sich die Protokolle, speichern Sie sie in einem Array von Zeichenfolgen und geben Sie sie von get_logs() zurück.
  4. Nutzen Sie py.test-Fixtures. Verwenden Sie einen Funktionsdekorator @pytest.fixture, geben Sie Ihr neues -Objekt zurück. Immer wenn Sie in Ihren Tests ein Funktionsargument verwenden, das mit dem Namen dieses übereinstimmt, wird Ihr Objekt instanziiert und das Ausführen von Tests erleichtert. Ein Beispiel dafür finden Sie in der Python-Datei aus Schritt 1.

Programmgesteuertes Erstellen von HTTP-Anfragen

Obwohl es bevorzugt wird, Anfragen im YAML-Format zu stellen, erfordern automatisierte Tests oft viele dynamische Anfragen. In einem solchen Fall wird empfohlen, das py.test-Framework zu verwenden, um Testfälle zu erstellen, die als Teil des Ganzen ausgeführt werden können. Im Allgemeinen ist das Erstellen einer HTTP-Anfrage einfach:

  1. Erstellen Sie eine Instanz der HttpUA()-Klasse
  2. Erstellen Sie eine Instanz der Input()-Klasse und geben Sie die Parameter an, die Sie nicht standardmäßig haben möchten
  3. Übergeben Sie die Instanz der Input-Klasse an HttpUA.send_request()

Einige Beispiele finden Sie in den HTTP-Integrationstests

Tool herunterladen
LogChecker
@pytest.fixture
  • Schreiben Sie eine Testkonfiguration im *.yaml-Format, wie in test/integration/LOGCONTAINSFIXTURE.yaml zu sehen. Die log_contains-Zeile erfordert eine Zeichenfolge, die ein regulärer Ausdruck ist. FTW kompiliert die log_contains-Zeichenfolge aus jeder Stufe in der YAML-Datei in einen regulären Ausdruck. Dieser reguläre Ausdruck wird dann zusammen mit den Protokollzeilen, die von get_logs() übergeben werden, verwendet, um nach einer Übereinstimmung zu suchen. Die log_contains-Zeichenfolge sollte daher eine eindeutige Regel-ID sein, da FTW gierig ist und die erste Übereinstimmung annimmt. Falsch-positive Ergebnisse werden durch die Start-/Endzeit, die an das LogChecker-Objekt übergeben wird, gemildert, aber es ist am besten, auf Nummer sicher zu gehen und eindeutige reguläre Ausdrücke zu verwenden.
  • Für jede Stufe wird die Funktion get_logs() aufgerufen; stellen Sie daher sicher, dass Sie API-Aufrufe berücksichtigen, falls Sie Ihre Protokolle auf diese Weise abrufen.