XXE e il suo impatto

3

Sto cercando di capire il concetto alla base di XXE (XML External Entity injection). Ho esaminato Linee guida OWASP su XXE

E dal momento che sono nuovo di XML e DTD, ho seguito anche i tutorial di W3Cschools su questi argomenti. Ora come da mie letture ho provato a creare una demo di XXE. Quindi di seguito è il mio tentativo di fare lo stesso: -

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body,author)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
<!ENTITY writer "Donald Duck.">
<!ENTITY copyright "Copyright W3Schools">
<!ENTITY attack SYSTEM "file:///Users/testuser/Desktop/BB/demos/test.txt">
]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend</body>
<author>&writer;&copyright;&attack;</author> 
</note> 

E nel percorso

file:///Users/testuser/Desktop/BB/demos/

Ho un file test.txt che contiene una stringa che dice: -

this is secret stuff

Ora, quando apro il mio file XML in Firefox, mi dà la struttura ad albero del mio documento XML e, come previsto, espande lo scrittore di entità e il copyright con i rispettivi contenuti come definito nella DTD. Tuttavia, il parser XML non ha espanso l'entità "attack", che avrebbe dovuto accadere come è stato dimostrato nel link sopra riportato.

Ora vorrei sapere perché l'attacco dell'entità non è stato ampliato. E in secondo luogo, anche se fosse espanso, i permessi dei file (del file system locale) non entreranno in gioco qui?

    
posta qre0ct 05.01.2014 - 13:04
fonte

2 risposte

2

Solo per dare un po 'di rilievo al tuo punto originale sui browser.

Solitamente XXE è un attacco sul lato server, quindi un utente che visualizza il sito può accedere a file al di fuori del webroot, a cui normalmente non avrebbero accesso.

L'accesso e l'impatto di XXE dipende dalla presenza di file utili da parte dell'utente malintenzionato e anche dalle autorizzazioni dell'utente che esegue l'applicazione web. Il tipo di cose che potrebbero rivelarsi particolarmente problematiche sono i file di configurazione in posizioni prevedibili che contengono nomi utente / password che consentono all'aggressore di ottenere un accesso aggiuntivo (ad esempio un file che fornisce le credenziali per un'applicazione di gestione)

C'è anche la possibilità teoricamente di trasformarlo in inclusione di file remoti come specifiche. supporta il concetto di un'entità esterna remota (ad esempio, ritira il contenuto di un file da un server remoto ed elaborale nel documento), ma non l'ho mai visto implementato nella pratica.

In termini di attenuazione, ciò avviene solitamente a livello del parser XML e la soluzione più semplice è disabilitare l'espansione dell'entità, a meno che non sia specificamente richiesta per il funzionamento dell'applicazione (raramente un requisito da ciò che ho visto) . Se è necessario, la validazione / codifica dell'input è probabilmente l'approccio corretto per risolverlo.

    
risposta data 05.01.2014 - 14:54
fonte
2

Se esegui linux, c'è un parser XML, xmllint. Puoi usarlo per analizzare documenti xml e per espandere i riferimenti di entità usa l'opzione --noent.
Ad esempio:

xmllint --noent xxe.xml

E, . Il permesso del file entra in gioco. Se non hai i permessi sufficienti per leggere il file, si verificherà un errore.

Ad esempio, supponendo che tu sia su una macchina Linux, se sostituisci
file: ///Users/testuser/Desktop/BB/demos/test.txt
con
file: /// etc / shadow
ottieni un errore. Puoi, quindi, eseguire il comando precedente con sudo per ottenere il contenuto del file etc / shadow .

Spero che aiuti, almeno per gli altri che potrebbero visitare questo:)

    
risposta data 05.05.2015 - 16:05
fonte

Leggi altre domande sui tag