Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
ftw — Framework per testare i WAF (FTW!) | Kitploit
Strumenti/GitHubGitHub/fastly/ftw
Scanner di VulnerabilitàBypass WAFSicurezza WebPenetration TestingDevSecOpsArchived
GitHubfastly/ftw

ftw

Framework per testare i WAF (FTW!)

Vedi Repository
26358193 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Framework per testare WAF (FTW)

Build Status

Scopo

Questo progetto è stato creato da ricercatori di ModSecurity e Fastly per fornire test rigorosi per le regole WAF. Utilizza l'OWASP Core Ruleset V3 come baseline per testare le regole su un WAF. Ogni regola del ruleset viene caricata in un file YAML che emette richieste HTTP che attiveranno queste regole.

Obiettivi / Casi d'uso includono:

  • Trovare regressioni nelle distribuzioni WAF utilizzando l'integrazione continua ed emettendo attacchi ripetibili a un WAF
  • Fornire un framework di test per nuove regole in ModSecurity, se una regola viene inviata DEVE avere corrispondenti test positivi e negativi
  • Valutare i WAF rispetto a un ruleset di base comune e concordato (OWASP)
  • Testare e verificare regole personalizzate per WAF che non fanno parte del core rule set

Installation

  • git clone [email protected]:fastly/ftw.git
  • cd ftw
  • Assicurati che pip sia installato apt-get install python-pip
  • pip install -r requirements.txt

Esecuzione dei test con soli controlli di contenuto HTML e codice di stato

  • Crea file YAML che puntano al tuo webserver con un WAF davanti
  • py.test test/test_default.py --ruledir test/yaml

Provisioning di Apache+Modsecurity+OWASP CRS

Se hai bisogno di un ambiente per testare le regole WAF, ne è stato creato uno con Apache, Modsecurity e la versione 3.0.0 dell'OWASP core ruleset. Può essere distribuito con:

  • Clonando il repository: git clone https://github.com/fastly/waf_testbed.git
  • Digitando vagrant up

Esecuzione dei test sovrascrivendo l'indirizzo di destinazione nei file yaml con un dominio personalizzato

  • avvia il tuo server web di test
  • py.test test/test_default.py --ruledir=test/yaml --destaddr=domain.com --port 443 --protocol https

Esegui test di integrazione, webserver locale, potrebbe essere necessario usare sudo

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

COME INTEGRARE I LOG

  1. Crea un file *.py con le importazioni necessarie, un esempio è mostrato in test/integration/test_logcontains.py
  2. Tutte le funzioni che iniziano con test* saranno eseguite da py.test, quindi crea una funzione def test_somewaf
  3. Implementa una classe che eredita LogChecker
    1. Implementa la funzione get_logs(). FTW chiamerà questa funzione dopo aver eseguito il test, e imposterà i datetime di self.start e self.end
    2. Usa le informazioni dalle variabili datetime per recuperare i file dal tuo WAF, che si tratti di un file o di una chiamata API
    3. Ottieni i log, memorizzali in un array di stringhe e restituiscili da get_logs()
  4. Utilizza i py.test fixtures. Usa un decoratore di funzione @pytest.fixture, restituisci il tuo nuovo oggetto LogChecker. Ogni volta che usi un argomento di funzione nei tuoi test che corrisponde al nome di quel @pytest.fixture, istanzierà il tuo oggetto e renderà più facile eseguire i test. Un esempio di ciò è nel file python del passaggio 1.
  5. Scrivi una configurazione di test nel formato *.yaml come visto in test/integration/LOGCONTAINSFIXTURE.yaml, la riga log_contains richiede una stringa che è una regex. FTW compilerà la stringa log_contains da ogni stage nel file YAML in una regex. Questa regex verrà poi usata insieme alle righe di log passate da get_logs() per cercare una corrispondenza. La stringa log_contains, quindi, dovrebbe essere un rule-id unico poiché FTW è greedy e passerà alla prima corrispondenza. I falsi positivi sono mitigati dal tempo di inizio/fine passato all'oggetto LogChecker, ma è meglio stare sicuri e usare regex uniche.
  6. Per ogni stage, viene chiamata la funzione get_logs(), quindi assicurati di considerare le chiamate API se è così che recuperi i tuoi log.

Effettuare richieste HTTP a livello di codice

Sebbene sia preferibile effettuare richieste usando il formato YAML, spesso i test automatizzati richiedono molte richieste dinamiche. In tal caso è consigliabile utilizzare il framework py.test per produrre casi di test che possano essere eseguiti come parte dell'intero. In generale, effettuare una richiesta HTTP è semplice:

  1. creare un'istanza della classe HttpUA()
  2. creare un'istanza della classe Input() fornendo qualunque parametro non si voglia siano predefiniti
  3. fornire l'istanza della classe input a HttpUA.send_request()

Per alcuni esempi vedi i test di integrazione http

Scarica lo strumento