Espressioni regolari per exploit comuni

3

Ho eseguito il patch per shellshock e sono stato bloccato dopo pochi giorni. Tuttavia, non avrei saputo che nessun tentativo fosse stato fatto se non fosse stato per un'espressione regolare che ho trovato su internet. Questo mi ha ispirato a esaminare ulteriormente i miei registri. Esiste un elenco centralizzato di regex che posso utilizzare in uno script per analizzare i miei registri per tentativi di exploit comuni come SQL Injection o XSS?

    
posta Dylan Katz 10.11.2014 - 06:14
fonte

2 risposte

6

La soluzione migliore sarebbe negare implicitamente, cioè consentire esattamente i dati che vuoi, ma nessun altro.

Potresti scrivere espressioni regolari che corrispondono a tutti gli input che non sono in accordo con il tuo filtro per trovare qualche input dispari, che potrebbe essere un exploit. È anche un buon modo per trovare input validi che hai omesso nella tua espressione regolare.

Un nome utente può andare bene con [a-zA-Z0-9]+ , piuttosto che rimuovere virgolette singole o simili per disinfettare l'input.

EDIT:
Questo è l'approccio che prenderei:

  1. Aggiungi espressioni regolari per negare implicitamente tutti gli input, per risolvere questo problema in futuro.
  2. Controlla i dati nei file di registro rispetto alle espressioni regolari che sono state scritte nel passaggio 1
  3. Rimuovi tutti i dati di input nei file di registro che corrispondono alle espressioni regolari.
  4. Riduci i log contando le file identiche e deduplicandole, quindi non dobbiamo guardare 1000 righe identiche, ma sappiamo comunque che abbiamo avuto 1000 righe del genere nei file di registro.
  5. Controllare se uno degli input registrati deve essere valido. In tal caso, aggiorna la regex pertinente e vai al passaggio 2.
  6. Controllare se uno qualsiasi degli altri dati del log appare sospetto.
risposta data 10.11.2014 - 12:43
fonte
1

Qui le espressioni regolari sono di uso molto limitato in quanto è improbabile che ogni attacco consegnato tramite una richiesta POST HTTP venga registrato. Ci sono anche molti esempi di valori di intestazione che hanno un impatto mentre non vengono registrati, ad esempio shellshock. Ci sarà anche un sacco di rumore da scanner automatici come Nikto che non hanno alcun impatto a meno che l'URL visitato esista e sia vulnerabile.

Se hai intenzione di esaminare i tuoi registri, un buon punto di partenza sarebbe quello di esportare le regole da mod_security o snort . Vale la pena notare che questi potrebbero richiedere modifiche per essere compatibili con il motore regex utilizzato dal tuo strumento di ricerca, come grep.

    
risposta data 17.11.2014 - 01:56
fonte

Leggi altre domande sui tag