tags: File_Upload File_Upload_Offuscamento
Esistono diversi metodi di offuscamento, eccone alcuni:
Fornire più estensioni:
A seconda dell’algoritmo utilizzato per analizzare il nome del file, il seguente file potrebbe essere interpretato come un file PHP o un’immagine JPG:
exploit.php.jpgAggiungere caratteri finali:
Alcuni componenti rimuovono o ignorano gli spazi, i punti e simili alla fine del file:
exploit.php.Provare a utilizzare la codifica URL (o la doppia codifica URL) per punti, barre e barre rovesciate.
Se il valore non viene decodificato durante la convalida dell’estensione del file, ma viene decodificato successivamente lato server, questo può consentire di caricare file dannosi che altrimenti verrebbero bloccati:
exploit%2EphpAggiungere punti e virgola o caratteri nulli codificati in URL prima dell’estensione del file:
Se la validazione è scritta in un linguaggio di alto livello come PHP o Java, ma il server elabora il file utilizzando funzioni di livello inferiore in C/C++, ad esempio, ciò può causare discrepanze in ciò che viene considerato la fine del nome del file:
exploit.asp;.jpg
#Oppure
exploit.asp%00.jpg
Prova a utilizzare caratteri Unicode multibyte, che possono essere convertiti in byte nulli e punti dopo la conversione o la normalizzazione Unicode.
Sequenze come xC0 x2E, xC4 xAE o xC0 xAE possono essere tradotte in x2E se il nome del file viene analizzato come stringa UTF-8, ma poi convertite in caratteri ASCII prima di essere utilizzate in un percorso.
Raddoppio estensione
Altre difese prevedono la rimozione o la sostituzione delle estensioni pericolose per impedire l’esecuzione del file. Se questa trasformazione non viene applicata ricorsivamente, è possibile posizionare la stringa proibita in modo tale che la sua rimozione lasci comunque un’estensione di file valida. Ad esempio, considera cosa succede se rimuovi .php dal seguente nome di file:
exploit.p.phphp