<summary><strong>Dowiedz się, jak hakować AWS od zera do bohatera z</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
[**SAMLExtractor**](https://github.com/fadyosman/SAMLExtractor): Narzędzie, które może przyjąć adres URL lub listę adresów URL i zwracać adres URL konsumujący SAML.
W XML część podpisana XML jest zapisywana w pamięci, następnie wykonywane jest kodowanie/odkodowanie i sprawdzany jest podpis. Idealnie kodowanie/odkodowanie nie powinno zmieniać danych, ale w oparciu o ten scenariusz **sprawdzane dane i oryginalne dane mogą się różnić**.
W atakach **opakowujących podpis XML (XSW)** przeciwnicy wykorzystują podatność wynikającą z przetwarzania dokumentów XML w dwóch różnych fazach: **walidacji podpisu** i **wywołania funkcji**. Ataki te polegają na zmianie struktury dokumentu XML. Konkretnie, atakujący **wstrzykuje sfałszowane elementy**, które nie kompromitują ważności podpisu XML. Manipulacja ta ma na celu stworzenie rozbieżności między elementami analizowanymi przez **logikę aplikacji** a tymi sprawdzanymi przez **moduł weryfikacji podpisu**. W rezultacie, podczas gdy podpis XML pozostaje technicznie ważny i przechodzi weryfikację, logika aplikacji przetwarza **fałszywe elementy**. W rezultacie atakujący skutecznie omija **ochronę integralności** i **uwierzytelnianie pochodzenia** podpisu XML, umożliwiając **wstrzyknięcie dowolnej treści** bez wykrycia.
Następujące ataki opierają się na **[tym wpisie na blogu](https://epi052.gitlab.io/notes-to-self/blog/2019-03-13-how-to-test-saml-a-methodology-part-two/) i [tej pracy naukowej](https://www.usenix.org/system/files/conference/usenixsecurity12/sec12-final91.pdf)**. Sprawdź je dla dalszych szczegółów.
- **Strategia**: Dodanie nowego elementu nadrzędnego zawierającego podpis.
- **Konsekwencje**: Walidator może się pomylić między prawidłowym "Response -> Assertion -> Subject" a "złowrogim nowym Response -> Assertion -> Subject" atakującego, co prowadzi do problemów z integralnością danych.
- **Strategia**: Podobne umieszczenie jak w XSW #4 i #5, ale z pewnym zaskoczeniem.
- **Konsekwencje**: Skopiowane Twierdzenie otacza Podpis, który następnie otacza oryginalne Twierdzenie, tworząc zagnieżdżoną strukturę wprowadzającą w błąd.
- **Strategia**: Wstawienie elementu Rozszerzenia z złośliwym Twierdzeniem jako dzieckiem.
- **Konsekwencje**: Wykorzystuje mniej restrykcyjny schemat elementu Rozszerzenia w celu obejścia przeciwdziałających walidacji schematu, zwłaszcza w bibliotekach takich jak OpenSAML.
Możesz użyć rozszerzenia Burp [**SAML Raider**](https://portswigger.net/bappstore/c61cfa893bb14db4b01775554f7b802e), aby przeanalizować żądanie, zastosować wybrany atak XSW i go uruchomić.
Odpowiedzi SAML są **skompresowanymi i zakodowanymi w formacie base64 dokumentami XML** i mogą być podatne na ataki zewnętrznych jednostek XML (XXE). Poprzez manipulację strukturą XML odpowiedzi SAML, atakujący mogą próbować wykorzystać podatności XXE. Oto, jak taki atak może być zobrazowany:
Możesz również użyć rozszerzenia Burp [**SAML Raider**](https://portswigger.net/bappstore/c61cfa893bb14db4b01775554f7b802e) do generowania POC z żądania SAML w celu przetestowania możliwych podatności XXE i podatności SAML.
Rozszerzalny język transformacji arkuszy stylów (XSLT) może być używany do przekształcania dokumentów XML na różne formaty, takie jak HTML, JSON lub PDF. Ważne jest zauważenie, że **transformacje XSLT są wykonywane przed weryfikacją cyfrowego podpisu**. Oznacza to, że atak może być udany nawet bez ważnego podpisu; wystarczający jest samopodpisany lub nieważny podpis.
Tutaj znajdziesz **POC** do sprawdzenia tego rodzaju podatności, na stronie hacktricks, o której mowa na początku tej sekcji, znajdziesz przykładowe dane wejściowe.
Możesz również użyć rozszerzenia Burp o nazwie [**SAML Raider**](https://portswigger.net/bappstore/c61cfa893bb14db4b01775554f7b802e), aby wygenerować POC z żądania SAML w celu przetestowania możliwych podatności XSLT.
**Wykluczenie podpisu XML** obserwuje zachowanie implementacji SAML, gdy element podpisu nie jest obecny. Jeśli ten element jest brakujący, **weryfikacja podpisu może nie wystąpić**, co czyni go podatnym. Można to przetestować, zmieniając zawartość, która zwykle jest weryfikowana przez podpis.
Możesz również użyć rozszerzenia Burp o nazwie [**SAML Raider**](https://portswigger.net/bappstore/c61cfa893bb14db4b01775554f7b802e). Przechwyć odpowiedź SAML i kliknij „Usuń podpisy”. W ten sposób usuwane są **wszystkie** elementy podpisu.
Fałszowanie certyfikatu to technika testowania, czy **Usługodawca (SP) prawidłowo weryfikuje, czy wiadomość SAML jest podpisana** przez zaufanego dostawcę tożsamości (IdP). Polega na użyciu **samopodpisanego certyfikatu** do podpisania odpowiedzi SAML lub twierdzenia, co pomaga w ocenie procesu walidacji zaufania między SP a IdP.
Zamieszanie w odbiorcy tokena (SAML-TRC) i zamieszanie w docelowym dostawcy usług dotyczą sprawdzenia, czy **Usługodawca prawidłowo weryfikuje zamierzony odbiorcę odpowiedzi**. W zasadzie, Usługodawca powinien odrzucić odpowiedź uwierzytelniającą, jeśli była przeznaczona dla innego dostawcy. Kluczowym elementem tutaj jest pole **Odbiorca**, znajdujące się w elemencie **SubjectConfirmationData** odpowiedzi SAML. To pole określa adres URL wskazujący, gdzie należy wysłać twierdzenie. Jeśli rzeczywisty odbiorca nie odpowiada zamierzonemu dostawcy usług, twierdzenie powinno zostać uznane za nieprawidłowe.
Aby atak SAML Token Recipient Confusion (SAML-TRC) był wykonalny, muszą być spełnione pewne warunki. Po pierwsze, na Usługodawcy musi istnieć prawidłowe konto (o nazwie SP-Legit). Po drugie, docelowy dostawca usług (SP-Target) musi akceptować tokeny od tego samego dostawcy tożsamości, który obsługuje SP-Legit.
Proces ataku jest prosty w tych warunkach. Rozpoczyna się autentyczna sesja z SP-Legit za pośrednictwem wspólnego dostawcy tożsamości. Przechwycona odpowiedź SAML od dostawcy tożsamości do SP-Legit jest następnie przekierowywana do SP-Target. Sukces w tym ataku mierzy się poprzez akceptację twierdzenia przez SP-Target, co umożliwia dostęp do zasobów przy użyciu tej samej nazwy konta, która została użyta dla SP-Legit.
To ujawniło, że parametr `base` akceptuje adres URL. W związku z tym, pojawił się pomysł podstawienia adresu URL na `javascript:alert(123);` w celu przeprowadzenia ataku XSS (Cross-Site Scripting).
Do analizy subdomen `uberinternal.com` w poszukiwaniu domen korzystających z tej samej biblioteki zostało użyte narzędzie [**SAMLExtractor**](https://github.com/fadyosman/SAMLExtractor). Następnie został opracowany skrypt, który celuje w stronę `oidauth/prompt`. Skrypt ten testuje podatność na XSS (Cross-Site Scripting), wprowadzając dane i sprawdzając, czy są one odzwierciedlane w wyniku. W przypadku, gdy dane są odzwierciedlane, skrypt oznacza stronę jako podatną.
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.