Sto verificando un possibile pezzo vulnerabile di codice ASP su un ambiente Windows. Il codice è il seguente:
If InStr(strPath, "\Only\Download\From\Here\", CompareMethod.Text) = 0 Then
In linea di massima si suppone che consenta solo allo script di download di recuperare i file da quella posizione. Il server Web ha l'attraversamento di directory disattivato . Ciò significa che il seguente invio non funzionerà e in effetti restituirà un 403 vietato:
\Only\Download\From\Here\..\..\..\..\..\c:\windows\system32\eula.txt
Poiché la funzione sais "InStr" invece di "BeginsWith" (codice psuedo) controlla solo se la stringa contiene il percorso, ma in realtà non inizia con il percorso.
Il seguente invio passerà la clausola If, ma ritornerà in un file non trovato:
c:\windows\system32\eula.txt%00\Only\Download\From\Here\
Il nullbyte qui iniettato non fa nulla e cerca di trovare il file che corrisponde all'intera stringa. Ho anche provato a iniettare CRLF, #,; e altro ancora.
La mia domanda è allora se c'è un modo in cui posso inviare una stringa di query che possa scaricare correttamente i file arbitrari? C'è un modo per inviare un URI di file che mi preleva un file e in un modo che commenta / Only / Download / From / Here.
Modifica: Per riassumere, sto cercando un modo per "commentare" l'ultima parte del nome del file, sia attraverso un bug / funzionalità / vulnerabilità in ASP, Webserver o la gestione di Windows di File.