SAML Attacks
Last updated
Last updated
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
SAMLExtractor: Alat koji može uzeti URL ili listu URL-ova i ispisati SAML consume URL.
U XML-u, potpisani deo XML-a se čuva u memoriji, zatim se vrši neka kodiranje/dekodiranje i potpis se proverava. Idealno, to kodiranje/dekodiranje ne bi trebalo da menja podatke, ali na osnovu tog scenarija, proveravani podaci i originalni podaci ne bi mogli biti isti.
Na primer, proverite sledeći kod:
Pokretanje programa protiv REXML 3.2.4 ili ranijeg rezultiraće sledećim izlazom umesto toga:
Ovo je kako je REXML video originalni XML dokument iz gornjeg programa:
A ovo je kako ga je video nakon obrade i serijalizacije:
Za više informacija o ranjivosti i kako je iskoristiti:
U XML Signature Wrapping napadima (XSW), protivnici koriste ranjivost koja nastaje kada se XML dokumenti obrađuju kroz dve različite faze: validacija potpisa i poziv funkcije. Ovi napadi uključuju menjanje strukture XML dokumenta. Konkretno, napadač ubacuje lažne elemente koji ne kompromituju validnost XML potpisa. Ova manipulacija ima za cilj da stvori razliku između elemenata koje analizira aplikaciona logika i onih koje proverava modul za verifikaciju potpisa. Kao rezultat, dok XML potpis ostaje tehnički validan i prolazi verifikaciju, aplikaciona logika obrađuje lažne elemente. Kao posledica, napadač efikasno zaobilazi zaštitu integriteta i autentifikaciju porekla XML potpisa, omogućavajući ubacivanje proizvoljnog sadržaja bez otkrivanja.
Sledeći napadi se zasnivaju na ovom blog postu i ovoj studiji. Proverite ih za dodatne detalje.
Strategija: Dodaje se novi korenski element koji sadrži potpis.
Implikacija: Validator može biti zbunjen između legitimnog "Response -> Assertion -> Subject" i napadačevog "zlog novog Response -> Assertion -> Subject", što dovodi do problema sa integritetom podataka.
Razlika od XSW #1: Koristi odvojeni potpis umesto obavijenog potpisa.
Implikacija: "Zla" struktura, slična XSW #1, ima za cilj da prevari poslovnu logiku nakon provere integriteta.
Strategija: Kreira se zla Assertion na istom hijerarhijskom nivou kao originalna assertion.
Implikacija: Ima za cilj da zbuni poslovnu logiku da koristi maliciozne podatke.
Razlika od XSW #3: Originalna Assertion postaje dete duplicirane (zle) Assertion.
Implikacija: Slično XSW #3, ali agresivnije menja XML strukturu.
Jedinstveni aspekt: Ni potpis ni originalna Assertion ne pridržavaju se standardnih konfiguracija (obavijen/obavijajući/odvojeni).
Implikacija: Kopirana Assertion obavija potpis, menjajući očekivanu strukturu dokumenta.
Strategija: Slična lokacijska umetanja kao XSW #4 i #5, ali sa preokretom.
Implikacija: Kopirana Assertion obavija potpis, koji zatim obavija originalnu Assertion, stvarajući ugnježdenu obmanjujuću strukturu.
Strategija: Umeće se element Extensions sa kopiranom Assertion kao detetom.
Implikacija: Ovo koristi manje restriktivnu šemu elementa Extensions da zaobiđe mere protiv validacije šeme, posebno u bibliotekama kao što je OpenSAML.
Razlika od XSW #7: Koristi drugi manje restriktivni XML element za varijantu napada.
Implikacija: Originalna Assertion postaje dete manje restriktivnog elementa, preokrećući strukturu korišćenu u XSW #7.
Možete koristiti Burp ekstenziju SAML Raider da analizirate zahtev, primenite bilo koji XSW napad koji odaberete i pokrenete ga.
Ako ne znate koji su napadi XXE, molimo vas da pročitate sledeću stranicu:
XXE - XEE - XML External EntitySAML odgovori su deflacionirani i base64 kodirani XML dokumenti i mogu biti podložni napadima XML External Entity (XXE). Manipulacijom XML strukture SAML odgovora, napadači mogu pokušati da iskoriste XXE ranjivosti. Evo kako se takav napad može vizualizovati:
Možete takođe koristiti Burp ekstenziju SAML Raider da generišete POC iz SAML zahteva kako biste testirali moguće XXE ranjivosti i SAML ranjivosti.
Pogledajte takođe ovo predavanje: https://www.youtube.com/watch?v=WHn-6xHL7mI
Za više informacija o XSLT idite na:
XSLT Server Side Injection (Extensible Stylesheet Language Transformations)Ekstenzibilni jezik za transformaciju stilova (XSLT) može se koristiti za transformaciju XML dokumenata u različite formate kao što su HTML, JSON ili PDF. Ključno je napomenuti da se XSLT transformacije vrše pre verifikacije digitalnog potpisa. To znači da napad može biti uspešan čak i bez važećeg potpisa; samopotpisani ili nevažeći potpis je dovoljan za nastavak.
Ovde možete pronaći POC za proveru ovakvih ranjivosti, na hacktricks stranici pomenutoj na početku ovog odeljka možete pronaći payload-e.
Možete takođe koristiti Burp ekstenziju SAML Raider da generišete POC iz SAML zahteva kako biste testirali moguće XSLT ranjivosti.
Pogledajte takođe ovo predavanje: https://www.youtube.com/watch?v=WHn-6xHL7mI
Isključenje XML potpisa posmatra ponašanje SAML implementacija kada element Potpis nije prisutan. Ako je ovaj element nedostajući, verifikacija potpisa možda neće biti izvršena, što ga čini ranjivim. Moguće je testirati ovo menjajući sadržaj koji se obično verifikuje potpisom.
Možete takođe koristiti Burp ekstenziju SAML Raider. Presretnite SAML odgovor i kliknite Remove Signatures
. Na taj način svi elementi potpisa se uklanjaju.
Sa uklonjenim potpisima, dozvolite zahtevu da nastavi ka cilju. Ako potpis nije potreban od strane Servisa
Lažiranje sertifikata je tehnika za testiranje da li Provajder usluga (SP) pravilno verifikuje da je SAML poruka potpisana od strane pouzdane Identitetske provajder (IdP). Uključuje korišćenje *samo-potpisanog sertifikata za potpisivanje SAML odgovora ili potvrde, što pomaže u evaluaciji procesa verifikacije poverenja između SP i IdP.
Sledeći koraci opisuju proces korišćenja SAML Raider Burp ekstenzije:
Presretnite SAML odgovor.
Ako odgovor sadrži potpis, pošaljite sertifikat u SAML Raider Certs koristeći dugme Send Certificate to SAML Raider Certs
.
U SAML Raider kartici Sertifikati, izaberite uvezeni sertifikat i kliknite Save and Self-Sign
da kreirate samo-potpisanu kopiju originalnog sertifikata.
Vratite se na presretnuti zahtev u Burp-ovom Proxy-ju. Izaberite novi samo-potpisani sertifikat iz padajućeg menija XML potpisa.
Uklonite sve postojeće potpise pomoću dugmeta Remove Signatures
.
Potpišite poruku ili potvrdu novim sertifikatom koristeći dugme (Re-)Sign Message
ili (Re-)Sign Assertion
, kako je prikladno.
Prosledite potpisanu poruku. Uspešna autentifikacija ukazuje da SP prihvata poruke potpisane vašim samo-potpisanim sertifikatom, otkrivajući potencijalne ranjivosti u procesu verifikacije SAML poruka.
Zbunjenost primaoca tokena i Zbunjenost cilja provajdera usluga uključuju proveru da li Provajder usluga pravilno verifikuje nameravanog primaoca odgovora. U suštini, Provajder usluga bi trebao odbiti odgovor na autentifikaciju ako je bio namenjen drugom provajderu. Ključni element ovde je polje Primaoc, koje se nalazi unutar elementa SubjectConfirmationData SAML odgovora. Ovo polje specificira URL koji ukazuje gde potvrda mora biti poslata. Ako stvarni primalac ne odgovara nameravanom Provajderu usluga, potvrda bi trebala biti smatrana nevažećom.
Da bi napad na Zbunjenost primaoca tokena (SAML-TRC) bio izvodljiv, određeni uslovi moraju biti ispunjeni. Prvo, mora postojati važeći nalog na Provajderu usluga (naziva se SP-Legit). Drugo, ciljani Provajder usluga (SP-Target) mora prihvatati tokene od iste Identitetske provajder koja služi SP-Legit.
Proces napada je jednostavan pod ovim uslovima. Autentična sesija se pokreće sa SP-Legit putem zajedničkog Identitetskog provajdera. SAML odgovor od Identitetskog provajdera ka SP-Legit se presreće. Ovaj presretnuti SAML odgovor, prvobitno namenjen za SP-Legit, se zatim preusmerava na SP-Target. Uspeh u ovom napadu meri se prihvatanjem potvrde od strane SP-Target, omogućavajući pristup resursima pod istim imenom naloga koji se koristi za SP-Legit.
Originalno istraživanje može se pristupiti putem ove veze.
Tokom procesa brute force napada na direktorijum, otkrivena je stranica za odjavu na:
При приступу овом линку, дошло је до преусмеравања на:
Ovo je otkrilo da base
parametar prihvata URL. Uzimajući to u obzir, pojavila se ideja da se URL zameni sa javascript:alert(123);
u pokušaju da se inicira XSS (Cross-Site Scripting) napad.
SAMLExtractor alat je korišćen za analizu poddomena uberinternal.com
za domene koji koriste istu biblioteku. Nakon toga, razvijen je skript koji cilja stranicu oidauth/prompt
. Ovaj skript testira XSS (Cross-Site Scripting) unosom podataka i proverava da li se oni odražavaju u izlazu. U slučajevima kada se unos zaista odražava, skript označava stranicu kao ranjivu.
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)