خبرهای مهم:

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

حمله Function Injection

۲۷ آبان ۱۳۹۶

حمله Function injection شامل نفوذ و یا تزریق “Injection” اسامی تابع از روی سیستم هدف به اپلیکیشن میشه.
بهره برداری موفق از این حمله موجب اجرای هرگونه built in و یا توابع تعریف شده کاربری میشه.
حملات Function injection جزو حملات نفوذی هستند که در آن ها نام توابع دلخواه و هر از گاهی پارامترها نیز می توانند به اپلیکیشن نفوذ کرده و اجرایی شوند.
اگر پارامترها به توابع آلوده برسند، این عمل موجب اجرای کدهای از راه دور میشه.

 

عوامل خطرناک :

  • اینگونه آسیب پذیری ها خیلی محدوده بزرگی رو شامل می شوند. خیلی هاشون به راحتی قابل شناسایی هستند و خیلی هاشون هم نیستند.
  • حتی اگه پیدا بشند نیز بهره برداری از اون ها نسبتا سخت هستش، البته به سناریو حمله نیز بستگی داره.
  • اگر بهره برداری موفقیت آمیز باشه، ممکنه شامل مشکلاتی مانند از دست دادن اطلاعات محرمانه، کمال، دسترسی و سیستم جوابگویی شود.

 

مثال ها :

 

مثال شماره یک :

اگر اپلیکیشن، یه پارامتر که توسط درخواست GET به PHP ارسال شده رو قبول کنه و بعدش این پارامتر به عنوان یک تابع شامل () بعد از نام متغیر ارزیابی بشه، با متغیر مانند یک تابع برخورد میشه و در نهایت اجرا میشه.

URL زیر نام یک تابع را به اسکریپت منتقل می کند:

فایل  Index.php شامل کد زیر می شود :

در این حالت هکر میتونه هر نام تابعی رو به اسکرپیت منتقل کنه. به مثال زیر توجه کنید :

 

مثال شماره دو :

این روش، روش خطرناک تر و گسترده تره مثال اوله.
تو این روش نه تنها اپلیکیشن به نام تابع اجازه ارائه میده، بلکه پارامترها رو هم به حال خودشون رها می کنه.

Index.php شامل کد زیر میشه :

در این روش هکر هم میتونه نام تابع رو منتقل کنه و هم پارامتر رو به تابع برسونه که موجب اجرای کد از راه دور میشه.

این روش دستور ls رو بر روی سیستم اجرا میکنه.

 

مثال شماره ۳ :

این مثال روش دیگری رو برای ارزیابی توابع کاربر نشون میده که به جای استفاده براکت ها، پرانتزها، از call_user_func استفاده میکنه.

Index.php شامل کد زیر می شود :

در این قسمت نیز مشابه مثال ۱، هکر میتونه نام تابع رو به اسکریپت منتقل کنه. برای مثال :

 

 

مثال شماره ۴ :

این روش، مثال خطرناک تر روش سوم هستش. در این روش اپلیکیشن یه پارامتر دیگه رو برای call_user_func منتقل می کنه که خودش به عنوان یک پارامتر به تابعی که از اول برای call_user_func وجود داشته منتقل میشه. پارامتر های مختلف میتونن به call_iuser_func  منتقل بشن.

برای مثال :

 

Index.php شامل کد زیر می شود :

 

در این روش هکر میتونه هم نام تابع و هم پارامتر رو به تابعی که میتونه موجب اجرای کد از راه دور بشه منتقل کنه.

این روش دستور ls رو بر روی سیستم اجرا میکنه.

 

 

نویسنده: صدرا منبع: OWASP

:: نظرات

پاسخ دهید

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

*