Le applicazioni Web terminano le stringhe su null-byte

7

Ho appena eseguito alcuni test di penetrazione su un sito, e ho notato (e ho notato prima, ma ora sembra un buon punto per farlo apparire) che mettere un byte null nella stringa di ricerca in realtà termina la stringa lì.

Questo va bene per i linguaggi di livello inferiore come C, so come funziona, ma perché questo si applica alle applicazioni web, ho visto che questo accade in entrambe le pagine PHP e ASPX.

Si tratta di una vulnerabilità, una funzione prevista della lingua o solo un bug con le lingue?

    
posta DarkMantis 23.09.2013 - 18:21
fonte

1 risposta

10

In realtà le stringhe di PHP possono contenere byte nulli; così può una stringa .NET (quindi ASP.NET). A livello PHP, questo byte non è niente di speciale; il carattere U + 0000 è solo un altro punto di codice Unicode. Il problema inizia quando la stringa viene passata a un altro sistema, per il quale il byte null è un terminatore di stringa. In particolare per gli accessi ai file: se il codice PHP tenta di aprire il file foo.txtfoo.txt.php (dove %code% rappresenta un byte null), il sistema operativo vedrà solo una richiesta per %code% , ignorando il resto della stringa.

Questo è documentato. Anche in altre lingue.

Nel tuo caso, si deve presumere che i byte ricevuti come "stringa di ricerca" vengano inviati non modificati a un sistema di ricerca sottostante per il quale il byte null ha il significato speciale di terminare la stringa. Sebbene questa non sia una vulnerabilità a sé stante, è indicativo del fatto che il sito Web non filtri i caratteri di input e che può causare problemi.

    
risposta data 23.09.2013 - 19:46
fonte

Leggi altre domande sui tag