SAML authentication attacks
SkillSecurityAttack SAML SSO, signature exclusion/wrapping (XSW), unsigned assertions, and comment/XXE tricks to forge authentication. Load on SAML SSO (SAMLResponse, ACS URL, IdP/SP), enterprise login, or "SAML". Signals: SAMLResponse base64 in POST, /saml/acs, <saml:Assertion>, Shibboleth/ADFS/Okta SSO.
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the SAML authentication attacks skill
What this skill tells your AI
The instructions your AI receives, as published by noorqureshi/sploitagent in skills/web/web-saml/SKILL.md and read by ahel’s review.
When it applies
The app authenticates via SAML SSO — the browser POSTs a base64 SAMLResponse (an XML assertion
signed by the IdP) to the SP's ACS endpoint. Break the signature validation and you forge login as anyone.
Why it works
SAML security rests entirely on the SP correctly validating the XML signature over the assertion. XML signature validation is notoriously error-prone: SPs accept unsigned assertions, validate the wrong element, or can be tricked by XML Signature Wrapping (XSW) — where a signed element is kept for validation but an injected unsigned assertion is what the app actually reads.
Method
- Capture & decode the
SAMLResponse(Burp + SAML Raider extension). Identify what's signed (Response vs Assertion) and theNameID/attributes that set the user. - Signature exclusion: strip the
<ds:Signature>and send — some SPs accept unsigned assertions. - XSW: wrap/inject a second assertion (or move the signature) so the validator checks the
original signed blob but the app consumes your forged assertion with
NameID=admin(SAML Raider automates the XSW variants). - Comment injection:
admin@corp.com<!---->.evilinNameID— some parsers read it asadmin@corp.compost-canonicalization → login as admin. - Other: key confusion (SP trusts attacker cert), XXE in the SAML parser (→
web-xxe), replay if noNotOnOrAfter/InResponseTochecks,Recipient/Audiencenot validated.
Gotchas
- Identify the exact signed element first — XSW works by satisfying the validator while changing what's used.
- If signatures are properly validated over the assertion with no wrapping bug, pivot to replay/audience/comment issues.
- Prove with two accounts you own: forge from a low-priv login into a privileged
NameID.
Verify success
Authentication as a different/privileged user via a forged or manipulated SAMLResponse the SP accepts.
References
PortSwigger SAML; SAML Raider; "On Breaking SAML" (XSW, Somorovsky et al.).
Signals
- GitHub stars
- 20
- Forks
- 7
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
web-saml- Source
- github.com/noorqureshi/sploitagent
github.com/noorqureshi/sploitagent