در یک حمله از نوع Injection، مهاجم یک برنامه را با ورودی مشکوک (suspicious)تحت تأثیر قرار میدهد، به این صورت که مفسر وب (Interpreter) این ورودی را به عنوان بخشی از یک دستور یا query پردازش میکند که به نوبه خود نحوه اجرای آن نرم افزار را تغییر میدهد.
قدیمیترین و مضرترین حملات علیه برنامههای کاربردی وب، حملات Injection هستند، این حملات ممکن است منجر به از دست دادن دادهها، از بین رفتن یکپارچگی دادهها، سرقت دادهها، انکار سرویس و به خطر افتادن کلی سیستم شوند، معمولاً اصلیترین علت آسیب پذیری Injection اعتبار سنجی ناکافی ورودی کاربران است. این سبک حمله خاص به عنوان یک مسئله جدی در امنیت برنامههای وب در نظر گرفته میشود و به عنوان برترین خطر امنیتی برنامههای وب در رتبه بندی OWASP TOP 10 قرار دارد، به خصوص در برنامههای قدیمیتر، حملات Injection – به ویژه SQL Injection و Cross-Site Scripting (XSS) (اسکریپت بین سایتی ) بسیار خطرناک و رایج هستند و مهاجم قادر است با استفاده از ابزارها به راحتی از این آسیب پذیریها سوء استفاده کند.
حملات Injection
در حملات سایبری از نوع “Injection” داده ها و متغیرهایی توسط سیستم مهاجم برای تغییر در نحوه پردازش دستورات به مفسر قربانی ارسال میشود، متغیرهای محیطی، پارامترها، سرویس های آنلاین و غیره تنها تعدادی از منابع داده ای هستند که ممکن است برای حملات Injection مورد استفاده قرار گیرند. از دست دادن داده ها، از دست دادن کنترل و افشای اطلاعات خصوصی مربوط به قربانی، خطرات مرتبط با حملات Injection هستند و میتواند دسترسی نامحدود به پایگاه داده را برای مهاجم فراهم کند و مهاجم را قادر سازد تا با بررسی جداول، دادههای مهم را بخواند ، بهروزرسانی کند و دسترسی Admin را در اختیار گیرد.
آسیب پذیریهایی که توسط حملاتInjection مورد حمله قرار میگیرند:
یافتن همه ارتباطات منابع خارجی در Source Codeها بهترین تکنیک برای بررسی برنامهها هستند که مشخص کند مستعد حملات Injection هستند یا خیر. (مانند کوئریهای SQL یا هر دستور دیگری برای درخواست به مفسرها ). روشهای مختلفی برای اجرای دستورالعملهای خارجی در بسیاری از زبانهای مختلف وجود دارد مانند دادههای یک درخواست HTTP که ممکن است یکی از این توابع را وارد کنند. آدرس ایمیل یا متن نمایه کاربر نمونههایی از دادههایی هستند که ممکن است مهاجم از طریق یک حمله Injection SQL وارد کند و به دنبال آن، برنامه به دلیل نقص در Source Code، SQL را در مقابل پایگاه داده اجرا کند. تکنیک تزریق محتوای مخرب همیشه از یک “Web Form” به عنوان یک پلت فرم تزریق استفاده نمیکند و همچنین حملات Injection همیشه پایگاههای داده SQL را به تنهایی هدف قرار نمیدهد، بلکه هر موقعیتی که در آن یک رابط کاربری به کسی اجازه ورود یا آپلود داده را میدهد ممکن است نقصی داشته باشد و باعث حمله Injection شود.
انواع حملات Injection
دو حمله رایج تزریقی عبارتند از: تزریق SQL (SQLi) و اسکریپت بین سایتی (XSS) که معمولترین انواع حملات Injection به شرح ذیر است:
-
SQL Injection
SQL Injection یک آسیبپذیری در امنیت آنلاین و یکی از خطرناکترین نقصهای برنامههای وب است که به طور مداوم در لیست 25 آسیبپذیری برتر CWE قرار میگیرد ، که ممکن است به مهاجم اجازه دهد کوئریهای SQL ارسال شده به پایگاه داده را تغییر دهد و دادههای خصوصی، از جمله مجموعه دادهها و جداول، ستونها و ساختار پایگاه داده را استخراج کند. به این صورت که مهاجم با اجرای دستورات SQL که توانایی دسترسی یا تغییر دادههای پایگاه داده را دارند امکان نوشتن هر فایلی روی سرور و حتی اجرای دستورات سیستم عامل را فراهم میکند که در نتیجه ممکن است یک سیستمِ جامع به خطر بیفتد.
-
Cross-Site Scripting (XSS)
یک نقص در برنامههای آنلاین که اغلب به نام برنامه نویسی متقابل (XSS) شناخته میشود، به شخص ثالث (مهاجم) اجازه میدهد یک اسکریپت را از سمت برنامه وب در مرورگر کاربر اجرا کند و یکی از رایجترین آسیبپذیری های وب است که اثرات شدیدی را به دنبال دارد، مانند فرستادن کاربران به یک وب سایت مخرب یا جمع آوری کوکیهای جلسه و در اختیار گرفتن جلسه کاربر. یک اسکریپت غیرمجاز ( که اغلب با جاوا اسکریپت نوشته میشود) توسط مهاجم به یک وب سایت قابل اعتماد یا برنامه آنلاین تزریق میشود سپس از مرورگر قربانی برای اجرای این اسکریپت استفاده میشود.
-
OS Command Injection
آسیبپذیری OS Command Injection که معمولاً به آن تزریق پوسته میگویند، مهاجم را قادر میسازد تا با مجوزهای کاربر، دستورالعمل های دلخواه سیستم عامل را تزریق کند و هر فرمانی را بر روی سیستم عامل سرور یک برنامه فعال اجرا کند.
-
LDAP Injection
در سرورهای IP، سرویس های دایرکتوری از طریق LDAP (پروتکل Lightweight Active Directory) قابل دسترسی و مدیریت هستند، LDAP علاوه بر دسترسی به پایگاه داده دایرکتوری، یک پروتکل سرویس گیرنده-سرور است که برای احراز هویت، مدیریت منابع و کنترل مجوز استفاده میشود. زمانی که مهاجم عبارات خطرناک و دستورات غیرمجاز را وارد میکند، سرور درخواستهای مخرب LDAP را دریافت میکند که بر امنیت تأثیر میگذارد، اگر مهاجم با موفقیت از تزریق LDAP استفاده کند، به دادههای محرمانه دسترسی خواهد داشت و می تواند ساختار LDAP را تغییر دهد.
-
CRLF Injection
Carriage Return Linefeed یا CRLF مجموعهای منحصر به فرد از کاراکترها است که پروتکل HTTP از آنها برای تعیین مرز خطوط استفاده میکند، در تزریق CRLF، برنامه با یک Response Header که شامل دنباله CRLF مهاجم و هر داده مجاوری است که هکر ارائه کرده است پاسخ میدهد، قابل توجه است که ربودن صفحات وب و سایر تاکتیکهای مرتبط در این حمله استفاده میشود و مهاجم میتواند یک Http Response Header را قطعه بندی کند و در Response Body قرار دهد.
-
Host Header Injection
Header میزبانِ یک وب سایت یا برنامه وب مشخص میکند که کدام یک از آنها به درخواست HTTP ورودی پاسخ دهد و Web Server با استفاده از مقادیر Header، انتقال درخواست به وب سایت یا برنامه آنلاین مشخص شده را انجام میدهد. مهاجم ممکن است web cache را آلوده کند و با سوء استفاده از اعتماد ضمنی هدر HTTP Host، حافظه پنهان سایت و قابلیت های بازنشانی رمز عبور را مخدوش میکند و فعالیتهای غیرقانونی مانند بازنشانی رمز عبور را انجام دهد.
-
Mail Command Injection
این حمله بسیار شبیه CRLF Injection است و با نام تزریق فرمان نامه شناخته میشوند. اگر مهاجم به شماره پورتی که سرور ایمیل در آن اجرا می شود دسترسی پیدا کند، می تواند به طور مستقیم با آن ارتباط برقرار کند، اگرچه تزریق ایمیل به طور مستقیم مالک وب سرور را به خطر نمیاندازد اما امکان ارسال هرزنامه یا حملات فیشینگ با استفاده از فرم تماس آسیب پذیر وجود دارد.