TL;DR

XXExploiter là CLI mã nguồn mở (TypeScript, MIT, ~599 stars) tự động hoá toàn bộ chuỗi khai thác lỗ hổng XXE — XML External Entity. Một câu lệnh xxexploiter lo cả bốn việc: sinh payload XML, dựng DTD server, thu data out-of-band, và fuzz endpoint bằng wordlist. Dành cho bug bounty hunter, pentester, CTF player — ai từng mất 20 phút dựng tay DTD server cho mỗi blind XXE sẽ hiểu vì sao tool này đang lan nhanh lại trên X/Twitter cuối tháng 4/2026.

XXExploiter là gì

Tác giả là Luis Fontes (luisfontes19 trên GitHub). Cốt lõi: thay vì bạn phải tự viết payload XML, tự mở Python HTTP server, tự parse log để lấy data, XXExploiter làm hết. Cài bằng npm install -g xxexploiter hoặc clone repo rồi npm install && npm run build.

Cấu trúc CLI xoay quanh 4 lệnh chính:

  • file — đọc file local trên target qua entity external, kiểu <!ENTITY xxe SYSTEM "file:///etc/passwd">.
  • request — ép target gửi HTTP request ra ngoài, tức SSRF qua XXE (chạm AWS metadata, Redis nội bộ, admin panel…).
  • expect — RCE qua PHP wrapper expect:// nếu module expect còn bật.
  • xee — entity expansion / billion-laughs DOS.

Vì sao đáng chú ý

XXE vẫn là vector sống khoẻ: SOAP endpoints, SAML assertions, XML-RPC API, upload DOCX/SVG/XLSX, thậm chí content-type switching từ JSON sang XML ở các endpoint form chuẩn đều có thể lòi XXE. PortSwigger nhấn mạnh nhiều XML parser bật sẵn feature resolve external entity — dev không biết là đã dính.

Pain point thật của pentester: blind XXE. Server không trả kết quả trong response, phải dựng OOB server để bắt DNS/HTTP callback. Dựng thủ công tốn thời gian, dễ sai config DTD parameter entity. XXExploiter chuẩn hoá bước này — một lệnh là có server chạy sẵn tại 0.0.0.0:7777, DTD tự generate, data về log ngay.

Thông số kỹ thuật

3 extraction mode:

ModeCách hoạt độngKhi nào dùng
xmlTrả kết quả in-band, ngay trong responseParser echo lại nội dung entity
oobExfil qua DTD server do tool dựngBlind XXE, response không echo
cdataBọc CDATA để thoát ký tự XML-unsafeFile có <, >, & trong nội dung

Encoding: none hoặc phpbase64 — mode thứ hai hữu ích khi đọc file PHP mà nội dung chứa ký tự phá XML parser.

CLI options chính: -s (server address), -p (port, default 7777), -t (template XML), -m (mode), -e (encoding), -o (save payload), -x (auto-send request), -X (capture response), -w (wordlist fuzz), -y/-n (success/error string).

Placeholder: trong template tự định nghĩa, dùng {{XXE}} hoặc {{XXE_B64}} để chèn payload, {{FUZZ}} cho wordlist iteration.

So sánh với công cụ khác

Công cụOOB server built-inFuzzingNgôn ngữGhi chú
XXExploiterCó (wordlist)TypeScriptGọn, một CLI lo hết
XXEinjectorHạn chếRubyLâu đời, ít update
OXML_XXEKhôngKhôngRubyMạnh cho file Office/SVG upload
Burp + tayTự dựngQua IntruderAnyLinh hoạt nhất, chậm nhất

Use case thực tế

  • Bug bounty: quét endpoint SOAP/SAML, upload SVG/DOCX. Chạy oob mode xác nhận blind XXE trong chưa tới 1 phút.
  • Pentest nội bộ: chain SSRF từ XXE vào AWS metadata http://169.254.169.254/latest/meta-data/iam/, hoặc gõ Redis gopher:// nội bộ.
  • CTF: web challenge XXE giải bằng một command thay vì copy-paste cheat sheet từ HackTricks.
  • AppSec defense: reproduce bug report nhanh, verify fix (disable external entity resolution, set XMLConstants.FEATURE_SECURE_PROCESSING) thật sự chặn được.

Giới hạn & giá

Giá: miễn phí, MIT license.

Giới hạn cần biết:

  • Chỉ work khi XML parser target bật resolve external entity. Stack hiện đại (Spring mới, .NET gần đây, lxml mặc định) đã disable — tỉ lệ trúng giảm ở target greenfield.
  • expect chain cần PHP có module expect — cực hiếm ở prod.
  • OOB mode cần attacker có public IP/domain reachable từ target (không chạy được sau NAT thuần).
  • Không bypass được WAF signature-based nếu không tự custom template.
  • CLI-only, không có GUI.

Pháp lý: chỉ dùng trên hệ thống có authorization rõ ràng — bug bounty scope, hợp đồng pentest, CTF, lab cá nhân. Scan bừa target ngoài scope có thể vi phạm CFAA (Mỹ), Luật An ninh mạng (VN) và các đạo luật tương đương.

Hướng tiếp theo

Tool đã có trên GitHub nhiều năm, vòng viral mới đến từ một post trên X/Twitter cuối tháng 4/2026, gợi lại nhắc nhở: XXE chưa chết. Còn SOAP, còn SAML IdP, còn XML-RPC, còn file upload parse bằng lib cũ — còn đất diễn. Nếu bạn làm AppSec, thêm XXExploiter vào lab template, chạy thử một lần để quen workflow; nếu bạn viết parser, double-check đã tắt external entity chưa.

Nguồn: GitHub luisfontes19/xxexploiter, docs site, PortSwigger Web Security Academy, OWASP XXE, Invicti OOB XXE.