SAML Attacks
Last updated
Last updated
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
SAMLExtractor: Narzędzie, które może przyjąć URL lub listę URL i zwrócić SAML consume URL.
W XML podpisana część XML jest zapisywana w pamięci, następnie wykonywane jest kodowanie/dekodowanie i sprawdzany jest podpis. Idealnie, to kodowanie/dekodowanie nie powinno zmieniać danych, ale w oparciu o ten scenariusz, dane sprawdzane i oryginalne dane mogą nie być takie same.
Na przykład, sprawdź poniższy kod:
Uruchomienie programu przeciwko REXML 3.2.4 lub wcześniejszym wersjom skutkowałoby następującym wynikiem zamiast tego:
To jest to, jak REXML zobaczył oryginalny dokument XML z powyższego programu:
A to jest to, jak go zobaczył po rundzie analizy i serializacji:
Aby uzyskać więcej informacji na temat podatności i sposobów jej wykorzystania:
W atakach na Owijanie Podpisów XML (XSW), przeciwnicy wykorzystują podatność, która pojawia się, gdy dokumenty XML są przetwarzane w dwóch odrębnych fazach: walidacji podpisu i wywołania funkcji. Ataki te polegają na modyfikacji struktury dokumentu XML. Konkretnie, atakujący wstrzykuje fałszywe elementy, które nie naruszają ważności Podpisu XML. Ta manipulacja 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 konsekwencji, atakujący skutecznie omija ochronę integralności i uwierzytelnianie pochodzenia Podpisu XML, umożliwiając wstrzykiwanie dowolnej treści bez wykrycia.
Poniższe ataki opierają się na tym wpisie na blogu i tym artykule. Sprawdź je, aby uzyskać więcej szczegółów.
Strategia: Dodawany jest nowy element główny zawierający podpis.
Implikacja: Walidator może się pomylić między legitymnym "Response -> Assertion -> Subject" a "złym nowym Response -> Assertion -> Subject" atakującego, co prowadzi do problemów z integralnością danych.
Różnica od XSW #1: Wykorzystuje podpis odłączony zamiast podpisu opakowującego.
Implikacja: "Zła" struktura, podobnie jak w XSW #1, ma na celu oszukanie logiki biznesowej po sprawdzeniu integralności.
Strategia: Tworzony jest zły Assertion na tym samym poziomie hierarchicznym co oryginalny assertion.
Implikacja: Ma na celu wprowadzenie w błąd logiki biznesowej, aby używała złośliwych danych.
Różnica od XSW #3: Oryginalny Assertion staje się dzieckiem powielonego (złego) Assertion.
Implikacja: Podobnie jak w XSW #3, ale bardziej agresywnie zmienia strukturę XML.
Unikalny aspekt: Ani Podpis, ani oryginalny Assertion nie przestrzegają standardowych konfiguracji (opakowany/opakowujący/odłączony).
Implikacja: Skopiowany Assertion opakowuje Podpis, modyfikując oczekiwaną strukturę dokumentu.
Strategia: Podobne wstawienie lokalizacji jak w XSW #4 i #5, ale z twistem.
Implikacja: Skopiowany Assertion opakowuje Podpis, który następnie opakowuje oryginalny Assertion, tworząc złożoną strukturę oszukańczą.
Strategia: Wstawiany jest element Extensions z skopiowanym Assertion jako dzieckiem.
Implikacja: Wykorzystuje mniej restrykcyjną schemę elementu Extensions, aby obejść środki przeciwdziałania walidacji schematu, szczególnie w bibliotekach takich jak OpenSAML.
Różnica od XSW #7: Wykorzystuje inny mniej restrykcyjny element XML dla wariantu ataku.
Implikacja: Oryginalny Assertion staje się dzieckiem mniej restrykcyjnego elementu, odwracając strukturę używaną w XSW #7.
Możesz użyć rozszerzenia Burp SAML Raider, aby przeanalizować żądanie, zastosować dowolny atak XSW, który wybierzesz, i go uruchomić.
Jeśli nie wiesz, jakie rodzaje ataków to XXE, przeczytaj następującą stronę:
XXE - XEE - XML External EntityOdpowiedzi SAML to skompresowane i zakodowane w base64 dokumenty XML i mogą być podatne na ataki XML External Entity (XXE). Manipulując 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, aby wygenerować POC z żądania SAML w celu przetestowania możliwych luk XXE i luk SAML.
Sprawdź także ten wykład: https://www.youtube.com/watch?v=WHn-6xHL7mI
Aby uzyskać więcej informacji na temat XSLT, przejdź do:
XSLT Server Side Injection (Extensible Stylesheet Language Transformations)Rozszerzalne transformacje języka arkuszy stylów (XSLT) mogą być używane do przekształcania dokumentów XML w różne formaty, takie jak HTML, JSON lub PDF. Ważne jest, aby zauważyć, że transformacje XSLT są wykonywane przed weryfikacją podpisu cyfrowego. Oznacza to, że atak może być skuteczny nawet bez ważnego podpisu; wystarczy podpis własny lub nieważny, aby kontynuować.
Tutaj możesz znaleźć POC do sprawdzenia tego rodzaju luk, na stronie hacktricks wspomnianej na początku tej sekcji możesz znaleźć ładunki.
Możesz również użyć rozszerzenia Burp SAML Raider, aby wygenerować POC z żądania SAML w celu przetestowania możliwych podatności XSLT.
Sprawdź również ten wykład: https://www.youtube.com/watch?v=WHn-6xHL7mI
XML Signature Exclusion obserwuje zachowanie implementacji SAML, gdy element Signature jest nieobecny. Jeśli ten element jest brakujący, walidacja podpisu może nie wystąpić, co czyni go podatnym. Można to przetestować, zmieniając zawartość, która zazwyczaj jest weryfikowana przez podpis.
Możesz również użyć rozszerzenia Burp SAML Raider. Przechwyć odpowiedź SAML i kliknij Remove Signatures
. W ten sposób wszystkie elementy Signature są usuwane.
Po usunięciu podpisów, pozwól, aby żądanie przeszło do celu. Jeśli podpis nie jest wymagany przez usługę
Certificate Faking to technika testowania, czy Dostawca Usług (SP) prawidłowo weryfikuje, że wiadomość SAML jest podpisana przez zaufanego Dostawcę Tożsamości (IdP). Polega na użyciu *certyfikatu samopodpisanego do podpisania odpowiedzi SAML lub asercji, co pomaga w ocenie procesu walidacji zaufania między SP a IdP.
Poniższe kroki przedstawiają proces przy użyciu rozszerzenia Burp SAML Raider:
Przechwyć odpowiedź SAML.
Jeśli odpowiedź zawiera podpis, wyślij certyfikat do SAML Raider Certs, używając przycisku Send Certificate to SAML Raider Certs
.
W zakładce Certyfikaty SAML Raider wybierz zaimportowany certyfikat i kliknij Save and Self-Sign
, aby utworzyć samopodpisany klon oryginalnego certyfikatu.
Wróć do przechwyconego żądania w Proxy Burp. Wybierz nowy certyfikat samopodpisany z rozwijanej listy XML Signature.
Usuń wszelkie istniejące podpisy za pomocą przycisku Remove Signatures
.
Podpisz wiadomość lub asercję nowym certyfikatem, używając przycisku (Re-)Sign Message
lub (Re-)Sign Assertion
, w zależności od potrzeb.
Prześlij podpisaną wiadomość. Sukces autoryzacji wskazuje, że SP akceptuje wiadomości podpisane przez twój certyfikat samopodpisany, ujawniając potencjalne podatności w procesie walidacji wiadomości SAML.
Token Recipient Confusion i Service Provider Target Confusion polegają na sprawdzeniu, czy Dostawca Usług prawidłowo weryfikuje zamierzonego odbiorcę odpowiedzi. W istocie, Dostawca Usług powinien odrzucić odpowiedź autoryzacyjną, jeśli była przeznaczona dla innego dostawcy. Krytycznym elementem jest tutaj pole Recipient, znajdujące się w elemencie SubjectConfirmationData odpowiedzi SAML. To pole określa URL, wskazujący, gdzie asercja musi być wysłana. Jeśli rzeczywisty odbiorca nie odpowiada zamierzonemu Dostawcy Usług, asercja powinna być uznana za nieważną.
Aby atak Token Recipient Confusion (SAML-TRC) był możliwy, muszą być spełnione określone warunki. Po pierwsze, musi istnieć ważne konto na Dostawcy Usług (nazywanym 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. Autentyczna sesja jest inicjowana z SP-Legit za pośrednictwem wspólnego Dostawcy Tożsamości. Odpowiedź SAML od Dostawcy Tożsamości do SP-Legit jest przechwytywana. Ta przechwycona odpowiedź SAML, pierwotnie przeznaczona dla SP-Legit, jest następnie przekierowywana do SP-Target. Sukces tego ataku mierzy się tym, że SP-Target akceptuje asercję, przyznając dostęp do zasobów pod tą samą nazwą konta używaną dla SP-Legit.
Oryginalne badania można znaleźć pod tym linkiem.
Podczas procesu brutalnego wymuszania katalogów odkryto stronę wylogowywania pod adresem:
Po uzyskaniu dostępu do tego linku nastąpiło przekierowanie do:
To ujawniło, że parametr base
akceptuje URL. Biorąc to pod uwagę, pojawił się pomysł, aby zastąpić URL javascript:alert(123);
w próbie zainicjowania ataku XSS (Cross-Site Scripting).
Narzędzie SAMLExtractor zostało użyte do analizy subdomen uberinternal.com
dla domen wykorzystujących tę samą bibliotekę. Następnie opracowano skrypt, który celował w stronę oidauth/prompt
. Skrypt ten testuje XSS (Cross-Site Scripting) poprzez wprowadzanie danych i sprawdzanie, czy są one odzwierciedlane w wyjściu. W przypadkach, gdy dane wejściowe są rzeczywiście odzwierciedlane, skrypt oznacza stronę jako podatną.
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)