hacktricks/pentesting-web/saml-attacks/saml-basics.md

183 lines
9.2 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
2024-02-11 02:13:58 +00:00
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 02:13:58 +00:00
Njia nyingine za kusaidia HackTricks:
2022-04-28 16:01:33 +00:00
2024-02-11 02:13:58 +00:00
* Ikiwa unataka kuona **kampuni yako inatangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
2022-04-28 16:01:33 +00:00
</details>
2024-02-11 02:13:58 +00:00
# Muhtasari wa SAML
2024-02-11 02:13:58 +00:00
**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.
2024-02-11 02:13:58 +00:00
## Linganisha kati ya SAML na OAuth
2024-02-11 02:13:58 +00:00
- **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.
2024-02-11 02:13:58 +00:00
# Mchakato wa Uthibitishaji wa SAML
2024-02-11 02:13:58 +00:00
**Kwa maelezo zaidi angalia chapisho kamili kutoka [https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/](https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/)**. Hii ni muhtasari:
2021-06-09 17:02:14 +00:00
2024-02-11 02:13:58 +00:00
Mchakato wa uthibitishaji wa SAML unajumuisha hatua kadhaa, kama ilivyoelezwa kwenye mpangilio:
2021-06-09 17:02:14 +00:00
2024-02-04 16:10:29 +00:00
![https://epi052.gitlab.io/notes-to-self/img/saml/saml-flow.jpg](https://epi052.gitlab.io/notes-to-self/img/saml/saml-flow.jpg)
2024-02-11 02:13:58 +00:00
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.
2021-06-09 17:02:14 +00:00
2024-02-11 02:13:58 +00:00
# Mfano wa Ombi la SAML
2021-06-09 17:02:14 +00:00
2024-02-11 02:13:58 +00:00
Fikiria hali ambapo mtumiaji anauliza upatikanaji wa rasilimali salama kwenye [https://shibdemo-sp1.test.edu/secure/](https://shibdemo-sp1.test.edu/secure/). SP inatambua ukosefu wa uthibitisho na inazalisha Ombi la SAML:
```
2021-06-09 17:02:14 +00:00
GET /secure/ HTTP/1.1
Host: shibdemo-sp1.test.edu
2024-02-04 16:10:29 +00:00
...
2021-06-09 17:02:14 +00:00
```
2024-02-11 02:13:58 +00:00
Ombi la SAML lenye data halisi linaonekana kama ifuatavyo:
2024-02-04 16:10:29 +00:00
```xml
2021-06-09 17:02:14 +00:00
<?xml version="1.0"?>
2024-02-04 16:10:29 +00:00
<samlp:AuthnRequest ...
2021-06-09 17:02:14 +00:00
</samlp:AuthnRequest>
```
2024-02-11 02:13:58 +00:00
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.
2021-06-09 17:02:14 +00:00
2024-02-11 02:13:58 +00:00
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.
2021-06-09 17:02:14 +00:00
2024-02-11 02:13:58 +00:00
# Mfano wa SAML Response
2021-06-09 17:02:14 +00:00
2024-02-11 02:13:58 +00:00
Unaweza kupata [jibu kamili la SAML hapa](https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/). Vipengele muhimu vya jibu ni pamoja na:
2021-06-09 17:02:14 +00:00
2024-02-11 02:13:58 +00:00
- **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.
2021-06-09 17:02:14 +00:00
2024-02-11 02:13:58 +00:00
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.
2021-06-09 17:02:14 +00:00
2024-02-11 02:13:58 +00:00
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.
2021-06-09 17:02:14 +00:00
2024-02-11 02:13:58 +00:00
# Saini za XML
2024-02-11 02:13:58 +00:00
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:
2024-02-11 02:13:58 +00:00
### Muundo Msingi wa Saini ya XML
Saini ya XML ina vipengele muhimu kama inavyoonyeshwa:
2024-02-04 16:10:29 +00:00
```xml
<Signature>
2024-02-11 02:13:58 +00:00
<SignedInfo>
<CanonicalizationMethod />
<SignatureMethod />
<Reference>
<Transforms />
<DigestMethod />
<DigestValue />
</Reference>
...
</SignedInfo>
<SignatureValue />
<KeyInfo />
<Object />
</Signature>
```
2024-02-11 02:13:58 +00:00
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:
```xml
<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`.
2024-02-11 02:13:58 +00:00
2. **Saini Iliyofungwa**: Tofauti na saini iliyofungwa, saini iliyoifunga inazunguka rasilimali inayosainiwa.
Mfano:
```xml
<ds:Signature>
<ds:SignedInfo>
...
<ds:Reference URI="#...">
...
</ds:Reference>
</ds:SignedInfo>
<samlp:Response ... ID="..." ... >
...
</samlp:Response>
</ds:Signature>
```
3. **Saini Isiyofungwa**: Aina hii iko tofauti na yaliyosainiwa. Saini na yaliyosainiwa zipo kivyake, lakini kiungo kati ya hizo mbili kinadumishwa.
Mfano:
```xml
<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
2024-02-04 16:10:29 +00:00
* [https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/](https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/)
2022-04-28 16:01:33 +00:00
<details>
2024-02-11 02:13:58 +00:00
<summary><strong>Jifunze kuhusu udukuzi wa AWS kutoka mwanzo hadi kuwa bingwa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 02:13:58 +00:00
Njia nyingine za kusaidia HackTricks:
2022-04-28 16:01:33 +00:00
2024-02-11 02:13:58 +00:00
* Ikiwa unataka kuona **kampuni yako inatangazwa kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi wa PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwenye** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>