OAuth 2.0 & SAML Saldırıları
SSO difficulty: orta-zor
Tek oturum açma (SSO) protokolleri OAuth 2.0/OIDC ve SAML; karmaşık akışları nedeniyle zengin bir zafiyet yüzeyi sunar. Hedef genelde kod/token/assertion’ı çalmak veya doğrulamasını atlatmaktır.
OAuth / OIDC akış hatırlatma
Section titled “OAuth / OIDC akış hatırlatma”1) /authorize?client_id&redirect_uri&response_type&scope&state2) Kullanıcı IdP'de onaylar3) redirect_uri?code=...&state=... (veya implicit: #access_token=)4) Client code → /token ile access_token / id_token alırOAuth zayıflıkları
Section titled “OAuth zayıflıkları”redirect_uri gevşek doğrulama → kod/token saldırganastate eksik → login CSRF / hesap bağlamaresponse_type=token (implicit) → fragment sızıntısıPKCE yok / atlanıyor → kod interceptionscope aşırı geniş + refresh token sızıntısıclient_secret public client'ta-
redirect_uri test — tam eşleşme mi?
https://client.com/callbackhttps://client.com/callback/../../@attacker.comhttps://client.com.attacker.com/callbackhttps://attacker.com/?https://client.com/callbackhttps://client.com/callback?next=https://attacker.com -
state test — state kaldır / sabitle; account linking CSRF.
-
Token sızıntısı — Referer, history, post_logout_redirect , deep link, log.
-
code reuse / prediktable — aynı code iki kez; kısa code brute.
-
id_token — JWT ( aud , iss , alg ).
Implicit / fragment
Section titled “Implicit / fragment”redirect_uri#access_token=...&token_type=Bearer# XSS veya open redirect ile fragment çalınabilirPKCE atlatma
Section titled “PKCE atlatma”□ authorization'da code_challenge yokken token kabul□ plain metodu + tahmin□ S256 challenge proxy ile eşleştirmeClient confusions
Section titled “Client confusions”□ client_id değiştir → başka uygulamanın callback'i□ Mixed redirect_uri (http vs https)□ path traversal / subdomain on registered URI□ "pre-registration" bypass: ek query string ignoreSAML — imza ve assertion
Section titled “SAML — imza ve assertion”Assertion = XML; NameID = kullanıcı kimliğiIdP imzalar → SP doğrularSaldırı vektörleri
Section titled “Saldırı vektörleri”- İmza doğrulaması kapalı / kısmi → NameID=admin- Signature Wrapping (XSW): imzalı bloğu koru, işlenen assertion'ı değiştir- Comment injection: user<!--x-->admin@x.com- Replay: eski Assertion (NotOnOrAfter yok)- Audience / Recipient kontrolü eksik- XXE in SAML XML parseNameID manipülasyonu (imza yoksa)
Section titled “NameID manipülasyonu (imza yoksa)”<saml:Subject><saml:NameID>admin@victim.com</saml:NameID></saml:Subject>XSW özeti
Section titled “XSW özeti”İmzalı Assertion A (user=attacker) dokunulmazİşlenen kopya B'de NameID=adminSP yanlış node'u doğrular / yanlış node'u kullanır→ admin oturumuTest checklist
Section titled “Test checklist”[ ] redirect_uri tüm bypass listesi[ ] state yok/sabit[ ] PKCE zorunlu mu[ ] id_token JWT saldırıları[ ] SAML imza strip[ ] SAML XSW / comment[ ] Assertion replay[ ] Open redirect zinciriSaldırı zinciri
Section titled “Saldırı zinciri”Client open redirect + OAuth redirect_uri → auth code attacker'a → token exchange (public client) / code leak impactSAML Raider → strip signature → NameID admin → SP admin paneli