CMSimple 3.1 Local File Inclusion FIX

WARNING: This article was written 13 years ago, it may contain informations that are no longer valid.

Oh mio dio.

Appena arrivato a casa apro il mio carissimo Google Reader, e trovo una cosa sconcertante su milw0rm.

CMSimple 3.1 Local File Inclusion / Arbitrary File Upload:
http://www.milw0rm.com/exploits/5700

Cioè, c’è un bug che permette a QUALSIASI PERSONA di leggere TUTTI i file sul mio server.

Decido di testarlo; provo a vedere se mi legge c:boot.ini.
E cazzo, funziona.
In pratica, su tutti i siti che usano CMSimple, qualsiasi utente puo’ usare http://[host]/[path]/index.php?sl=[file]%00 per leggere il contenuto di quel file.

Sinceramente sono ignorante e non capisco perchè quel %00 sia così speciale, ma poco mi frega.

Qui urge una soluzione, e subito.

Dopo aver studiato un minimo il codice, aggiungo una nuova riga prima della 72, e vado giù di fantasia:
se stai per leggere qualcosa che contiene “..”, allora FOTTITI.

if (strpos($pth['file']['language'],'..')) die('OMG H4xx0rz!!1');

(attenti a fare copia e incolla, alcuni apici non vengono scritti bene.)

Wow, funziona sia per il Local File Inclusion, che per l’Arbitrary File Upload.

Ovviamente mi sono sbizzarrito un po’ rendendo il messaggio piu’ carino, potete vederlo quhttps://www.youtube.com/watch?v=FXD9BRcQoFci.

Ah, stanotte dormirò tranquillo. Almeno spero.

UPDATE 01/06/08 ore 3.27
Sono appena tornato da una serata di merda, e prima di andare a letto voglio vedere se CMSimple ha pubblicato una patch: vado su www.cmsimple.dk e LOL, ottengo una pagina haxx0rizzata.Free Image Hosting at www.ImageShack.us

UPDATE 01/06/08 ore 12.00
Scrivendo tutto di fretta, non ho spiegato come funziona il fix.
Qualche persona si potra’ chiedere: Perchè frab blocca i “..”? L’exploit http://[host]/[path]/index.php?sl=[file]%00 non contiene “..”.
Esatto.
Ma quella sintassi limita la lettura dei file all’interno della cartella LANGUAGES. E se qualcuno legge i file di linguaggio, poco importa. Il problema inizia ad essere grave quando l’attacco si sposta in directory superiori. Infatti, usando ?sl=../[file]%00, si possono leggere i file della cartella cmsimple, e usando ?sl=../../[file]%00 si possono leggere i file della root del server web, e usando ?sl=../../../../../../../../../../../../[file]%00, si possono leggere file nella root del disco fisso. Ecco perchè blocco i “..”.

UPDATE 02/06/08 ore 11.46
CMSimple ha rimesso a posto i vari siti, e ha pubblicato il fix ufficiale
http://www.cmsimple.com/forum/viewtopic.php?f=2&t=17
Fine.

Pubblicato
Etichettato come Fly, Tech

1 commento

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.