Ogni sysadmin che ha un server su internet sa benissimo quanto traffico inutile riceve .
In particolare i siti web ricevono migliaia e migliaia di scansioni http ogni giorno che cercano vulnerabilità più o meno note o cattive configurazioni.
Online si possono trovare molti tool, Nikto, grabber, ZAP… che si occupano di fare scansioni di vulnerabilità web anche molto approfondite.
Ci sono molti modi per bloccare questi tentativi, IDS, WAF, plugin vari, Fail2Ban… ma uno merita di essere menzionato perché oltre a bloccare il chiamante è molto probabile che lo faccia andare in crash. Diciamo che permette di vendicarsi.
Si chiama ZipBomb.
Il principio è quello di saturare le risorse di chi la apre.
Qui potete trovare un articolo su Wikipedia
https://it.wikipedia.org/wiki/Bomba_a_decompressione
Chi va alla ricerca di vulnerabilità “a strascico” spesso lo fa senza grande attenzione e appunto può incappare in qualcosa di fastidioso da prendere nella sua “rete”.
Come prepararla?
- Create un file di testo di 4GB, quindi contenente 4294967296 lettere (anche sempre la stessa) .
- Fate uno zip di questo file, diventerà molto piccolo, diciamo circa 32KB.
- Copiatelo almeno 15 volte (anche di più se volete)
- Ora fate uno zip unico di questi files appena creati.
Ripetete i punti 3-4 altre 10,11,12,16,20, 30, 42 …volte (le volte che volete…)
Avrete 16 (o più) files .zip contenenti ognuno un file da 4GB compresso
Avete creato una ZipBomb!
Entriamo un po’ nel dettaglio di cosa avete fatto e che potenziale ha:
Se avete fatto i punti 3-4 altre 16 volte avrete una matrioska di 256 files zip innestati a gruppi di 16, quindi facendo un rapido calcolo delle dimensioni non compresse:
16 x 4294967295 = 68.719.476.720 (68GB)
16 x 68719476720 = 1.099.511.627.520 (1TB)
16 x 1099511627520 = 17.592.186.040.320 (17TB)
16 x 17592186040320 = 281.474.976.645.120 (281TB)
16 x 281474976645120 = 4.503.599.626.321.920 (4,5PB)
Anche se il file esterno è di poche decine di KB se venisse estratto nella sua interezza, quindi tutti i files al suo interno, il totale farebbe 4,5 Petabyte, 4500 Terabyte
Ora fatta la bomba bisogna servirla a chi prova a visitare con cattive intenzioni il nostro webserver, per fortuna i browser e i vari tool di scan capiscono i contenuti compressi (Content-Encoding: gzip).
Tramite uno script PHP inserito nel sito possiamo mettere l’esca e fornire il contenuto enorme al visitatore, magari facendo un pò di check su chi deve ricevere la sorpresa e chi no.
Per questo particolare scopo possiamo fare anche un singolo file molto grande compresso senza innestarne tanti, ne basta uno molto grande, il browser cercherà di leggerlo tutto pezzetto per pezzetto saturandone la memoria.
La maggior parte dei visitatori gestirà male la cosa, Chrome, Edge, Firefox, ecc ecc sicuramente andranno in blocco o addirittura crash
Ecco cosa succede alla memoria del visitatore quando finisce nella trappola (il gradino corrisponde al crash):
Per chi volesse provare…
A VOSTRO RISCHIO E PERICOLO! ( POTENZIALE CRASH DEL BROWSER O DEL SISTEMA OPERATIVO )
A VOSTRO RISCHIO E PERICOLO! ( POTENZIALE CRASH DEL BROWSER O DEL SISTEMA OPERATIVO )
Articolo (molto) ispirato da : https://blog.haschek.at/2017/how-to-defend-your-website-with-zip-bombs.html