Il tuo approccio dovrebbe essere duplice:
tecniche:
Verifica:
- Varie sequenze di escape (ad es. \ x00,% s, \\, ecc.)
- Trucchi Unicode (ad esempio caratteri multi-byte che terminano con 0x22 per produrre un ")
- Metodi XSS alternativi (ad esempio
<img src=0 onerror=alert(1) />
anziché <script>alert(1)</script>
)
- Vari tipi di nasties (ad esempio XSS, SQL injection) all'interno di cookie e intestazioni HTTP - spesso i WAF mancano questi!
Advisory:
Assicurati che il cliente capisca che un WAF è solo un cerotto e non può riparare un arto rotto. Se l'applicazione viene interrotta in modo sfruttabile, un WAF può impedire l'attacco o mitigare parte dell'impatto, ma non c'è modo di essere sicuro che sia efficace.
È anche un'arma a doppio taglio, nel senso che le persone spesso presumono che un bug che un WAF rende non utilizzabile sia sempre non sia utilizzabile, e quindi non ha bisogno di essere corretto (almeno con ogni fretta). I browser e i linguaggi HTML / CSS / JavaScript / SQL / XML / lato server, ecc. Si evolvono costantemente, quindi potrebbero venire a crearsi nuove tecniche di exploit che rendono sfruttabili vecchi bug.
Un ulteriore punto che vorrei fare: se il test è indirizzato all'app Web e non specificatamente rivolto alla soluzione WAF che hanno implementato, ti consiglio vivamente di chiedere client per disabilitare il WAF sul loro sito di staging per tutta la durata del test. Lasciandolo acceso è molto più difficile per te dare loro una stima ragionevole della postura di sicurezza dell'applicazione, e questo significa che ottengono meno valore dal test. Se sono veramente interessati a testare il WAF, potrebbero eseguire un ulteriore giorno di test in seguito che confronta la sfruttabilità dei problemi riscontrati con e senza che WAF sia abilitato.