Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/trilwu/secskillsnpx agentmods add skills/trilwu/secskills/exploiting-xxeWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/trilwu/secskills/exploiting-xxe)<a href="https://agentmods.dev/skills/trilwu/secskills/exploiting-xxe"><img src="https://agentmods.dev/badge/skills/trilwu/secskills/exploiting-xxe/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/trilwu/secskills/exploiting-xxe"><img src="https://agentmods.dev/badge/skills/trilwu/secskills/exploiting-xxe.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00000 | $0.03605 |
| Opus 5 | $0.00000 | $0.01802 |
| Sonnet 5 | $0.00000 | $0.00721 |
| Haiku 4.5 | $0.00000 | $0.00361 |
Grade C, and why
exploiting-xxe scanned grade C with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Reaches for credential filesmediumPrivilege escalation
SSH keys, cloud credentials, git-credentials, .npmrc, /etc/shadow: reading these is how a config file becomes a credential leak.
file:///home/<user>/.ssh/id_rsa Downgraded: this mod is about security review, or the phrase is quoted, so it is likely naming the pattern rather than instructing it.
Cloud metadata endpointmediumServer-side request forgery
One request to 169.254.169.254 can return temporary IAM credentials.
<!ENTITY xxe SYSTEM "http://169.254.169.254/latest/meta-data/iam/security-credentials/"> Downgraded: this mod is about security review, or the phrase is quoted, so it is likely naming the pattern rather than instructing it.
How it starts
The opening of the file, as written. The whole thing — 345 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Exploiting XXE
XXE is what happens when an XML parser is allowed to resolve external entities the document defines. The attacker writes a DTD that tells the parser to fetch a file or a URL, and the parser obliges with the server's privileges. The reach is local file read and SSRF into the internal network. The hard cases are blind — the parser resolves the entity but never reflects it, so you exfiltrate out of band or through error messages.
Only against systems you are authorized to test.
When to Use
- A request body is XML:
Content-Type: application/xml,text/xml, or a SOAP envelope, and the body starts with<?xml - A file upload parses a format that is XML underneath: SVG, or an Office OOXML file (DOCX, XLSX, PPTX) which is a ZIP of XML parts, or an XML-bearing PDF
- An endpoint consumes RSS/Atom feeds, XML-RPC, or SAML assertions
- A parameter or field is later embedded into a server-side XML document
- Source review shows an XML parser built without external entities disabled
- You have a suspected sink but no reflected output — test for blind XXE
When NOT to Use
- The wider web methodology — use
testing-web-applicationsto find the sink before you land here - The primitive is a plain URL fetch, not XML — use
exploiting-ssrf - Object deserialization — a different sink; use
exploiting-deserialization - XXE inside a SAML flow specifically — start with
attacking-samlfor the signature, replay, and assertion context, then return here for the parser - Finding the parser configuration in source — use
auditing-code-for-vulnerabilities
Recognizing XML Sinks
XML hides in more places than a Content-Type header:
- Raw XML bodies — REST endpoints that accept
application/xml - SOAP — the envelope is XML; the
<?xmlprolog and DTD go before<soap:Envelope> - SVG uploads — avatars, image processors, thumbnailers, chart renderers
- Office OOXML — DOCX/XLSX/PPTX are ZIP archives of XML parts; the parser
reads
word/document.xml,xl/workbook.xml, etc. - PDF — some generators and XMP metadata paths parse embedded XML
- RSS/Atom — feed importers parse attacker-controlled feed URLs
- SAML — the
<samlp:Response>and<saml:Assertion>are XML - XML-RPC — the method call envelope is XML
- Config/import features — "import from XML", sitemap uploads, plist parsing
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 5d ago First seen · 345 lines · 0 tokens per session scan C adad117983e3
exploiting-xxe is a skill published in the GitHub repository trilwu/secskills (137 stars, last pushed 4d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 3,605 tokens. A static security scan graded it C with 2 findings (reaches for credential files, cloud metadata endpoint). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
build-mcp-server
This skill should be used when the user asks to "build an MCP server", "create an MCP", "make an MCP integration", "wrap an API for Claude", "expose tools to Claude", "make an MCP app", or discusses building something with the Model Context Protocol. It is the entry point for MCP server development — it interrogates…
data-manager-api-setup
Guides developers through client library installation and authentication setup steps for the Data Manager API. Use this skill when a user is getting started with the Data Manager API and needs to setup their local environment, install the client library, or setup access to the API. Don't use for implementing audience…
workers-best-practices
Cloudflare Workers best practices for production applications. Use when writing, reviewing, or configuring Workers.
new
Create a new project to start development quickly.
skd-edit
A focused editor for 1C data composition schemas, the report definitions that describe queries, fields, filters, totals, and parameters. It changes an existing Template.xml file through specific operations.
skd-info
A structure reader for 1C data composition schemas, the report definitions that contain queries, fields, parameters, and display variants. It gives a compact summary instead of requiring you to read the raw XML.