Lesser Known Injections XML Injections AMol NAik

advertisement
Lesser Known Injections
XML Injections
AMol NAik
About me
Web Application PentesterCore member of
Garage4HackersBounty Hunter in
pastCurrently fuzzing browsers for Fun &
Profit
Garage4Hackers
Family of 3,800, posts 8k+40+ best Bug Bounty submissions15+
browser bugs in Chrome, IE, FF & SafariASLR bypass method
presented at CanSecWest was already shared on G4H forum5+
Information Security Research (cable TV & Datacard)10+ Tools
& scripts, 1+ Web application CTFRanchhoddas Webcast Series
– 5+ webinarsFollow us on Twitter @garage4hackers
Agenda
XML BasicXML InjectionXXE AttackXPath
BasicsXPath Injections
XXE is a the new SQL Injection
- Someone on Twitter
XML Injection in Real-World
Yandex pwned for $5000 with XXE by
@d0znppOpenID XXE by Reginaldo
SilvaMultiple XXE bugs by @Securatary
teamXXE in Google Toolbar by Detectify team
- $10k
XML Basics
XML Basics
eXtensible Markup LanguageFlexible textbased formatPresents structured infoUsed
for Data Exchange/Storage
XML Components
XML – CDATA Section
Tells parser not to use markup for characters
in this sectionExamples:
XML Injections
XML Injections
Injection Points
XML Injection – Node Attribute
XML Injection – Node Attribute
XML Injection – Node Value
XML Injection – Node Value
XML Injection – CDATA Section
XML Injection – CDATA Section
XXE Attack
XML Entity
VariableDefine Can be Internal/External
XML Entity
XXE Attack
XPath Basics
Language to select XML NodesFormats XML
data as tree-structured valuesSimilar as SQL
(in some sense)
XPath Syntax
Uses path expressions to select nodes or
node-sets in an xml document
Expression
Description
nodename
Selects all child nodes of the named node
/
Selects from root node
//
Selects nodes from the current node that match the selection
no matter where they are
.
Selects current node
..
Selects parent of the current node
XPath Predicates
Used to find a specific node or a node that
contain specific value.Always embedded in
square brackets
XPath Predicates
Expression
Result
/Employees/Employee[1]
Selects first ‘Employee’ element that is the child
of ‘Employees’ element
/Employees/Employee[last()]
Selects last ‘Employee’ element that is the child
of ‘Employees’ element
/Employees/Employee[position()<3]
Selects first 2 ‘Employee’ elements that are
children of Employees element
//Employee[@ID=‘1’]
Selects all the ‘Employee’ elements that have an
attribute named ‘ID’ with a value of ‘1’
XPath Location Path
Syntax: axisname::nodetest[predicate]
XPath Location Path
Example
Result
child::Employee
Selects all ‘Employee’ node that are children of the
current node
attribute::id
Selects the id attribute of the current node
child::*
Selects all children of the current node
attribute::*
Selects all attributes of the current node
child::text()
Selects all text child nodes of the current node
child::node()
Selects all child nodes of the current node
descendant::Employees
Selects all ‘Employees’ descendants of the current node
XPath Injection
XPath
Query:/Employees/Employee[UserName/text()
= ‘user’ and Password/text() =
‘passwd’]/Type/text()
XPath Injection
No UserName & Password known:
XPath Injection
UserName
known:/Employees/Employee[UserName/text()
= ‘mbrown’ or ‘1’=‘1’ and Password/text()
= ‘anything’]Type/text()
XPath Injection
No UserName & Password known & Password is
not vulnerable:
Conclusion
XML Injections are ignoredMany sites having
these issues
That's It !!
AMol NAik
@amolnaik4
mailto: amolnaik4@garage4hackers.com
References
XPath InjectionHacking XPath 2.0Blind XPath
Injection
Download