xxe - xml external entity attack

25
Web Application Security - Team bi0s © 2017 XXE XML External Entity 25 February 2017 @ Team bi0s 1/ 25 HEERAJ Btech, Third Year, Computer Science Engineering Amrita University

Upload: cysinfo-cyber-security-community

Post on 12-Apr-2017

311 views

Category:

Software


12 download

TRANSCRIPT

Page 1: XXE - XML External Entity Attack

Web Application Security - Team bi0s © 2017

XXE XML External Entity

25 February 2017

@Team bi0s 1/25

HEERAJBtech, Third Year, Computer Science EngineeringAmrita University

Page 2: XXE - XML External Entity Attack

whoami

Web Application Security - Team bi0s © 2017 @Team bi0s

➔ Undergraduate Student @ Amrita

➔ Web Security Enthusiast

➔ CTF{flag_seeker}

➔ @HRJ

➔ ww.i4info.in

2/25

Page 3: XXE - XML External Entity Attack

Agenda

Web Application Security - Team bi0s © 2017 @Team bi0s

➔ Intro to XML & DTD

➔ XML Entity

➔ Parsing XML

➔ Attacks Vector

➔ Demo

3/25

Page 4: XXE - XML External Entity Attack

XML

Web Application Security - Team bi0s © 2017 @Team bi0s

➔EXtensible Markup Language

4/25

Picture:123RF.COM

Page 5: XXE - XML External Entity Attack

Where it is used ?

Web Application Security - Team bi0s © 2017 @Team bi0s

➔ Document Formats

➔ Image Formats

➔ Configuration Files

➔ Network Protocols

➔ RSS Feeds … etc . . .

5/25

Picture: c-sharpcorner.com

Page 6: XXE - XML External Entity Attack

Document Type Definition

Web Application Security - Team bi0s © 2017 @Team bi0s

➔ References an ExternalDTD

➔ Define structure with the list of legal elements

6/25

Page 7: XXE - XML External Entity Attack

XML Entity

Web Application Security - Team bi0s © 2017 @Team bi0s

➔ Entities help to reduce the entry of repetitive information and also allow for easier editing

Output:Writer: Donald Duck. Copyright: bi0s.

7/25

Page 8: XXE - XML External Entity Attack

XML Entity

Web Application Security - Team bi0s © 2017 @Team bi0s

XML Entity

Internal Entity External Entity

8/25

Page 9: XXE - XML External Entity Attack

Parsing

Web Application Security - Team bi0s © 2017 @Team bi0s

➔ Character other than < , > , & , ‘ , “ all are parsable.

➔ PCDATA is text that will be parsed by a parser. Tags inside the text will be treated as markup and entities will be expanded.

➔ CDATA is text that will not be parsed by a parser.

9/25

Page 10: XXE - XML External Entity Attack

Attack’s Possible

Web Application Security - Team bi0s © 2017 @Team bi0s

➔ LFI

➔ SSRF

➔ Internal scans

➔ Denial of Service

➔ Rce (Not Always!!!)

10/25

Page 11: XXE - XML External Entity Attack

Attack Vectors

Web Application Security - Team bi0s © 2017 @Team bi0s

Classic XXEWe can view any file which doesn’t contain < , > , & , ‘ , “ as characters.

11/25

Avinash S
Here they used the power/image_size as it is simple to test. But showing this as the first example of XXE can be confusing as many people might not even know what is the purpose of this file. Replace it with the example of etc/passwd (e.g., see #4 of https://www.blackhat.com/docs/us-15/materials/us-15-Wang-FileCry-The-New-Age-Of-XXE.pdf).
Page 12: XXE - XML External Entity Attack

12

Page 13: XXE - XML External Entity Attack

Direct Feedback Channel

Web Application Security - Team bi0s © 2017 @Team bi0s

What if you are Reading

Some configuration files?

13

Page 14: XXE - XML External Entity Attack

Direct Feedback Channel

Web Application Security - Team bi0s © 2017 @Team bi0s

➔ CDATA very helpful to read web configuration, which contain non parsable characters.

But this won’t work !!

14/25

Avinash S
You really want to show spelling mistake of end?
Page 15: XXE - XML External Entity Attack

Direct Feedback Channel

Web Application Security - Team bi0s © 2017 @Team bi0s

➔ We have to use Parameter entities

➢ Parameter.dtd

15/25

Page 16: XXE - XML External Entity Attack

Out Of Band Channel

Web Application Security - Team bi0s © 2017 @Team bi0s 16/25

Page 17: XXE - XML External Entity Attack

Out Of Band Channel

Web Application Security - Team bi0s © 2017 @Team bi0s

➔ No Direct Feedback Channel

17/25

Website: http://web-in-security.blogspot.in/2016/03/xxe-cheat-sheet.html

Avinash S
Cite Christian's and Vladislav's blog post here and wherever you used screenshots from that post. I know them quite well and they are very conscious about other people citing their work.
Page 18: XXE - XML External Entity Attack

Billion Laughs Attack (Simple Denial of Service)

Web Application Security - Team bi0s © 2017 @Team bi0s

➔ Works by expansion property (Simple code(<1kb) will expand up to 3 gigabytes of memory.

18/25

Page 19: XXE - XML External Entity Attack

Different Protocols

Web Application Security - Team bi0s © 2017 @Team bi0s 19/25

Page 20: XXE - XML External Entity Attack

OFFICE OPEN XML

Web Application Security - Team bi0s © 2017 @Team bi0s

➔ Zip archive file containing XML and media files

➔ *.docx , *.xlsx , *.pptx

➔ Developed by Microsoft

20/25

Page 21: XXE - XML External Entity Attack

OFFICE OPEN XML

Web Application Security - Team bi0s © 2017 @Team bi0s

21/25

Open XML File Container

Document Properties

Custom Defined XML

CommentsWordML/

SpreadsheetML etc

Embedded Code/Macros

Images, Video, Sound Files

Charts

Page 22: XXE - XML External Entity Attack

OFFICE OPEN XML

Web Application Security - Team bi0s © 2017 @Team bi0s

➔ General Parsing XML◆ /_rels/.rels◆ [Content_Types].xml◆ Default Main Document

● /word/document.xml● /ppt/presentation.xml● /xl/workbook.xml

22/25

Page 23: XXE - XML External Entity Attack

Playing With Content Type

Web Application Security - Team bi0s © 2017 @Team bi0s

➔ Server may accept multiple data formats

➔ Results in Json endpoints may be vulnerable to XXE

➔ Content-Type changed to application/xml

➔ JSON has to be converted to XML

23/25

Page 24: XXE - XML External Entity Attack

Demo

Web Application Security - Team bi0s © 2017 @Team bi0s

24/25

Page 25: XXE - XML External Entity Attack

Solution

Web Application Security - Team bi0s © 2017 @Team bi0s

➢ Don’t reflect the XML back to user➢ Turn off external DTD fetching ➢ Turn off DTD➢ Disable External Entity Parsing

libxml_disable_entity_loader(true);(PHP)

25/25