È possibile l'iniezione null-byte nei nomi file Java?

11

Dalla proposta di Area51

    
posta AviD 16.11.2010 - 08:23
fonte

3 risposte

14

In base alle seguenti risorse:

possiamo concludere che le iniezioni di Null Byte sono possibili in Java.

    
risposta data 17.11.2010 - 23:06
fonte
7

L'iniezione di byte nulli dipende da una mancata corrispondenza nel modo in cui vengono gestite le stringhe.

es. Java memorizza la lunghezza della stringa indipendentemente dal contenuto della stringa, mentre C inizia all'inizio della stringa e controlla un byte Null per indicare la fine della stringa.

Come risultato, il codice Java può eseguire verifiche come "il file richiesto termina con .jsp" su una stringa come "/etc/shadow%00.jsp" (dove% 00 rappresenta il byte null) e restituisce true , mentre il passaggio di questa stringa a "new FileInputStream ()" comporterà l'OS sottostante (sia Windows che Linux) che tenta di aprire "/ etc / shadow".

(La pertinenza di provare ad aprire / etc / shadow su Windows è lasciata come esercizio per il lettore :-))

    
risposta data 19.11.2010 - 08:02
fonte
4

L'iniezione di byte nulli nei nomi dei file è stata risolta con l'aggiornamento 40 di Java 7 (rilasciato intorno a settembre 2013). Quindi, è FINALMENTE corretto.

    
risposta data 10.09.2014 - 23:36
fonte

Leggi altre domande sui tag