Local&Remote File İnclusion
LFl
İlk once Local File İnclusiondan başlayaq. Əgər biz ve yaxud da başqa bir istifadəçi web səhifənin URL hissəsində müəyyən dəyişikliklər edərək sistemdə olan faylları oxuya ve ya gore bilirse bu LFİ adlanır. Bunu daha çox yerinə yetirmək üçün linux əmrlərindən istifadə edilir.
Məsələn:
http://sinaqsayti.com/sonmehsuleshya?item=20
Istifadəçi bu URL üzərindən LFİ həyata keçirə bilər.
http://sinaqsayti.com/sonmehsuleshya?item=../../../../../../etc/shadow
"cd .." bildiyimiz kimi linux da bir direktoriya əvvələ qayıtmaq üçün istifadə olunur. Və burda 4-5 dəfə istifadə olunmaqda məqsəd "root" direktoriyasına gedib çatmaqdır. Əsas lazımlı faylların həmin yerdə saxlanıldığı bizə tanışdır.
RFI
Fayl uzaq serverdən yüklənir (Yəni: Siz kodu yazırsınız və server onu yerinə yetirəcək). php-də bu defolt olaraq qeyri-aktivdir (allow_url_include). RFİ-a yenidən həmin URL üzərindən nümunə verək. Bu zaman isə biz uzaqda olan bir faylı sistemdə açdıqda meydana gəlir.
Məsələn:
http://sinaqsayti.com/sonmehsuleshya?item=20
Bu zaman biz bu sistemdə http://badactor.com/harm.txt faylını açmağa çalışacayıq. 20-nin yerinə bizim istədiymiz bir link yerləşdirək. Həmin fayl açılırsa demək ki burada Remote File İnclusion açığı var. Bu qarşı tərəfin serverini ələ keçirmək üçün əla imkan verir.
Zəiflik o zaman baş verir ki, istifadəçi hansısa şəkildə server tərəfindən yüklənəcək faylı idarə edə bilsin. Ona görə də bu cür açıqlar tez tapılmalı və patch edilməlidirlər. Həmçinin düzgün konfigurasiyalarda bir o qədər önəmlidir.
Linux sistemlərində LFl üçün .txt faylı
https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/file_inclusion_linux.txt
Windows sistemlərində LFI üçün .txt faylı
https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/file_inclusion_windows.txt
Basic LFI and bypasses
Bütün nümunələr Local Fayl İnclusion üçündür, lakin Remote File İnclusion üçün də tətbiq oluna bilər.
Traversal sequences stripped non-recursively
Null byte (%00)
Təqdim olunan sətirin sonunda daha çox simvol əlavə edin ($_GET['param']."php" keçidindən keçin)
Bu, PHP 5.4-dən sonrakı versiyalarda PATCH olunub.
Encoding
İkiqat URL kodlaması (və digərləri) kimi qeyri-standart kodlaşdırmalardan istifadə edə bilərsiniz:
From existent folder
Ola bilər ki back-end qovluğun yolunu yoxlayır:
Identifying folders on a server
Tətbiq olunan koddan / icazə verilən simvollardan asılı olaraq, yalnız faylları deyil, qovluqları da kəşf etməklə fayl sistemini hərtərəfli şəkildə araşdırmaq mümkün ola bilər. Bunu etmək üçün:
Sistem daxilində harada olduğunu təxmin etməyə çalış. Məsələn biz /etc/passwd faylını uğurla əldə etməklə cari qovluğunuzun "dərinliyini" müəyyən edə bilərik (əgər Linux sistemi üçün ediriksə):
Qovluğun adını əlavə edərək (məsələn private) və sonra /etc/passwd-ə qayıdaraq cari qovluqdakı qovluğun adını təxmin etməyə çalışın:
Tətbiq həssasdırsa, sorğunun iki fərqli nəticəsi ola bilər:
Error ala bilərsiniz ki belə bir qovluq yoxdursa, private qovluq bu yerdə mövcud deyil.
/etc/passwd faylının məzmununu alsanız, cari kataloqunuzda həqiqətən private qovluğun olduğunu öyrəndiniz.
Path truncation
Təqdim olunan sətirin sonunda daha çox simvollar əlavə edin. Bu bəzi qadağaları bypass edə bilər. (bypass: $_GET['param']."php")
Həmişə yolu fake kataloq (a/) ilə başlamağa çalışın.
Filter bypass tricks
Remote File Inclusion Bypass
Php-də bu defolt olaraq qeyri-aktivdir, çünki allow_url_include off-dur. Onun işləməsi üçün Aktiv olmalıdır və bu halda siz serverinizdən PHP faylını daxil edib RCE (Remote Code Execution) əldə edə bilərsiniz:
Basic RFI (null byte, double encoding and other tricks) :
LFI / RFI Wrappers :.
Bypass ../ removal
Bypass ../ replaced with ;
Bypass http(s):// removal
Top 25 parameters
Burada Local File İnclusion (LFI) zəifliklərinə qarşı həssas ola biləcək ən yaxşı 25 parametrin siyahısı göstərilib.
Nəticə
Fayl daxiletmə zəifliyi istifadəçi girişdə fayl yolunu idarə edə bildikdə baş verir
Veb saytın LFI-yə qarşı həssas olub-olmadığını tapmaq üçün həmişə kataloqu dəyişməyə cəhd edin.
Fərqli fayllara daxil olmağa çalışın və uyğun olaraq hansı parametri dəyişə biləcəyinizi görün.
'Bir noob ilə haker arasındakı fərq, bir hakerin heç vaxt cəhd etmədiyindən daha çox uğursuz olmasıdır.
Last updated