SAML Basics

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Muhtasari wa SAML

Security Assertion Markup Language (SAML) inawezesha watoaji wa kitambulisho (IdP) kutumiwa kutuma vitambulisho vya idhini kwa watoaji wa huduma (SP), kurahisisha kuingia kwa moja kwa moja (SSO). Njia hii inasaidia usimamizi wa kuingia kwa moja kwa moja kwa kuruhusu seti moja ya vitambulisho kutumiwa kwenye tovuti nyingi. Inatumia XML kwa mawasiliano yaliyostandardishwa kati ya IdP na SP, kuunganisha uwakilishi wa kitambulisho cha mtumiaji na idhini ya huduma.

Linganisha kati ya SAML na OAuth

  • SAML imeundwa kutoa udhibiti mkubwa kwa mashirika juu ya usalama wa kuingia kwa moja kwa moja.

  • OAuth imeundwa kuwa rafiki zaidi kwa simu, hutumia JSON, na ni juhudi ya ushirikiano kutoka kwa kampuni kama vile Google na Twitter.

Mchakato wa Uthibitishaji wa SAML

Kwa maelezo zaidi angalia chapisho kamili kutoka https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/. Hii ni muhtasari:

Mchakato wa uthibitishaji wa SAML unajumuisha hatua kadhaa, kama ilivyoelezwa kwenye mpangilio:

  1. Jaribio la Kupata Rasilimali: Mtumiaji anajaribu kupata rasilimali iliyolindwa.

  2. Uzalishaji wa Ombi la SAML: SP haikubali mtumiaji na inazalisha Ombi la SAML.

  3. Uelekezaji kwa IdP: Mtumiaji anaelekezwa kwa IdP, na Ombi la SAML likipitia kivinjari cha mtumiaji.

  4. IdP Inapokea Ombi: IdP inapokea Ombi la SAML.

  5. Uthibitishaji kwa IdP: IdP inathibitisha mtumiaji.

  6. Uthibitishaji wa Mtumiaji: IdP inathibitisha uhalali wa mtumiaji kupata rasilimali iliyoombwa.

  7. Uundaji wa Jibu la SAML: IdP inazalisha Jibu la SAML lenye madai muhimu.

  8. Uelekezaji kwa URL ya ACS ya SP: Mtumiaji anaelekezwa kwenye URL ya Huduma ya Wateja ya Madai (ACS) ya SP.

  9. Uthibitishaji wa Jibu la SAML: ACS inathibitisha Jibu la SAML.

  10. Rasilimali Inapatikana: Upatikanaji wa rasilimali iliyoombwa hapo awali unaruhusiwa.

Mfano wa Ombi la SAML

Fikiria hali ambapo mtumiaji anauliza upatikanaji wa rasilimali salama kwenye https://shibdemo-sp1.test.edu/secure/. SP inatambua ukosefu wa uthibitisho na inazalisha Ombi la SAML:

GET /secure/ HTTP/1.1
Host: shibdemo-sp1.test.edu
...

Ombi la SAML lenye data halisi linaonekana kama ifuatavyo:

<?xml version="1.0"?>
<samlp:AuthnRequest ...
</samlp:AuthnRequest>

Vipengele muhimu vya ombi hili ni:

  • AssertionConsumerServiceURL: Inabainisha mahali IdP inapaswa kutuma SAML Response baada ya uwakiki.

  • Destination: Anwani ya IdP ambayo ombi linatumwa.

  • ProtocolBinding: Inafafanua njia ya uhamisho ya ujumbe wa itifaki ya SAML.

  • saml:Issuer: Inatambua kitengo kilichoanzisha ombi.

Baada ya kuzalisha Ombi la SAML, SP inajibu na 302 redirect, ikiongoza kivinjari kwa IdP na SAML Request iliyohifadhiwa katika kichwa cha majibu ya HTTP cha Location. Parameter ya RelayState inahifadhi habari ya hali kwa njia ya shughuli, ikisaidia SP kutambua ombi la rasilimali ya awali baada ya kupokea SAML Response. Parameter ya SAMLRequest ni toleo lililofupishwa na kuhifadhiwa kwa njia ya msimbo wa XML, ikichanganya ujazo wa Deflate na msimbo wa base64.

Mfano wa SAML Response

Unaweza kupata jibu kamili la SAML hapa. Vipengele muhimu vya jibu ni pamoja na:

  • ds:Signature: Sehemu hii, Saini ya XML, inahakikisha uadilifu na uhalali wa mtumaji wa tamko. Jibu la SAML katika mfano lina vipengele viwili vya ds:Signature, kimoja kwa ujumbe na kingine kwa tamko.

  • saml:Assertion: Sehemu hii ina habari kuhusu kitambulisho cha mtumiaji na labda sifa zingine.

  • saml:Subject: Inabainisha mada kuu ya taarifa zote katika tamko.

  • saml:StatusCode: Inawakilisha hali ya uendeshaji kujibu ombi husika.

  • saml:Conditions: Inaelezea hali kama vile muda wa halali wa Tamko na Mtoa Huduma aliyetajwa.

  • saml:AuthnStatement: Inathibitisha kuwa IdP iliwakiki mada ya Tamko.

  • saml:AttributeStatement: Ina sifa zinazoelezea mada ya Tamko.

Baada ya SAML Response, mchakato unaendelea na 302 redirect kutoka kwa IdP. Hii inasababisha ombi la POST kwa URL ya Huduma ya Watumiaji wa Tamko (ACS) ya Mtoa Huduma. Ombi la POST linajumuisha parameter za RelayState na SAMLResponse. ACS inawajibika kwa usindikaji na uthibitishaji wa SAML Response.

Baada ya kupokea ombi la POST na kuthibitisha SAML Response, upatikanaji unaruhusiwa kwa rasilimali iliyolindwa ambayo mtumiaji aliiomba awali. Hii inaonyeshwa na ombi la GET kwa kielekezi cha /secure/ na majibu ya 200 OK, ikionyesha upatikanaji mafanikio wa rasilimali.

Saini za XML

Saini za XML ni za kubadilika, zinaweza kusaini mti mzima wa XML au vipengele maalum ndani yake. Zinaweza kutumika kwa Kitu chochote cha XML, sio tu vipengele vya Majibu. Hapa chini ni aina muhimu za Saini za XML:

Muundo Msingi wa Saini ya XML

Saini ya XML ina vipengele muhimu kama inavyoonyeshwa:

<Signature>
<SignedInfo>
<CanonicalizationMethod />
<SignatureMethod />
<Reference>
<Transforms />
<DigestMethod />
<DigestValue />
</Reference>
...
</SignedInfo>
<SignatureValue />
<KeyInfo />
<Object />
</Signature>

Kila kipengele cha Reference kinawakilisha rasilimali maalum inayosainiwa, inayoweza kutambulika kwa sifa ya URI.

Aina za Saini za XML

  1. Saini Iliyofungwa: Aina hii ya saini ni kizazi cha rasilimali inayosainiwa, maana saini iko ndani ya muundo huo huo wa XML kama yaliyosainiwa.

Mfano:

<samlp:Response ... ID="..." ... >
...
<ds:Signature>
<ds:SignedInfo>
...
<ds:Reference URI="#...">
...
</ds:Reference>
</ds:SignedInfo>
</ds:Signature>
...
</samlp:Response>

Katika saini iliyofungwa, kipengele cha ds:Transform kinabainisha kuwa imefungwa kupitia algorithm ya enveloped-signature.

  1. Saini Iliyofungwa: Tofauti na saini iliyofungwa, saini iliyoifunga inazunguka rasilimali inayosainiwa.

Mfano:

<ds:Signature>
<ds:SignedInfo>
...
<ds:Reference URI="#...">
...
</ds:Reference>
</ds:SignedInfo>
<samlp:Response ... ID="..." ... >
...
</samlp:Response>
</ds:Signature>
  1. Saini Isiyofungwa: Aina hii iko tofauti na yaliyosainiwa. Saini na yaliyosainiwa zipo kivyake, lakini kiungo kati ya hizo mbili kinadumishwa.

Mfano:

<samlp:Response ... ID="..." ... >
...
</samlp:Response>
<ds:Signature>
<ds:SignedInfo>
...
<ds:Reference URI="#...">
...
</ds:Reference>
</ds:SignedInfo>
</ds:Signature>

Kwa muhtasari, Saini za XML zinatoa njia mbalimbali za kusaidia nyaraka za XML, na kila aina ikitumika kwa mahitaji tofauti ya muundo na usalama.

Marejeo

Jifunze kuhusu udukuzi wa AWS kutoka mwanzo hadi kuwa bingwa na htARTE (HackTricks AWS Red Team Expert)!

Njia nyingine za kusaidia HackTricks:

Last updated