<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
**Security Assertion Markup Language (SAML)** omogućava korišćenje provajdera identiteta (IdP) za slanje autorizacionih podataka servis provajderima (SP), olakšavajući jednokratnu prijavu (SSO). Ovaj pristup pojednostavljuje upravljanje višestrukim prijavama omogućavajući korišćenje jednog seta podataka za prijavu na više veb sajtova. Koristi XML za standardizovanu komunikaciju između IdP-a i SP-a, povezujući autentifikaciju korisničkog identiteta sa autorizacijom servisa.
**Za dodatne detalje pogledajte ceo post na [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/)**. Ovo je sažetak:
Razmotrite scenario u kojem korisnik zahteva pristup bezbednom resursu na [https://shibdemo-sp1.test.edu/secure/](https://shibdemo-sp1.test.edu/secure/). SP prepoznaje nedostatak autentifikacije i generiše SAML zahtev:
Nakon generisanja SAML zahteva, SP odgovara sa **302 preusmerenjem**, usmeravajući pregledač na IdP sa SAML zahtevom kodiranim u zaglavlju HTTP odgovora **Location**. Parametar **RelayState** održava informacije o stanju tokom transakcije, osiguravajući da SP prepozna početni zahtev resursa prilikom primanja SAML odgovora. Parametar **SAMLRequest** je komprimirana i kodirana verzija sirovog XML isečka, koristeći Deflate kompresiju i base64 kodiranje.
Možete pronaći [potpuni SAML odgovor ovde](https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/). Ključni delovi odgovora uključuju:
- **ds:Signature**: Ova sekcija, XML potpis, osigurava integritet i autentičnost izdavača tvrdnje. SAML odgovor u primeru sadrži dva `ds:Signature` elementa, jedan za poruku i drugi za tvrdnju.
- **saml:Assertion**: Ovaj deo sadrži informacije o identitetu korisnika i eventualno druge atribute.
- **saml:Subject**: Ovde se navodi glavni subjekt svih izjava u tvrdnji.
- **saml:StatusCode**: Predstavlja status operacije u odgovoru na odgovarajući zahtev.
- **saml:Conditions**: Detalji o uslovima kao što su važnost tvrdnje i određeni pružalac usluga.
- **saml:AuthnStatement**: Potvrđuje da je IdP autentifikovao subjekt tvrdnje.
- **saml:AttributeStatement**: Sadrži atribute koji opisuju subjekt tvrdnje.
Nakon SAML odgovora, proces uključuje 302 preusmerenje od strane IdP-a. To dovodi do POST zahteva ka URL-u Assertion Consumer Service (ACS) pružaoca usluga. POST zahtev uključuje parametre `RelayState` i `SAMLResponse`. ACS je odgovoran za obradu i validaciju SAML odgovora.
Nakon što se primi POST zahtev i validira SAML odgovor, pristup se odobrava zaštićenom resursu koji je korisnik prvobitno zahtevao. To se ilustruje sa `GET` zahtevom ka `/secure/` endpointu i `200 OK` odgovorom, što ukazuje na uspešan pristup resursu.
XML potpisi su svestrani i mogu potpisivati celo XML stablo ili određene elemente unutar njega. Mogu se primeniti na bilo koji XML objekat, ne samo na elemente odgovora. Ovo su ključne vrste XML potpisa:
Svaki `Reference` element označava određeni resurs koji se potpisuje, prepoznatljiv preko atributa URI.
### Vrste XML potpisa
1.**Enveloped Signature**: Ova vrsta potpisa je potomak resursa koji se potpisuje, što znači da se potpis nalazi unutar iste XML strukture kao i potpisani sadržaj.
Primer:
```xml
<samlp:Response...ID="..."...>
...
<ds:Signature>
<ds:SignedInfo>
...
<ds:ReferenceURI="#...">
...
</ds:Reference>
</ds:SignedInfo>
</ds:Signature>
...
</samlp:Response>
```
U enveloped potpisu, element `ds:Transform` specificira da je potpis omotan kroz algoritam `enveloped-signature`.
2.**Enveloping Signature**: Za razliku od enveloped potpisa, enveloping potpisi obuhvataju resurs koji se potpisuje.
Primer:
```xml
<ds:Signature>
<ds:SignedInfo>
...
<ds:ReferenceURI="#...">
...
</ds:Reference>
</ds:SignedInfo>
<samlp:Response...ID="..."...>
...
</samlp:Response>
</ds:Signature>
```
3.**Detached Signature**: Ova vrsta je odvojena od sadržaja koji se potpisuje. Potpis i sadržaj postoje nezavisno, ali se održava veza između njih.
Zaključno, XML potpisi pružaju fleksibilne načine za obezbeđivanje XML dokumenata, pri čemu svaka vrsta služi različitim strukturnim i sigurnosnim potrebama.
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.