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;©right;&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?