Does anyone know if there are any issues I should be aware of?
Il problema principale è che il linguaggio di scripting (per esempio PHP) che sta analizzando il cookie può essere implementato in una lingua (ad esempio C) che tratta il carattere di byte NULL (0x00) come un carattere di controllo speciale.
Ad esempio, nel linguaggio C una "stringa" di lunghezza N è implementata come una matrice di caratteri N + 1, dove il carattere (N + 1) alla fine dell'array è 0x00, che viene usato per indica la fine della stringa.
Il principio di sicurezza generale che viene violato qui è la combinazione imprevista di istruzioni (il carattere di controllo simile all'istruzione 0x00) con i dati. I cookie sono generalmente considerati stringhe di dati , ma poiché il byte null ha una proprietà di controllo speciale in C (indica la fine delle stringhe e può causare il ritorno delle routine di analisi delle stringhe), funziona in modo un po 'più simile una istruzione di dati .
Ecco un esempio specifico di come il byte null potrebbe causare problemi: Potrebbe essere possibile caricare un file chiamato "backdoor.php \ x00.png" che contiene codice backdoor PHP. Anche se i file php sono in blacklist per essere caricati, questo file potrebbe ancora essere caricato poiché l'estensione è ".png." Se il parsing del nome file PHP (che è implementato in C) restituisce impropriamente il carattere null byte, il file potrebbe essere salvato con il nome "backdoor.php" e potrebbe quindi essere eseguito accedendo al file nella cartella uploads. Questo tipo di exploit è chiamato "Null Byte Injection".
Non sono a conoscenza di un exploit specifico basato su un carattere null in un cookie, ma l'idea è simile a quella precedente e sfrutterò le proprietà speciali del byte null nel linguaggio di implementazione del codice che analizza il cookie.