XML Security Scanner

XXE Vulnerability Scanner

Instantly detect XML External Entity (XXE) injection vulnerabilities, SSRF vectors, entity bombs, blind XXE patterns, and dangerous protocol handlers in your XML — free, with no login required.

16+
XXE Patterns Detected
100%
Free, No Login
CWE-611
Standard Coverage
OWASP
A05 & A10 Aligned

XML Input

Drag & drop your XML file here, or click to browse

Supports .xml, .dtd, .xsd, .svg, .rss — max 500KB

0 / 500,000 characters

Load Sample Payloads

Analysing XML document…

Checking entity declarations, protocol handlers, and nesting depth

Scan Results

Advanced Detection

Everything You Need to Test XML Security

Our scanner combines pattern analysis, structural inspection, and parser-level checks to surface XXE risks instantly.

Multi-Protocol Detection

Identifies dangerous URI schemes including file://, http://, php://, gopher://, netdoc://, and expect:// commonly used in XXE exploitation chains.

Blind XXE Recognition

Detects parameter entities and out-of-band patterns used in blind XXE attacks where data exfiltration occurs via DNS or HTTP callbacks.

XML Bomb (DoS) Detection

Identifies Billion Laughs and other recursive entity expansion patterns that can exhaust server memory and cause denial-of-service.

XInclude Vector Analysis

Flags xi:include namespace declarations — an often-overlooked XXE alternative that bypasses DOCTYPE-level defences entirely.

SSRF Pattern Matching

Surfaces XML-based Server-Side Request Forgery vectors targeting internal cloud metadata endpoints, Redis, Memcached, and SMTP services.

Payload Library

Nine ready-to-test payloads covering file read, SSRF, PHP wrappers, RCE via expect, gopher SSRF, and one safe reference XML.

Well-formedness Check

Runs a libxml2-powered parse check to surface malformed XML errors alongside security findings — a complete picture in one scan.

JSON Report Export

Download the full scan report as structured JSON for integration with SIEM platforms, bug trackers, or CI/CD pipelines.

OWASP & CWE Mapping

Every finding maps to OWASP Top 10 categories and CWE identifiers, making remediation reporting clear for developers and auditors.

How It Works

Scan XML in Three Simple Steps

No account, no setup, no waiting. Paste and scan in seconds.

Provide XML

Paste raw XML, upload a file (.xml, .dtd, .svg, .wsdl), or select a sample payload from the built-in library.

Choose Scan Mode

Select Standard, Deep, or OWASP-aligned mode depending on the thoroughness and focus you need.

Review Findings

Findings are grouped by severity with line numbers, matched patterns, CWE references, and actionable remediation guidance.

Export & Fix

Download the JSON report, filter by severity, and apply the parser-specific remediation steps provided for your stack.

Understanding XXE Vulnerabilities in XML Processing

XML External Entity (XXE) injection ranks among the most impactful and frequently underestimated attack classes in modern web applications. Every time a backend system ingests XML, it relies on a parser to interpret the document's structure — and if that parser is configured to honour entity declarations, an attacker can weaponise the standard to read arbitrary files, forge internal HTTP requests, or crash the server entirely.

The mechanics of an XXE attack are deceptively simple. An attacker embeds a DOCTYPE block containing a custom entity that points to a sensitive resource — most classically file:///etc/passwd on Linux systems or file:///C:/Windows/win.ini on Windows. When the application echoes the parsed value back to the client, the file's contents travel with it. This is in-band XXE, and it remains one of the fastest paths from unauthenticated access to credential theft in enterprise environments.

Blind XXE variants are more sophisticated. Here, the parser resolves an external entity that triggers an HTTP or DNS callback to an attacker-controlled server, exfiltrating data without any response reflection. Parameter entities — prefixed with the % symbol inside DOCTYPE — are a hallmark of blind XXE chains. They allow the construction of multi-stage payloads that first load a remote DTD, which in turn defines secondary entities referencing local files, forwarding their contents over the network.

XML injection through XInclude represents another blind spot. Because XInclude is processed at the application layer rather than the DTD level, parsers that reject DOCTYPE declarations may still resolve xi:include elements, making XInclude a common bypass for naive XXE mitigations. Our scanner explicitly checks for the XInclude namespace alongside traditional entity vectors.

The denial-of-service dimension of XML XXE is often overlooked. The Billion Laughs attack — a chain of self-referential entity definitions — can inflate a 1 KB document into gigabytes of in-memory text, collapsing the parser in milliseconds. With no network access required, this makes it a particularly accessible tool for disrupting publicly exposed XML endpoints such as SOAP APIs, RSS feeds, and XML configuration services.

XXE via PHP wrappers adds further depth. When the php://filter stream wrapper appears in a SYSTEM entity URI, attackers can retrieve base64-encoded file contents — bypassing controls that look for plaintext patterns. The even more severe expect:// wrapper, if the PHP expect extension is installed, turns an XXE finding directly into remote code execution.

From an XXE test and remediation standpoint, the most reliable defence is disabling external entity processing at the parser level. In PHP, calling libxml_disable_entity_loader(true) before any simplexml_load_string() or DOMDocument::loadXML() call prevents the parser from resolving SYSTEM or PUBLIC entities. In Java, setting XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES to false and enabling the http://apache.org/xml/features/disallow-doctype-decl feature on SAX and DOM factories achieves the same result. Python's defusedxml library wraps stdlib parsers with sane defaults. Whichever language stack you use, never pass untrusted XML to a parser that has not been explicitly hardened.

Security vulnerability management in XML-heavy architectures also benefits from a schema-first approach. Pre-validating incoming documents against a fixed, server-side XSD schema ensures the structure matches expectations before any entity expansion can occur. Pairing schema validation with a strict URI allowlist — permitting only approved protocol schemes and hostnames — eliminates the remaining attack surface even when entity processing is inadvertently left enabled.

Use this free XXE vulnerability scanner as the first line of defence in your XML security review. Load a payload, observe the detection logic, and then apply the remediation steps to your own parser configuration. Prevention is always cheaper than breach response.

FAQ

Frequently Asked Questions

XXE injection is a web security vulnerability where an attacker embeds malicious external entity references inside XML input submitted to a vulnerable parser. When the parser resolves these entities, it can read local files, perform server-side request forgery against internal services, or trigger denial-of-service through recursive entity expansion. It is classified under CWE-611 and appears in the OWASP Top 10 under A05 (Security Misconfiguration).
The primary approach is static analysis of any XML accepted by your application. Paste or upload the XML into this scanner and it will check for DOCTYPE declarations, SYSTEM/PUBLIC external entities, dangerous protocol handlers (file://, php://, gopher://, expect://), parameter entities, XInclude vectors, and recursive expansion patterns. For dynamic testing, tools like Burp Suite can intercept XML requests and inject XXE payloads, with out-of-band callback detection via Burp Collaborator.
In-band XXE is the classic form: the parsed entity value is returned in the HTTP response, allowing direct file content retrieval. Blind XXE occurs when the application processes entities but does not reflect their values in responses. Attackers exploit blind XXE using out-of-band channels — triggering DNS lookups or HTTP requests to attacker-controlled servers that carry the exfiltrated data. Parameter entities and multi-stage DTD chaining are the typical mechanisms for blind XXE exploitation.
Disable DOCTYPE declarations and external entity processing in your XML parser configuration. In PHP: use libxml_disable_entity_loader(true) and avoid LIBXML_NOENT. In Java: set XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES = false and enable the disallow-doctype-decl feature. In Python: use the defusedxml library. Additionally, validate XML against a fixed server-side schema, never load schemas from untrusted URIs, and prefer JSON where XML is not strictly required.
Yes. Analysis is performed on our server using PHP's libxml with external entity loading disabled — the scanner detects patterns rather than executing them. No submitted XML is stored, logged, or retained after the request completes. For documents containing highly sensitive production data (credentials, PII, confidential config), we recommend sanitising or anonymising values before scanning, as a general best practice when using any online security tool.

Explore More Free Security Tools

SEOWebChecker.com offers 100+ free online tools covering security testing, SEO analysis, converters, DevOps utilities, and AI-powered workflows.

More Tools You Might Find Useful

A/B Testing Tool AI Website Tester TLS Version Checker CIBA Flow Tester Colour Calibration Core Web Vitals FPS Test GraphQL API Tester Regex Tester REST API Tester gRPC API Tester SOAP API Tester Website Status Typing Speed Test Pen Testing XPath Query Tester