Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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 zum Testen von WAFs (FTW!) | Kitploit
Tools/GitHubGitHub/fastly/ftw
SchwachstellenscannerWAF-UmgehungWebsicherheitPenetrationstestsDevSecOpsArchived
GitHubfastly/ftw

ftw

Framework zum Testen von WAFs (FTW!)

Repository anzeigen
2635820vor 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 LogChecker-Objekt zurück. Immer wenn Sie in Ihren Tests ein Funktionsargument verwenden, das mit dem Namen dieses @pytest.fixture ü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.
  5. 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.
  6. 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.

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