Estoy tratando de entender el concepto detrás de XXE (inyección de entidad externa XML). Pasé por Pautas de OWASP sobre XXE
Y como soy nuevo en XML y DTD, también estudié los tutoriales de W3Cschools sobre estos temas. Ahora, de acuerdo con mis lecturas, intenté crear una demo de XXE. Así que abajo está mi intento de hacer lo mismo: -
<?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>
Y en el camino
file: /// Users / testuser / Desktop / BB / demos /
Tengo un archivo test.txt que contiene una cadena, por ejemplo: -
esto es algo secreto
Ahora, cuando abro mi archivo XML en Firefox, me da la estructura de árbol de mi documento XML y, como se esperaba, expande el escritor y el copyright de las entidades con su contenido respectivo tal como se define en la DTD. Sin embargo, el analizador XML no expandió la "ataque" de la entidad, lo que debería haber ocurrido como se ha demostrado en el enlace anterior.
Ahora me gustaría saber por qué no se expandió el ataque de la entidad. Y en segundo lugar, incluso si se expandiera, ¿no entrarán en juego aquí los permisos de archivo (del sistema de archivos local)?