Funzionalità di caricamento file Pentesting

4

Sto testando un'applicazione web che consente di caricare file in ogni formato senza restrizioni. C'è anche una funzione per scaricare i file caricati ma quando scarico il file viene restituito con l'intestazione:

Contenuto-disposizione: allegato; nomefile = test.html

quindi non si aprirà nel browser.

In che modo questa vulnerabilità può essere sfruttata? È possibile utilizzare questo bug per eseguire XSS?

Senza questa intestazione si aprirà nel browser in modo che sia sufficiente caricare il file HTML contenente lo script, è possibile eseguire un attacco simile in questo caso?

    
posta user187205 27.09.2017 - 15:29
fonte

3 risposte

3

Penso che l'unica cosa da tenere a mente è che, mentre l'intestazione forza il browser a scaricare il file, questo non impedisce che l'asset venga incluso in una pagina effettiva se un utente malintenzionato trova un modo per iniettare esso. Ad esempio, se l'URL di download era simile al seguente:

http://example.com/download/{user_file_id}

E il server ha lasciato che i suoi riferimenti vengano iniettati direttamente in un'altra pagina:

<script src="http://example.com/download/{user_file_id}"></script>

Eseguirà comunque come javascript normale, indipendentemente dal content-disposition o da qualsiasi altra intestazione. Suppongo che non ci siano buone ragioni per cui l'applicazione inietta direttamente i file caricati come javascript, nel qual caso il rischio di compromettere il server sembra minimo.

Esiste tuttavia un minore aumento del rischio di compromissione per gli altri utenti sul server. Se un utente malintenzionato trova un modo per eseguire l'iniezione XSS sul sito Web, la possibilità di ospitare il proprio carico utile javascript sul server stesso consentirà inoltre di eludere qualsiasi protezione da qualsiasi impostazione di CSP . Di conseguenza, l'iniezione di XSS diventa più pericolosa.

In realtà anche se il rischio maggiore (da quello che ho capito sul sistema che hai descritto) è probabilmente un problema legale (nota: IANAL). Se qualcuno può caricare qualcosa sul server, immagino ci siano potenziali problemi legali di cui essere a conoscenza. Il server che descrivi potrebbe essere utilizzato efficacemente per distribuire qualsiasi informazione / file / contenuto desiderato da chiunque abbia accesso ad esso: specialmente se il servizio non richiede l'autenticazione. Cosa succede se qualcuno decide di usarlo per distribuire la pedopornografia? Questo è un esempio estremo, ma a volte queste cose sono sfortunatamente rilevanti, e ci sono molti esempi meno estremi che ancora causano problemi.

    
risposta data 27.09.2017 - 21:59
fonte
7

Se si tratta di un server Apache, potresti essere in grado di caricare un file .htaccess, consentendoti di stabilire elenchi di directory o di specificare estensioni di file da eseguire come php, jsp, py o qualsiasi cosa il server sia in grado di capire.

Da lì, sarai in grado di caricare una webshell o qualcos'altro.

Tramite la configurazione .htaccess, potresti essere in grado di modificare il comportamento del server verso i file caricati e bypassare l'imposizione dell'intestazione di allegato.

In questo repository GitHub troverai alcuni attacchi basati su .htaccess come shell, RCE, attraversamenti, ecc.

    
risposta data 27.09.2017 - 23:02
fonte
2

Da quanto ho capito, non è possibile forzare il server ad eseguire il codice che hai caricato a causa dell'intestazione del lato server impostato. Tuttavia, dato che è possibile caricare ovunque il codice che si desidera, può valere la pena vedere se è possibile visualizzare questo file in qualsiasi altro luogo in cui il codice che effettivamente viene eseguito anziché scaricato.

L'unico metodo possibile che potrebbe potenzialmente funzionare è iniettare tramite il nome del file allegato stesso, ad es. simile all'intestazione di iniezione. Potrebbe essere utile la sezione "Che cos'è l'iniezione per il download di file" del seguente link: link

    
risposta data 27.09.2017 - 21:02
fonte

Leggi altre domande sui tag