Bypassing del filtro di directory trasversale con input separati di cartelle e file

1

Sto tentando di eseguire un attacco Path Traversal su un sito Web molto semplice solo a fini didattici.

Quello che devo fare è accedere a un file chiamato passwords.txt situato in \files\private\admin\passwords.txt , I am su \files\public\ ei parametri URL sono i seguenti:

/download.php?folder=&file=&action=download

Il percorso è costruito concatenando i valori dei parametri folder e file al percorso \files\public\ . Nessuno di questi è vulnerabile a SQL Injection secondo SQLMap, né action . Quindi, se metto:

/download.php?folder=private\admin\&file=passwords.txt&action=download

Il percorso risultante sarà \files\public\private\admin\passwords.txt

Ho provato il trucco più semplice come mettere \..\ (in formato testo e URL codificati) per accedere alla cartella principale, ma non è permesso introdurre .. .

Quindi, suppongo di dover aggirare il meccanismo di sicurezza implementato sul database che inietta il percorso \files\public\ se voglio accedere a quel file (DBMS è MySQL).

È possibile eliminare la parte \public\ del percorso utilizzando i commenti con # o in un altro modo in modo che possa finalmente accedere alla directory private ?

    
posta user3358218 23.12.2016 - 22:27
fonte

1 risposta

1

None of them are vulnerable to SQL Injection

Perché dovrebbero? C'è un motivo per cui ti aspetti che lo script di download esegua una query?

Non devi fare affidamento su strumenti come sqlmap . Sono pensati per semplificare le cose, ma se vuoi imparare o testare un'applicazione in profondità, devi eseguire queste cose da solo.

It is possible to delete the \public\ part of the path using comments with #

No, non ha senso. Il percorso è costruito in questo modo:

\files\public\[INPUT_PATH]\[INPUT_FILE]

Non puoi commentare qualcosa che esiste prima il tuo input (la maggior parte - se non tutte - le API che consentono l'accesso ai file non consentono commenti nel percorso del file).

or another way so I can finally access to the private directory?

Se questo è per scopi educativi, presumo che sia pensato per essere vulnerabile. Dici che "non è permesso introdurre ...".

Questa è una supposizione che hai fatto? o hai guardato il codice sorgente ed è così che funziona? Se questo è un filtro, è necessario verificare come effettivamente funziona.

  • Che cosa succede se immetti ....\ ? Forse il filtro sostituisce ..\ con niente, che ti darebbe ..\ .
  • Filtra il nome del file e la directory? I filtri sono uguali? Puoi usarne uno per i travers, ma non per l'altro? Puoi utilizzare / anziché \ ?
  • puoi inserire . come directory e .\private\passwords.txt come file? Si combinerebbe a \files\public\..\private\passwords.txt
risposta data 23.12.2016 - 22:49
fonte

Leggi altre domande sui tag