SAML Hücumları
Last updated
Last updated
XML-də XML-in imzalanmış hissəsi yaddaşda saxlanılır, sonra bəzi kodlaşdırma/deşifrə həyata keçirilir və imza yoxlanılır. İdeal olaraq, kodlaşdırma/şifrləmə məlumatları dəyişməməlidir, lakin bu ssenari əsasında yoxlanılan məlumatlar və orijinal məlumatlar eyni ola bilməz.
Məsələn, aşağıdakı kodu yoxlayın:
Proqramı REXML 3.2.4 və ya daha əvvəlki versiyalara qarşı işlətmək əvəzinə aşağıdakı nəticə ilə nəticələnəcək:
REXML yuxarıdakı proqramdan orijinal XML sənədini belə gördü:
Parsing və serialization dövründən sonra bu belə görünür:
XML İmzalarını ehtiva edən XML sənədləri adətən iki müstəqil addımda emal edilir: imzanın yoxlanılması və funksiyanın çağırılması (biznes məntiqi). Hər iki modulun məlumatlara fərqli baxışları varsa, XML Signature Wrapping Hücumları (XSW) adlı zəifliklərin yeni sinfi mövcuddur. Bu hücumlarda düşmən XML İmzasını ləğv etməyən saxta elementlər yeritməklə mesaj strukturunu dəyişdirir. Bu dəyişikliyin məqsədi mesajı elə dəyişdirməkdir ki, proqram məntiqi və imza yoxlama modulu mesajın müxtəlif hissələrini istifadə etsin. Nəticə etibarilə, qəbuledici XML İmzasını uğurla yoxlayır, lakin proqram məntiqi saxta elementi emal edir. Təcavüzkar beləliklə XML İmzasının bütövlüyünün qorunması və mənşə identifikasiyasından yayınır və ixtiyari məzmunu yeridə bilər.
SAML sorğusundan:
Təcavüzkar imzanın tapıldığı yerə yeni root element əlavə edə bilər. Buna görə də, təsdiqləyici imzanın bütövlüyünü yoxlayanda qeyd edə bilər ki, o, Response -> Assertion -> Subject bütövlüyünü yoxlayıb və o, evil yeni Response -> Assertion -> Subject yolu qırmızı ilə qarışdırıla bilər və onun məlumatlarından istifadə edir.
#1 ilə fərq ondan ibarətdir ki, istifadə edilən İmza növü ayrılmış imzadır, burada XSW #1 əhatə edən imzadan istifadə edir. Integrity yoxlanışı aparıldıqdan sonra iş məntiqini çaşdırmağa çalışmadan əvvəl yeni evil strukturun necə eyni olduğuna diqqət yetirin.
Bu hücumda iş məntiqini çaşdırmağa və evil məlumatlardan istifadə etməyə cəhd etmək üçün ilkin təsdiqlə eyni səviyyədə evil təsdiqi yaradılır.
XSW #4 #3-ə bənzəyir, bu halda orijinal Təsdiq kopyalanan Təsdiqin chil-ı olur.
XSW #5-də Signature və the original Assertion üç standart konfiqurasiyadan birində deyil (enveloped/enveloping/detached). Bu halda, kopyalanan Assertion Signature envelop edir.
SAML Cavablarının söndürülməsi və XML sənədlərinin base64 olması səbəbindən biz SAML Cavabı olaraq göndərilən XML sənədini manipulyasiya etməklə XXE-ni sınaqdan keçirə bilərik. Misal:
Extensible Stylesheet Language Transformation (XSLT) XML sənədlərini HTML, JSON və ya PDF kimi digər sənəd növlərinə çevirmək üçün tam Turing dilidir. Burada qeyd edilməli vacib bir cəhət odur ki, hücumun uğur qazanması üçün etibarlı imza tələb olunmur. Bunun səbəbi XSLT transformasiyasının rəqəmsal imzanın yoxlanılmaq üçün işlənməsindən əvvəl baş verməsidir. Əsasən, hücumu həyata keçirmək üçün imzalanmış SAML Cavabına ehtiyacımız var, lakin imza öz-özünə imzalanmış və ya etibarsız ola bilər.
Signature exclusion İmza elementi olmadıqda SAML tətbiqinin necə davrandığını yoxlamaq üçün istifadə olunur. İmza elementi olmadıqda, imzanın doğrulanması addımı tamamilə atlana bilər. İmza təsdiqlənməyibsə, adətən imzalanacaq məzmunlardan hər hansı biri təcavüzkar tərəfindən dəyişdirilə bilər.
Directory brute forcing əməliyyatını yerinə yetirdikdən sonra aşağıdakı səhifəni tapdım:
Bu çıxış səhifəsidir, yuxarıdakı linki açdım və o, məni növbəti səhifəyə yönləndirdi.
Əsas parametr URL götürür, XSS-i işə salmaq üçün onu köhnə klassik javascript:alert(123);
ilə əvəz etmək olar.