Quindi sono un pentester e ho scoperto "feature" su un server che mi permette, essenzialmente, di attraversare ciecamente i file di un server web (senza eseguirli o leggerli). Il problema è che non riesco a capire un modo per dimostrarlo come una vulnerabilità. La domanda generale è: quali file, per la loro natura di conoscenza del loro nome, rappresentano una vulnerabilità (se esiste)?
Nel mio scenario specifico, il sistema operativo è Windows e posso fare una richiesta come questa.
http://example.com?site=file://C:\Users\Administrator
Il server restituirà una pagina che indica che non può caricare questo file, mentre se faccio una richiesta come questa:
http://example.com?site=file://C:\Users\namethatwouldneverexist
, mi dirà che il file non può essere trovato.
In sostanza, il server controlla se il file esiste prima di controllare se ho le autorizzazioni per leggerlo.
Ecco alcune cose che ho provato:
-
../../../
(etc) Questo si traduce in una directory valida, il che significa che mi dirà che è vietato. Non utile. -
%appdata%
Questo si traduce in un diverso tipo di errore, l'applicazione non ama i segni di percentuale nel percorso, quindi non lo espande per me. -
C:\Windows\system32\ping.exe 8.8.8.8
Questo comporterà un errore "non trovato", in quanto non passa i parametri (o esegue il file). -
file://x
questo esporrà il pwd a me, ma questo non è particolarmente interessante nel mio scenario.
Sono stato in grado di enumerare le unità di rete mappate, ma questo non è particolarmente utile. Posso anche essenzialmente effettuare una scansione del server dalla rete locale per esporre porte private, ma per il momento sono più interessato al filesystem.
Essenzialmente, la mia domanda si riduce a: la capacità di identificare positivamente un file esistente su un server costituisce una vulnerabilità e, in caso affermativo, come? Ovviamente, se hai un'idea per trasformare questo in RCE, allora va bene anche così!