خبرهای مهم:

تاریخ امروز برابر است با [ سه شنبه ۳ بهمن ۱۳۹۶ ]

تزریق کد و تزریق دستور دو نمونه از روش های هک برنامه های تحت وبه که خیلی شبیه به هم اند و از چک نشدن ورودی ها استفاده می کنن. پیش از این در مورد چک نشدن صحیح ورودی ها گفتم. یه ضرب المثل در امنیت Web Application هست که می گه “اطلاعات ورودی کاربر غیرقابل اعتماده”.

بذارید یه سری نمونه از تزریق کد رو با هم ببینیم. فرض کنیم قراره در یک کد PHP با دریافت متغیر arg در url یه عملی روش انجام بدیم و یه خروجی برای کاربر داشته باشه.

 

همونطور که در کد بالا می بینید هیچگونه بررسی روی متغیر انجام نمی شه و مقدارش رو توی x می ریزه. نمونه ای از حمله می تونه شبیه زیر باشه

 

دستور سیستم در PHP یک کامند رو در سطح سیستم عامل اجرا می کنه. اینجا هکر می تونه با اجرای ls (با فرض لینوکسی بودن سرور) لیستی از فایل ها و فولدرهای فولدری که index.php قرار داره رو به دست بیاره.

بیاید دستورات PHP که می تونن در کنار “عدم بررسی ورودی” ترکیب خطرناکی رو به وجود بیارند با هم مرور کنیم.

اونهایی که کامندها رو اجرا می کنند:

 

و اونهایی که کدهای PHP رو اجرا می کنند:

اینکه کدهای بالا چطور می تونه در ترکیب با کدهای دیگه و یا در یک الگوریتم اشتباه تبدیل به یک نقطه ضعف بشه خودش یه مبحث جداگانه است ولی چیزی که مهمه اینه که زمان به کار بردن این دستورات حساسیت بیشتری به خرج بدیم.

یه نمونه واقعی می تونه کد زیر باشه. می بینید که این پروژه در گیتهاب همچین ضعفی رو داره

حالا روی لوکال هاست این پروژه رو بالا میاریم و نتیجه حمله رو چک می کنیم:

کافیه یه جستجو در گیتهاب بکنیم و ببینیم چند کد مشابه پیدا می کنیم.

و در آخر هم برای اینکه بدونید یک هکر با استفاده ازاین اشتباه برنامه نویسی می تونه تا کجا پیش بره تصویر زیر رو ببینید که همین یکی دو روز اخیر گرفتم. می بینید که موفق شدم یک PHP Shell Script روی سرور آپلود کنم و از این به بعد به کل فایل های سرور دسترسی داشته باشم و کل دیتابیس رو به دست بیارم. می تونم با توجه به ویندوزی بودن سرور سعی کنم پسورد هش شده ادمین رو به دست بیارم و در صورت باز بودن پورت، باRemote Desktop Connection وارد سیستم بشم و راحت تر هر کاری رو بخوام روش انجام بدم.

:: نظرات

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد.

*