Bosh sahifa Wiki Local File Inclusion

Local File Inclusion

Local File Inclusion — ilova foydalanuvchi ta’sir qila oladigan yo‘lni include yoki template funksiyasiga uzatib, serverdagi mahalliy faylni dastur kontekstida yuklashiga imkon beradigan zaiflikdir. LFI natijasida konfiguratsiya, log, source code yoki maxfiy ma’lumot ochilishi, ayrim muhitlarda esa yuklangan fayl kod sifatida talqin qilinishi mumkin.

Kelib chiqishi

Eski web ilovalarda til yoki sahifa parametri fayl nomiga qo‘shilishi mumkin. Dastur faqat katalog prefiksini qo‘shib xavfsiz deb o‘ylaydi, ammo .., absolute path, encoding, symbolic link yoki wrapper sintaksisi kutilgan ildizdan chiqadi. Extensionni avtomatik qo‘shish ham barcha platforma va parser talqinini to‘xtatmaydi.

Include oddiy file read’dan xavfliroq bo‘lishi mumkin: til dvigateli fayl ichidagi sintaksisni bajaradi. Hujumchi upload, session yoki logga boshqariladigan matn yozib, keyin shu faylni include qildira olsa, disclosure kod bajarilishiga aylanishi ehtimol. Himoya faqat “foydalanuvchi PHP fayl yuklay olmaydi” degan taxminga tayanmaydi.

Xavfsiz dizayn

Foydalanuvchi yo‘li to‘g‘ridan-to‘g‘ri include qilinmaydi. Parametr uz, en kabi kichik allowlist kalitiga tenglanadi, server esa uni oldindan belgilangan modulga xaritalaydi. Template nomlari ham registry’dan tanlanadi. Iloji bo‘lsa runtime include o‘rniga build vaqtida import va routing ishlatiladi.

Fayl kerak bo‘lsa canonical path hisoblanib, ishonchli root ichida qolishi tekshiriladi. Tekshiruv va open orasidagi symlink race’ini kamaytirish uchun directory handle’ga nisbiy, symlink kuzatmaydigan API qo‘llanadi. Jarayon least privilege bilan secret va tizim fayllarini o‘qiy olmasligi kerak.

Uploadlar, session va loglar executable/include katalogidan ajratiladi. Logga foydalanuvchi matni strukturali va escaping bilan yoziladi, lekin log poisoningni faqat escaping hal qilmaydi. Server konfiguratsiyasi remote wrapper va keraksiz include path’larni o‘chiradi.

Tekshiruv va javob

Testlar encoded traversal, aralash separator, absolute path, null talqini, symlink va platformaga xos nomlarni qamrab oladi. Static analysis ishonchsiz inputdan include sinkgacha data-flow’ni topadi. Monitoring noodatiy fayl nomi, ko‘p include xatosi va sensitive path urinishlarini ko‘rsatadi.

Zaiflik aniqlansa, faqat filtrlash qo‘shilmay, dinamik include API olib tashlanadi. O‘qilishi mumkin bo‘lgan credentiallar rotatsiya qilinadi, log va access tarixidan real foydalanish baholanadi. Cache yoki error response orqali ochilgan nusxalar ham tozalanadi.

Amaliy nazorat

LFI log, session yoki upload faylini til kodi sifatida include qilsa, oddiy disclosure remote code executionga aylanishi mumkin. Local File Inclusion bo‘yicha nazorat faqat bitta input filterga tayanmaydi. API erkin sintaksis o‘rniga aniq identifikator va typed parametr qabul qiladi, jarayon esa least privilege bilan ishlaydi. Normal holat bilan birga encoding, duplicate, timeout, parallel so‘rov va qisman nosozlik test qilinadi. Production telemetry xato turi, kechikish va rad etilgan urinishlarni ko‘rsatadi, maxfiy payloadni to‘liq jurnalga yozmaydi. O‘zgarish avval kichik doirada sinovdan o‘tib, regression kuzatilmagach kengaytiriladi. Incident runbook ta’sirlangan obyektlarni aniqlash, credential yoki holatni tiklash va sababni kod darajasida bartaraf etishni belgilaydi.

Framework konfiguratsiyasi include qidiruv yo‘llarini aniq kataloglar bilan cheklaydi va wrapper hamda URL orqali fayl ochishni o‘chiradi. Deploy paketida foydalanuvchi yuklagan kontent executable katalogdan ajratiladi. Bu qatlamlar allowlistdagi xato ta’sirini ham kamaytiradi.

Bog‘liq tushunchalar

Path Traversal, File disclosure, Include function, Canonical path, Log poisoning, Least privilege, Template engine