diff --git a/XXE Injection/README.md b/XXE Injection/README.md index 7c8523c..44fd88d 100644 --- a/XXE Injection/README.md +++ b/XXE Injection/README.md @@ -31,6 +31,7 @@ Syntax: `` - [XXE inside SOAP](#xxe-inside-soap) - [XXE inside DOCX file](#xxe-inside-docx-file) - [XXE inside XLSX file](#xxe-inside-xlsx-file) +- [XXE WAF Bypass via convert character encoding](#xxe-waf-bypass-via-convert-character-encoding) ## Tools @@ -507,6 +508,17 @@ updating: xl/_rels/workbook.xml.rels (deflated 66%) updating: xl/sharedStrings.xml (deflated 17%) ``` +### XXE WAF Bypass via convert character encoding + +In XXE WAFs, DTD Prolog are usually blacklisted BUT not all WAFs blacklist the UTF-16 character encoding

+`All XML processors must accept the UTF-8 and UTF-16 encodings of Unicode` +-- https://www.w3.org/XML/xml-V10-4e-errata#E11 +

+we can convert the character encoding to `UTF-16` using [iconv](https://man7.org/linux/man-pages/man1/iconv.1.html) to bypass the XXE WAF:-
+```bash +cat utf8exploit.xml | iconv -f UTF-8 -t UTF-16BE > utf16exploit.xml +``` + ## References