CSRF
Cross-site request forgery (CSRF)
Bu bölmədə saytlararası sorğu saxtakarlığının nə olduğunu izah edəcəyik, ümumi CSRF zəifliklərinə dair bəzi nümunələrə baxacayıq və CSRF hücumlarının qarşısının alınmasını izah edəcəyik.
CSRF nədir?
CSRF, Cross-Site Request Forgery (Sayt Arası Sorğu Sahtekarlığı) deməkdir. Ən izahı, bu təhlükəsizlik açığı, istifadəçinin brauzerini aldadaraq, istifadəçinin autentifikasiya olduğu başqa veb sayta göndərdiyi sorğular zaman yaranan problemdir. Bu, istifadəçinin razılığı olmadan öz adı ilə icazəsiz əməliyyatlara səbəb ola bilər və məlumatlarının əldə edilməsinə nail ola bilər.
Təsəvvür edin ki, siz bank vebsaytınıza daxil olmusunuz və eyni zamanda zərərli vebsayta daxil olursunuz. Əgər həmin zərərli sayt brauzerinizi aldadaraq bank saytınıza sorğu göndərə bilərsə (siz artıq daxil olduğunuz üçün), siz fərqinə varmadan hesabınızdan pul çəkilə bilər. Bu CSRF hücumudur.
CSRF-nin qarşısını almaq üçün veb saytlar sorğuların doğru olmasını və doğru istifadəçidən gəlməsini təmin etmək üçün tez-tez tokenlərdən və ya digər mexanizmlərdən istifadə edirlər. Bu təhlükəsizlik tədbirləri istifadəçiləri zərərli veb-saytlar tərəfindən törədilən icazəsiz hərəkətlərdən qorumağa kömək edir.
Hücum vektorları
Təxmin oluna bilən tokenlər
Tətbiq tərəfindən yaradılan tokenlərin asanlıqla təxmin edilə bilmədiyini və ya dəyişdirilməsinin mümkün olmadığını yoxlayın.
Anti-CSRF Token yoxlanışının olmaması
Həm POST, həm də GET sorğuları zamanı Anti-CSRF token dəyərinin təsdiq edilib-edilmədiyini yoxlayın. Anti-CSRF nişanının NULL, Yox, 0, [] kimi dəyərlərinin yoxlamadan keçə biləcəyini yoxlayın. Tokenin tələb olunduğunu yoxlayın (yoxlama tokenin mövcudluğundan asılıdır).
Token yalnız Kuki kimi istifadə olunur
Kuki başqa domendən edilən sorğuya əlavə olunacaq (SameSite bayrağı yoxdursa). Bu dəyər başlıq və ya sorğu parametrlərindən biri kimi təkrarlanmırsa, etibarlı müdafiə deyil.
Token, istifadəçi sessiyasına bağlı deyil
Başqa seansdan etibarlı token istifadə etməyin mümkün olub-olmadığını yoxlayın.
XSS
XSS ilə CSRF tokenini çıxarmaq və ondan istifadə etmək mümkündür. Məsələn:
Brute Force
Həmişə token entropiyasını ən azı 1000-10000 cəhdlə yoxlayın. Tokenlərin yaradılmasında bəzi nümunələr varsa və ya onlar özlərini təkrarlayırlarsa, brute force hücumunu tətbiq etmək olar.
Həssas subdomen
XSS-ə həssas olan subdomain ələ keçirmə və ya cookie inyeksiyasına qarşı həssas olan subdomainə malik olan təcavüzkar aşağıdakıları bypass edə bilər:
CSRF-token qorunması
Cookie qorunmasını iki dəfə təqdim edin
Content-type based qorunma
Cookie inyeksiyası
Brauzer səhvlərinin CRLF inyeksiyası halında, cookie inyeksiyası vasitəsilə ikiqat submit edilən cookie qorunmasını bypass eləmək mümkündür.
Payload-lar
Müəyyən bir sayta daxil olduqda, adətən bir sessiyanız olur. Həmin sessiyanın məlumatları brauzerinizdə cookie-də saxlanılır və sorğu ilə həmin sayta göndərilir. Hətta hansısa başqa sayt sorğuya səbəb olsa belə, cookie sorğu ilə birlikdə göndərilir və sorğu, sanki daxil olmuş istifadəçi bunu yerinə yetirmiş kimi hesab olunur.
HTML GET - İstifadəçinin qarşılıqlı əlaqəsini tələb edir
HTML GET - İstifadəçinin qarşılıqlı əlaqəsini tələb etmir
HTML POST - İstifadəçinin qarşılıqlı əlaqəsini tələb edir
HTML POST - AutoSubmit - İstifadəçinin qarşılıqlı əlaqəsini tələb etmir
HTML POST - file upload ilə multipart/form-data - İstifadəçinin qarşılıqlı əlaqəsini tələb edir
JSON GET - Sadə sorğu
JSON POST - Sadə sorğu
XHR ilə:
Firefox brauzerində Enhanced Tracking Protection-in Standart seçimi kimi müəyyən brauzer qorumalarını bypass edən avtomatik göndərmə forması ilə :
JSON POST - Mürəkkəb sorğu
Referer başlığı bypass edin
Basic payload
Question mark(?
) payloadı ilə
?
) payloadı iləSemicolon(;
) payloadı ilə
;
) payloadı iləSubdomain payloadı ilə
Last updated