Come utilizzare la vulnerabilità XSS per leggere il file sul server?

1

Posso utilizzare una vulnerabilità XSS per leggere i file sul server iniettando il codice PHP nella pagina? Esempio: usa document.write per iniettare il codice PHP che legge il file.

    
posta DarkC0de 14.07.2016 - 08:19
fonte

4 risposte

4

No. XSS consente di eseguire Javascript in un browser di un altro utente. Ciò rende possibile fare richiesta per conto dell'utente. Poiché il codice viene eseguito solo nel browser, non è possibile utilizzare il codice PHP.

Se si dispone di XSS e si desidera eseguire il codice sul server, l'approccio migliore sarebbe quello di rubare i cookie di un amministratore connesso utilizzando XSS e utilizzare l'interfaccia di amministrazione per accedere ulteriormente al server. Il furto dei cookie con XSS non funziona se il cookie è contrassegnato come httponly, perché in tal caso non è possibile leggere il cookie con Javascript.

    
risposta data 14.07.2016 - 08:49
fonte
3

Esiste una variante di XSS, talvolta chiamata "Script cross-site lato server". È molto meno comune di XSS lato client. Infatti, l'ho visto solo una volta su un sito web live.

Si verifica quando il server esegue il rendering di documenti HTML. Ciò può accadere quando il server produce un PDF (ad esempio una fattura stampabile) e l'HTML fa parte della catena. Se l'utente malintenzionato può inserire tag in questo codice HTML, può fare riferimento alle risorse locali sul server. Nell'esempio che ho visto, era possibile includere solo le immagini, ma le varianti potrebbero consentire di includere altri tipi di file.

Alcune persone potrebbero obiettare che non si tratta di XSS. È un esempio di CWE-610: riferimento controllato esternamente a una risorsa in un'altra sfera . Altri esempi potrebbero essere entità esterne XML e riferimenti esterni da documenti Word o SVG. Penso che "Server-side XSS" sia un nome ragionevole per questo, ma sono aperto ad altri suggerimenti.

    
risposta data 14.07.2016 - 09:34
fonte
2

Stai confondendo script eseguiti sul server e script eseguiti sul client.

Quando si esegue XSS, si inserisce lo script sul client. Di solito è JavaScript, ma potrebbe essere VBScript o qualche altro linguaggio di scripting client.

Non puoi usare document.write per scrivere PHP. Quella funzione è JavaScript ed è quindi eseguita sul client. Scrive nel documento che sta utilizzando il client (ad esempio il browser). Poiché PHP viene eseguito sul server, questo non funzionerà.

È possibile inserire codice PHP se esiste una vulnerabilità nel codice lato server che consente di eseguire codice. Per esempio. se hai qualcosa di simile

eval($_GET['param']);

potresti usarlo per eseguire codice PHP arbitrario e rubare i file dal server. Tale vulnerabilità è molto più grave di una normale vulnerabilità XSS, ma anche molto meno comune.

    
risposta data 14.07.2016 - 09:01
fonte
1

Immaginiamo che ci sia un account amministratore in webapp appositamente predisposta e che l'account abbia i diritti per ottenere determinati file dal server (come, se l'amministratore richiede /getfile.php?filename.txt, il file getfile.php restituisce il contenuto di "nomefile .testo"). Quindi è possibile iniettare una richiesta ajax sul lato client dell'amministratore e richiedere i file con quello.

    
risposta data 14.07.2016 - 10:03
fonte

Leggi altre domande sui tag