باگ LFI (Local File Inclusion ) نیز مانند تمام باگها و اشکالات کامپیوتری محصول خطای برنامه نویسان است. این باگ بر روی وب اپلیکیشن یا همان سایت های به زبان PHP به علت بی دقتی در استفاده از توابع ( Include , Require ) که قصد فراخوانی اطلاعات , فایل یا... را دارد ایجاد میشود...
این باگ به هکر امکان فراخوانی فایل های مهم و حساس درون سرور را میدهد برای مثال با وارد کردن آدرس فایلی مهم در ورودی آسیب پذیر سایت میتوانید آن فایل را مشاهده یا دانلود کنید , که میتوانید از سایت در حد زیادی دسترسی بگیرید .
از جمله فایل های مهمی که میتواند از این طریق به آنها دسترسی پیدا کرد : Shadow , Passwd , config , … است که در آنها اطلاعاتی مانند رمز و پسورد کاربران سایت , اطلاعات دیتابیس و غیره را میتواند یافت.
به عنوان مثال سایتهای زیر دارای ورودی آسیب پذیر هستند:
www.site.com/page.php?=1
http://site.com/page=index.php
http://site.org/index.page=143
معمولا درصد بسیار زیادی از سایت هایی صفحه لود , عدد , فایل یا... در ورودی دریافت میکنند دارای این باگ هستند.در مثال بالا [ 1 , index.php , 143 ] دقت داشته باشید که به عنوان مثال سایت :
http://site.com/page=index.html , http://site.com/page=index.htm
هرگز دارای این باگ نیست زیرا همانطور که گفتیم این باگ فقط در سایت های به زبان php وجود دارند و این سایت با توجه به پسوند [ html , htm ] به زبان html نوشته شده اند.
خب حال ما به عنوان مثال سایتی آسیب پذیر داریم و قصد داریم اطلاعات دیتابیس و کاربران را به دست بیاوریم.
بخش انتهایی URL سایت که بعد از مساوی وجود دارد را حذف و به جای آن مسیر فایل مورد نظر را قرار میدهیم:
http://site.com/page.php?id=etc/passwd
http://site.com/page=etc/passwd
ممکن است فایل در پوشه های تو در تو باشد پس باید عقب و عقبتر برویم تا به فایل سرور برسیم , این عقب رفتن با استفاده از /.. انجام میشود. بدین شکل :
http://site.com/page=../etc/passwd
http://site.com/page=../../../etc/passwd
http://site.com/page=../../../../../etc/passwd%00
این عقب رفتن را باید تا جایی که محتویات فایل در سایت به نمایش در بیایند یا فایل قابل دانلود باشد ادامه داد. معمولا این عقب رفتن بیشتر از 6 یا 7 بار انجام نمیشود. اگر جواب نداد شاید لازم باشد همین کا را با اضافه کردن (%00) در آخر مسیر امتحان کنید به صورتی که در مثال بالا آمده است. همین کار را میتوانید با سایر فایل ها نیز تکرار کنید.
برای امن سازی سایت در مقابل این باگ باید در استفاده از توابع ( Include , Require() ) با علم و احتیاط عمل کنید , ورودیها کنترل شوند و کاراکتر های خاص و مربوط به این آسیب پذیری فیلتر شوند به صورتی که با وارد کردن آنها در ورودی حذف شوند , این کارکتر ها شامل ( . / % ) هستند همچنین میتوانید از فایروال قدرتمند استفاده کنید.
اما در صورت بایپس فایروال , باگ همچنان باقی میماند.
Source،writer: Mahdi Ahmadi