آموزش آسیب پذیری Local File Download (LFD) و طریقه اکسپلویت آن

سلام به همه کاربران گل اکادمی اولترا آموز
باز برگشتیم خیلی پرقدرت با یکی دیگه از آسیب پذیری ها وب به نام Local File Download یا همون LFD که یکی از آسیب پذیری های خفن در سطح وبه و تارگت هم تقریبا براش زیاده و میتونید باهاش سایت هایی که این آسیب پذیری رو دارن رو حتی بصورت کامل بهش نفوذ کنید و سورس های backend اون سایت رو دانلود کنید 🙂
آسیب پذیری LFD یا Local File Download
با استفاده از این باگ میتونیم سورس کد های backend سایت رو دانلود کنیم .. ینی میتونیم مثلا فایل های php .. asp و… که سمت سرور پردازش میشن رو دانلود کنیم و… .. که این یک مشکل امنیتی تقریبا بزرگه چون که هیچوقت نباید افراد غیرمجاز به کد های backend سایت دسترسی داشته باشند چون مورد داشتیم که با استفاده از این آسیب پذیری تونستن ی سایت رو بصورت کامل هک کنن.
حالا شاید براتون سوال بشه که این باگ امنیتی چجوری بوجود میاد ؟! با من همراه باشید تا بهتون بگم!
خب دوستان ببنید این آسیب پذیری زمانی توی یک سایت بوجود میاد که برنامه نویس اون سایت ، اومده بصورت مستقیم به یک ورودی آدرس یک فایلی رو برای دانلود داده و روی اون ورودی هیچگونه فیلتر و sanitize ـی انجام نداده که اگر یوقت هکر اومد مثلا آدرس اون فایلی که برای دانلود به ورودی میدی رو تغییر بده نتونه فایلی رو دانلود کنه.
خب حالا فهمیدیم LFD چی هست و چیکار میکنه .. بریم سراغ اینکه ببنیم چجوری میتونیم از این باگ بهره ببریم و چجوری میتونیم این باگ رو کشفش کنیم.
آموزش دانلود سورس سایت با استفاده از آسیب پذیری LFD
سایت های زیادی روی اینترنت هستند که این آسیب پذیری رو دارند و ما با استفاده از Dork زیر و مشابه ها ، بیایم سایت هایی که این آسیب پذیری رو دارن رو پیدا کنیم :
inurl:”download.php?file=”
خب حالا فرض می کنیم که تونستیم با google hacking تارگت مورد نظرمون رو پیدا کنیم .. مثلا اون url مورد نظر میشه این :
test.com/xyz/download.php?file=test.pdf
توجه داشته باشید که لینک رو باید روش کلیک راست کنید و کپی کنید و سپس داخل تب جدید از مرورگر اون رو باز کنید (که قطعا خودتون اینو میدونید)
خب الان برای اینکه تست کنیم این سایت آسیب پذیری LFD دارد یا خیر میایم بجای اون مقدار test.pdf اون فایل download.php رو مینویسیم :
test.com/xyz/download.php?file=download.php
حالا اینجا اگر سایت بهمون خطا داد و یا بهمون صفحه خالی برگردوند ، به این معناست که سایت این آسیب پذیری رو ندارد ولی اگر فایل download.php دانلود شد ینی سایت آسیب پذیره و میتونیم سورس کل سایت رو دانلود کنیم 🙂
مثلا میتونیم فایل index.php که صفحه ی پیشفرض هر وب سایت و دایرکتوری هست رو هم بکشیم بیرون ، به شرح زیر مثلا :
test.com/xyz/download.php?file=../index.php
,…
الان من اینجا تا یجاییش میگم دیگه بقیش با خودتون و طبیعتا کسی که این مقاله رو میخونه ی پیش زمینه باید در زمینه هک و امنیت داشته باشه دیگه!
حالا بریم تو کارش
اول از همه همونطور که گفتم با استفاده از دورک تارگت رو پیدا می کنیم و بعد مطمئن میشیم که آسیب پذیر هست یا نه
مطمئن که شدیم تارگت LFD داره حالا با توجه به آدرس دهی هایی که داره میریم سراغ بقیه فایل هاش و اونارو بیرون میکشیم تا برسیم به پنل ادمین و یوزرنیم پسورد دیتابیس و… و کلا با این روش میشه به کل سایت دسترسی گرفت که البته اینم بستگی داره که اون سایت چجوری باشه .. مثلا میبینی سایت این آسیب پذیری داره ولی پنل ادمینش نیست یا مثلا سایت آسیب پذیره ولی یوزر پسورد ادمین پیدا نمیشه و… که خلاصه کلا بستگی داره.
خب دوستان الان تا اینجا ما فهمیدیم که باگ LFD چیه و چجوری میشه باهاش سورس های backend یک سایت رو دانلود کرد و… درسته ؟! عاره ، خب در ادامه قراره یکسری ترفند هارو با استفاده از این باگ بهتون آموزش بدم که مطمئنم حال می کنید 🙂
پس بریم تا داشته باشیم
دوستان فکر کنم تا حالا دیده باشید مثلا برید داخل یک سایتی ی عکسی به چشمتون میخوره و روی اون عکس راست کلیک میکنید و داخل تب جدید بازش میکنید درسته ؟! خب میدونستید که ما با استفاده از همین تکنیک هم میتونیم LFD بزنیم ؟! :\ جالب شد ن ؟ با من همراه باشید تا ببنیم داستانش به چه شکله!
برای اینکار کافیه وارد سایت مورد نظرتون بشید و مثلا یک عکس یا هر فایل دیگه ای (عکس،فیلم،موزیک،پی دی اف،…) دیگه ای رو داخل تب جدید باز کنید .. که برای اینکار هم ابتدا روی اون عکس مورد نظرتون کلیک راست کنید و سپس گزینه ی open in new tab رو بزنید به شرح زیر ، خیلی ببخشید که من این مورد رو هم میگم چون میخوام کامل باشه :\
وقتی که اینکارو کردید اون عکس مورد نظرتون داخل تب جدید باز میشه خب ؟ خب الان به آدرس عکس دقت کنید :
بنظرتون اگر اینجا ما بجای اسم اون عکس که img2.jpg هست بیایم و آدرس ی فایل php که روی سرور قربانی وجود داره بدیم چه اتفاقی میوفته ؟ 🤔 الان من در ادامه بجای اسم اون عکسه میام و اسمو آدرس اون فایل 07.php که داخل همون دایرکتوری قرار داره که عکس ما هم داخلشه و مرورگر اون عکس رو برامون لود کرده پس کافیه که فقط اسم فایل php رو بهش بدیم که میشه 07.php و در تصویر بالا هم مشخصه برای شما شاید فایل با ی اسم دیگه باشه…
بریم ببنیم اگه بجای عکس اون فایل php رو بهش بدیم چی میشه
عه دیدید چی شد ؟؟ بعله درست متوجه شدید هیچ اتفاقی نیوفتاد و فقط اون عکسه غیب شد بجاش این مربع سفید برامون ظاهر شد که شما در مرورگر firefox مثلا ممکنه با صفحه و ارور زیر مواجعه شید :
خب دوستان همونطور که دیدید وقتی اسم اون فایل php رو بهش دادیم هیچ اتفاقی نیوفتاد و توی firefox هم بهمون ارور داد ، حالا بنظرتون باید بیخیال بشیم بزاریم بریم ؟! الا ن ینی سایت LFD نداره تموم شد ؟!
نه دوستان اگر اینجوری فکر میکنید سخت در اشتباهید چون شما هیچوقت نباید گول ظاهرو بخورید مهم باطن قضیست 🙂
خب برای اینکه باطن قضیه رو ببنیم توی همونجایی که هستید کلیک راست کنید و سپس از منوی باز شده گزینه ی save as رو برای ذخیره کردن این فایل بزنید یا هم ctrl + s بزنید به شرح زیر :
خب وقتی save as یا کنترل اس رو زدین ی پنجره برای ذخیره فایل براتون باز میشه که همونطور که میبنید اسم فایلی که قراره ذخیره بشه رو خودش گذاشته 07.jpeg :
سپس اسم فایل رو به 07.php تغییر بدین و روی دکمه ی سیو کلیک کنید
خب الان کافیه الان اون فایل رو با استفاده از ادیتور مدنظرتون باز کنید که در اینجا من با Atom اینکارو انجام میدم :
همونطور که مشاهده کردین ما تونستیم با استفاده از آسیب پذیری LFD بیایم و به کد های backend یک سایت که هر کسی بهش دسترسی نداره و نباید داشته باشه ، دسترسی پیدا کردیم.
مثال بیشتر از پیلود های این آسیب پذیری :
site.com/download/download.php?path=x.jpg
site.com/download/download.php?path=download.php
site.com/download/download.php?path=../index.php
site.com/download/download.php?path=..%2findex.php
site.com/test/download/download.php?path=..%2f..%2findex.php
site.com/download/download.php?path=..\index.php
,…
همشون همینن دوستان و خودتون دیگه باید حالت های مختلف رو تست کنید تا به نتیجه برسید ، مهم base قضیه بود که بهتون گفتم به چه شکله.
توجه داشته باشید که اگر آدرس/url ـهای سایت مورد نظر nice (کوتاه) شده باشند اونموقع که دیگه باید آدرس اصلی رو پیدا کنید تا بتونید تست خودتون رو روش انجام بدید.
ناگفته نماند که من اینجا مثال دانلود فایل های php رو زدم ، شما میتونید هر سورس کد دیگه ای که مربوط به backend سایت هستش رو با این روش دانلود کنید و لذت کافی رو ببرید مثلا فایل های asp وغیره .
خب حالا وقتشه بریم سراغ نحوه ی پچ کردن این آسیب پذیری.
نحوه پچ کردن و مقابله با آسیب پذیری LFD
خب دوستان همونطور که گفتم این آسیب پذیری بخاطر مدیریت نادرست روی ورودی ها و عدم اعتبار سنجی روی اونها بوجود اومده .. که برای مقابله و پچ کردن این آسیب پذیری باید کارای که در ادامه میگم رو انجام بدین.
- Sanitize/فیلتر کردن ورودی ها
- Nice کردن url هم بی تاثیر نیست (ینی کوتاه کردن url با استفاده از یکسری تنظیمات توی وب سرور و…)
- و خلاصه روی ورودی ها و… شرط بزارید که اگر کسی بجای آدرس فایل اصلی که قراره دانلود بشه یه فایل دیگه ای زد ، بیا و جلوشو بگیر که نتونه فایل های غیرمجاز رو دانلود کنه.
- همچنین ی WAF هم اگه قرار بدین و درست کانفیگش کنید اوکیه.
- و…
در نهایت نتیجه میگیریم که هیچوقت گول ظاهرو نخوریم، حتی توی بحث اعتماد به آدما هم اینجوریه😶 مهم باطنه که توی این مقاله تونستیم تا ی حدی اینو درک کنیم 🙂
و تمام!
خیلی ممنون که تا اینجای مقاله با من بودین 🌹
امیدوارم از این مطلب لذت کافی رو برده باشید 🙂
تا مقالات بعدی بدرود
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.