Exploiting XInclude to retrieve files

Exploitation
the lab has a "check stock" feature that parses XML input

send to repeater

This application receive client-submitted data, embed it on the server-side into an XML document, and then parse the document
In this situation, you cannot carry out a classic XXE attack, because you don't control the entire XML document and so cannot define or modify a DOCTYPE
element. However, you might be able to use XInclude
instead.
XInclude
is a part of the XML specification that allows an XML document to be built from sub-documents. You can place an XInclude
attack within any data value in an XML document, so the attack can be performed in situations where you only control a single item of data that is placed into a server-side XML document.
To perform an XInclude
attack, you need to reference the XInclude
namespace and provide the path to the file that you wish to include. For example
<foo xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include parse="text" href="file:///etc/passwd"/></foo>
so let's go to the "check store" request that we've sent to repeater and send the XInclude payload within the productId
productId=<foo xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include parse="text" href="file:///etc/passwd"/></foo>&storeId=1

and we have solved the lab

hope you found this walkthrough easy to understand and follow
Greeting From Sayonara
Last updated
Was this helpful?