Kibertəhlükəsizlik

403 bypass metodları

403 bypass (403 qadağasını aşmaq) veb təhlükəsizlikdə və pentest sahəsində istifadə olunan bir texnikadır. Bu, 403 Forbidden HTTP cavab kodunu (səhifəyə və ya resursa girişin qadağan edildiyini bildirən kod) aşaraq həmin resursa daxil olmağa çalışmaq deməkdir. Bu metodlar veb tətbiqlərindəki konfiqurasiya səhvlərindən və zəifliklərindən istifadə etməyə əsaslanır.Bu mövzuda həm normal internetdə gəzərkən, həm də penetrasiya testləri edərkən tez-tez qarşılaşdığımız “403 Forbidden” xətası və bu xətanı necə aradan qaldıracağımızdan bəhs edəcəyik.

403 xətası nədir və niyə baş verir?
403 Forbidden xətası veb brauzerinizdə açmağa çalışdığınız veb səhifə və ya son nöqtə sizə giriş icazəsi vermədikdə baş verir, yəni sizin həmin səhifəyə baxmaq səlahiyyətiniz yoxdur. Adətən bu səhvin iki səbəbi var. Ya həqiqətən icazəniz olmayan bir şeyə daxil olmağa çalışırsınız, ya da veb sayt sahibləri icazələri səhv təyin edib.

403 Bypass nədir?
403 bypass anlayışı sadəcə HTTP 403 Qadağan olunmuş xətadan yan keçmək deməkdir. Bu üsulla avtorizasiyamız olmayan yerlərə sanki varmış kimi daxil ola bilərik. Biz 403 Qadağan edilmiş məhdudiyyəti keçmək və qorunan resurslara icazəsiz giriş əldə etmək üçün girişə nəzarət mexanizmlərindəki zəif cəhətlərdən istifadə edə bilərik, beləliklə, 403 xətası ilə qarşılaşmadan normal baxmağa icazəmiz olmayan səhifələrə baxmağa imkan veririk.

403 Bypass metodları necə yaranır?
403 bypass hədəf saytda təhlükəsizlik zəiflikləri və yanlış konfiqurasiyalar nəticəsində baş verə bilər. Bu zəifliklər müxtəlif amillərdən, o cümlədən təhlükəsiz kodlaşdırma prinsiplərinin olmaması və ya natamam tətbiqi, köhnəlmiş proqram komponentlərinin istifadəsi və istifadəçi icazələrinin yanlış konfiqurasiyası nəticəsində yarana bilər. Təcavüzkarlar avtorizasiya prosesini manipulyasiya etmək və bununla da məhdudlaşdırılmış məzmuna giriş əldə etmək üçün bu boşluqlardan istifadə edə bilərlər. Bundan əlavə, hərtərəfli yoxlama olmadan istifadəçi daxiletməsinin işlənməsi də 403 bypass hücumuna səbəb ola bilər. Xülasə, 403 bypass hücumlarına bir çox hücum növləri daxildir.

Yuxarıdakıları növbəti başlığımızda daha ətraflı müzakirə edəcəyik, lakin hələlik sadəcə olaraq qısa bir ssenarini nəzərdən keçirək və indiyə qədər izah etdiklərimizi bir nümunə ilə gücləndirək.
Məsələn; Veb tətbiqimizdə müəyyən məzmuna zəng etmək və göstərmək üçün URL-dəki parametrdən (bu fayl adı ola bilər) istifadə edən veb tətbiqini nəzərdən keçirək. Əlavə olaraq, tutaq ki, tətbiqimiz yalnız səlahiyyətli istifadəçilərə müəyyən resurslara daxil olmağa imkan verir. Bu sadə vəziyyəti Python koduna yerləşdirsək,

 

user_input = request.GET.get('file_name') #Istifadəçi girdisi.
file_path = '/var/www/files/' + user_input #Əsas faylın  yolu + istifadəçi girişi.

if is_authorized(file_path): #Fayl yoluna access icazəlidirmi?
display_file(file_path)
else: #Əgər izinli deyilə giriş etmək əngellənir.
raise ForbiddenError("Access Denied")

 

Yuxarıdakı kod blokunda GET sorğusundan əldə edilən “ “file_name”  parametri vasitəsilə istifadəçi daxiletməsini alır. Sonra “fayl_adı” dəyəri birbaşa “fayl_yolu” yaratmaq üçün “(/var/www/files/)” əsas fayl yolu ilə birləşdirilir. Təcrübəli göz dərhal fərq edə bilər ki, burada istifadəçi daxiletməsinin alındığı “fayl_adı” dəyişəni və bu məlumatın saxlandığı “istifadəçi_daxili” dəyişəni süzülməmişdir, çünki burada yol keçidi zəifliyi yarana bilər.

Varsayılan olaraq, veb tətbiqi  “file_name”  hərf-rəqəm simvollarından ibarət olmasını gözləyir, “../” və ya “../..” kimi directory traversal iifadələrini gözləmir və icazəsiz giriş halında başqa vəziyyətdə “Giriş rədd edildi” qaytarır. Bununla belə, istifadəçi girişinə qarşı heç bir müdafiə olmadığı üçün təcavüzkar autentifikasiya tələb etmədən “../../../etc/passwd” kimi manipulyasiya edilmiş “fayl_adı” dəyəri ilə zərərli sorğu yarada bilər.

Nəticədə “file_path” dəyəri istifadəçi məlumatı  daxiletməsi ilə birlikdə “/var/www/files/../../../etc/passwd” olur. Tətbiq “is_authorized()” funksiyasından istifadə edərək istifadəçinin müəyyən edilmiş fayl_yoluna daxil olub-olmadığını yoxlaya bilər, lakin bu cür yol keçmə cəhdləri aşkar edilə bilməz. Bu yolla, təcavüzkar giriş nəzarətindən uğurla yan keçərək serverdə adətən daxil ola bilməyəcəyi veb səhifələrə və fayllara giriş əldə edir.

403 Bypass metodları
403 bypass metodlarına bir çox hücum növləri daxildir. İndi istifadə edilə bilən üsullara baxacağıq.

HTTP sorğu metodunun dəyişdirilməsi
GET və POST metodlarına tez-tez rast gəlsək də, əslində bir çox HTTP sorğu metodları mövcuddur. Bu üsullar aşağıdakılardır

GET
HEAD
POST
PUT
DELETE
CONNECT
OPTIONS
TRACE
PATCH

Məsələn; Əgər GET sorğusu göndərirsinizsə, onu HEAD sorğusuna dəyişdirərək eyni sorğunu göndərə bilərsiniz. Yuxarıda sadaladığım üsulları söz siyahısına çevirərək təcrübələri tez bir zamanda avtomatlaşdıra bilərsiniz.

2. HTTP protokol versiyasının endirilməsi
Veb proqramları HTTP sorğuları göndərdikdə, protokol versiyaları fərqli ola bilər. Bu baxımdan, protokol versiyasının aşağı salınması, yəni daha aşağı versiya ilə sorğu göndərilməsi 403-dən yan keçə bilər. İstifadə edə biləcəyiniz HTTP protokol versiyaları aşağıdakılardır:

/0.9
/1.0
/1.1
/2

Məsələn, HTTP/1.1 ilə edilən sorğu nəticəsində 403 xətası alsanız, eyni sorğunu HTTP/1.0 ilə etməyə çalışın.

3.Path traversal metodları
Traversal hücum hücumçular tərəfindən icazə verilən çərçivədən kənar fayl və qovluqlara icazəsiz giriş əldə etmək üçün istifadə edilən üsuldur. Daha əvvəl nümunə ssenarisi vasitəsilə göstərdiyimiz kimi, bu, istifadəçi daxiletmələrinin qeyri-kafi və natamam təsdiqlənməsindən qaynaqlanır. “../” kimi ardıcıllıqlardan və ya onların URL-kodlanmış ekvivalentlərindən istifadə etməklə, təcavüzkarlar 403 səhvini effektiv şəkildə keçərək və həssas məlumatlara giriş əldə edərək, məhdudlaşdırılmalı olan qovluqlara gedə bilərlər.

Traversal hücum hücumçular tərəfindən icazə verilən əhatə dairəsi xaricində fayl və qovluqlara icazəsiz giriş əldə etmək üçün istifadə edilən bir üsuldur. Daha əvvəl bir nümunə ssenarisi vasitəsilə göstərdiyimiz kimi, bu, istifadəçi daxiletmələrinin qeyri-kafi və natamam təsdiqlənməsindən qaynaqlanır. “../” kimi ardıcıllıqlardan və ya onların URL- encoded ekvivalentlərindən istifadə etməklə təcavüzkarlar 403 xətasını effektiv şəkildə keçərək və həssas məlumatlara giriş əldə edərək, məhdudlaşdırılmalı olan qovluqlara gedə bilərlər.

Məsələn; Tutaq ki, siz “/admin” folderinə daxil olmağa çalışırsınız, lakin bu, qadağandır. Sonra, yuxarıdakı şəkildə göstərildiyi kimi, qovluq mühafizəsini bypass keçmək üçün manipulyasiya üsullarından istifadə edilə bilər.

Əlavə bir üsul olaraq, çatmaq istədiyiniz ünvanın hərfləri manipulyasiya edilə bilər. Məsələn; Əgər “/admin” folderinə daxil olmağa çalışırsınızsa, bu folderi “/aAdmin” olaraq dəyişməyə cəhd edə bilərsiniz.

Bu üsullardan istifadə edərkən arxa planda hansı strukturun olduğuna və bu strukturların nə üçün işlədiyinə qısaca toxunmaqda fayda var. Məsələn; Tutaq ki, PHP səhifəsində aşağıdakı kimi bir kod blokunuz var

$input= str_replace('../', '', $_GET['input']);

Bu kod blokunda input dəyəri “../” olarsa, həmin dəyər boş sətir dəyəri ilə əvəz olunur. İlk baxışdan təhlükəsiz görünsə də, bu, əslində qeyri-adekvat təhlükəsizlik tədbiridir. Rekursiv qoruma təmin etmədiyi üçün bu üsul “….//….//” formasının ifadələrində gördüyü hər “../” dəyərini siləcək və fəaliyyətini tamamlayacaq, lakin qalan ifadə “../../” olacağı üçün təcavüzkar öz məqsədinə çatmış olacaq. Belə hallarda server tərəfinin hadisələrə reaksiyasını təhlil edərək qarşı tərəfə hansı ehtiyat tədbirlərinin görüldüyünü və hansı kod yazılacağını təxmin etmək və gələcək hücumları buna uyğun formalaşdırmaq olar.

4.Gedən sorğuya başlığın əlavə edilməsi
Veb server HTTP sorğusu qəbul etdikdə sorğunun necə işlənəcəyini müəyyən etmək üçün sorğudakı başlıqlara baxır. Bundan sonra server başlıqda verilmiş məlumat əsasında giriş nəzarətlərini tətbiq edə bilər. Bu məlumatdan istifadə edərək, serveri adətən rədd edilən girişə icazə verməyə inandırmaq üçün başlıqları manipulyasiya edə bilərik. Buradakı hiylə, sorğunun “localhost” dan gəldiyi kimi görünməkdir ki, bu da serveri sorğunun səlahiyyətli şəxsdən gəldiyini düşünməyə vadar edir. Aşağıda bu məqsədlə istifadə edilə bilən IP ünvanlarının siyahısı verilmişdir

10.0.0.0
10.0.0.1
127.0.0.1
127.0.0.1:443
127.0.0.1:80
localhost
172.16.0.0

 

Yuxarıdakı IP ünvanları üçün istifadə edə biləcəyimiz HTTP başlıqları aşağıdakılardır:

X-Originating-IP:
X-Forwarded-For:
X-Forwarded:
Forwarded-For:
X-Remote-IP:
X-Remote-Addr:
X-ProxyUser-Ip:
X-Original-URL:
Client-IP:
True-Client-IP:
Cluster-Client-IP:
Base-Url:
Http-Url:
Proxy-Host:
Proxy-Url:
Real-Ip:
Redirect:
Referer:
Referrer:
Refferer:
Request-Uri:
Uri:
Url:
X-Client-IP:
X-Custom-IP-Authorization:
X-Forward-For:
X-Forwarded-By:
X-Forwarded-For-Original:
X-Forwarded-Host:
X-Forwarded-Server:
X-Forwarder-For:
X-Host:
X-Http-Destinationurl:
X-Http-Host-Override:
X-Original-Remote-Addr:
X-Original-Url:
X-Proxy-Url:
X-Real-Ip:
X-Rewrite-Url:
X-True-IP:
X-Cluster-Client-IP:

Başlıqları və IP ünvanlarını wordlist çevirməklə avtomatlaşdırmaya nail olmaq olar. Hər bir başlıq üçün bütün IP ünvanlarının sınaqdan keçirilməsi də bu baxımdan faydalı olacaq.

 

Avtomatik 403 bypass alətləri
Bu üsulları avtomatlaşdırmaq üçün bəzi vasitə və üsullardan istifadə edə bilərik. Bu baxımdan yuxarıda qeyd etdiyimiz üsulları 403bypasser adlı alətlə avtomatlaşdıra bilərsiniz.Əlavə olaraq, Burp Suite alətinin “403 Bypasser” əlavəsi ilə skanlarınızı həyata keçirərkən 403 bypassını yoxlaya bilərsiniz.

Yekunda isə 403 bypass hücumunu həyata keçirmək asan bir üsul olmasa da, zaman-zaman ortaya çıxa bilər. Bu istiqamətdə aparılacaq təhlükəsizlik axtarışlarında bu açığın da skan edilməsi faydalı olardı. Xüsusilə avtomatlaşdırılmış vasitələrin kifayət etmədiyi yerlərdə Burp Intruder vasitəsilə öz söz siyahılarınızla təcrübələr də müəyyən nəticələr verə bilər.

Related Articles

Bir cavab yazın

Sizin e-poçt ünvanınız dərc edilməyəcəkdir. Gərəkli sahələr * ilə işarələnmişdir

Back to top button