Injection
=====================================================
في هذه السلسلة سوف نقوم بشرح تفصيلي للأساسيات و ايضا بعض النقاط من المستويات المتقدمة للـ OWASP Top 10 .
في البداية ما هي الـ OWASP ؟
تعتبر هي أكثر منظمة رائدة في مجال دراسة المخاطر الامنية المتعلقة بالـ Web Application .
حسنا.. من المفاهيم الخاطئة عن OWASP TOP 10 انها عبارة عن اشهر الثغرات الامنية أو security vulnerabilities هذا مفهوم خاطئ بل هي قائمه بالـ security risks .
تقوم منظمة الـ OWASP بعمل إحصائية على أشهر المخاطر التي تواجه الـ Web Application وتقوم بترتيبها حسب بعض النقاط المعينة .
لمحة سريعة عن المعايير التي تم من خلالها تحديد او ترتيب هذه المخاطر الأمنية لدي OWASP .
بالنسبة لدرجة الصعوبة في استغلال هذا النوع من الثغرات :
استغلال هذه الثغرات سهل جدا ، يكون في الغالب عبارة عن وضع بعض الأوامر النصية او الاكواد داخل TextBox مثلا أو أي مكان ادخال ليقوم بقراتها وترجمتها المفسر او الـ interpreter لنظام التشغيل سواء كنت تتعامل مع قاعدة بيانات أو مع صفحة ويب الخ ..
بالنسبة لانتشار هذا النوع :
تعد هذه الثغرات شائعه الانتشار نوعا ما حيث توجد مثلا في الـ
SQL, LDAP, XPath, NoSQL queries, OS commands, XML parsers, SMTP headers,expression languages, and ORM queries.
بالنسبة لإيجاد هذه الثغرات :
تعد سهلة الاكتشاف ويمكن ذالك إما عن طريق فحص الكود او استخدام برامج فحص الثغرات مثل Scanner او حتي عن طريق Fuzzers .
بالنسبة لدرجة التأثير السلبي الناتج عنها :
تأثيرها كبير جدا يمكنك فعل أي شيء مثلا يمكنك حذف أي شيء أو رؤية أي شيء أو تعطيل الوصول الى الملفات ، التحكم الكامل في النظام ، الخ .. وبذلك يكون تأثيرها على العمل الخاص بك كبير جدا .
حسنا ما هي أصلا عملية الحقن Injection :
مبدئيا عندما أذكر كلمة حقن او Injection يأتي ببالك Sql Injection بما أنها أكثر الأنواع انتشارا وفي الاغلب قد سمعت بها من قبل ، لكن في الحقيقة تشير كلمة Injection إلى العديد من أنواع عمليات الهجوم .
بشكل سريع .. في هجوم الحقن ، يقوم أحد المهاجمين بإعطاء مدخلات ضارة للتطبيق . ثم تتم معالجة هذا الإدخال بواسطة الـ interpreter او المفسر والذي بدورة يتعامل مع هذا المدخل كجزء من أمر "command" أو "query" .
والذي بدوره يتم تنفيذ هذا الأمر وتطبيقه على النظام.
يعد أيضا الحقن من أقدم وأخطر الهجمات التي تستهدف web applications .حيث يمكن أن تؤدي عمليات الحقن إلى سرقة البيانات ، أو فقدان البيانات ، او حتي سلامة البيانات ، وحجب الخدمة ، أو اختراق النظام بالكامل. و السبب الرئيسي لهذه الثغرات او الحقن هو عدم التحقق من صحة مدخلات المستخدم او الـ user input .
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
هيا لنبدأ في توضيح النوع الأول لدينا هنا وهو HTML Injection .
وهو من نوع الـ Client أي أن التطبيق او التأثير يكون في جانب العميل فقط في المتصفح ، وليس على السيرفر .
وببساطة كما قلنا انه يعتمد على ; القدرة على تنفيذ أسطر الـ HTML في الصفحة حيث انه يكون عندي متغير Variable في كود الـ PHP للصفحة يسمح لي اني اعرض الـ input الخاص بي في الصفحة او المتصفح .
تعالوا لنرى تطبيق بسيط جدا على هذا .
فقط قمت بإنشاء ملف HTML.php ووضعة في مسار ال Apache server وقمت بتشغيله عبر المتصفح .
<html>
<body>
Welcome :
<?php
echo $_REQUEST['username'];
?>
!
</body>
</html>
هذا الكود البسيط فقط يقوم بأخذ قيمة داخل المتغير username ويعرضها مرة اخرى على الشاشة فقط .
قمت بإدخال قيمة للمتغير وتمت طباعتها علي الشاشة كما بالصورة .
تم طباعة الكلمة علي الشاشة .. همممم حسنا دعونا نجرب مره اخري لكن مع سطر HTML بسيط .
<h1> Nakerah.! </h1>
التغيير بالفعل تم تطبيقه علي الصفحة ..
لنري معا كود الصفحه في المتصفح . ها هو!
حسنا وأين تكمل المشكلة ؟ لا اري خطورة في هذا .. حسنا
ما رأيك في هذا .
قمت بعمل عدة اسطر بسيطة جدا من HTML يطلب من المستخدم الدخول علي هذه الصفحة للتسجيل ..
لكن مهلا . لم يكن هناك أصلا أي صفحة تسجيل في الموقع الرئيسي ...
لاحظ الـ Link في الأعلى قمت بعمل Inject لأسطر الـ HTML في هذا الرابط داخل المتغير المصاب .
وهنا تكمن المشكلة .. يمكن استخدام هذه الطريقة في عمل Phishing وخداع المستخدم .
او عمل أي شيء تقريبا في الموقع يمكنك بناء الموقع الخاص بك كاملا عن طريق HTML Injection داخل الموقع الرئيسي وفقط يتم ذألك من خلال إيجاد الثغرة ... عمل التعديل المناسب .. ثم أرسلها الي الضحية .
ها هو الكود السابق
يمكنك حتي عمل Comment اي مسح الكود الاصلي للصفحة كاملا ثم وضع الكود الخاص بك من الصفر .
دعونا نأخذ مثال حي ونقوم بالتطبيق علية ..
يمكنك زيارة هذا الموقع التابع لـ Acunetix وهو احد اشهر الـ Scanners .
http://testphp.vulnweb.com/listproducts.php?cat=1
تظهر لنا في البداية صفحة عادية تعرض بعض الصور .
لنري أين يمكننا التعديل علي الصفحة ورؤية المتغيرات الناتجة .
دعونا نقم بتغير رقم الصفحة 1 .
http://testphp.vulnweb.com/listproducts.php?cat=1
http://testphp.vulnweb.com/listproducts.php?cat=nakerah
http://testphp.vulnweb.com/listproducts.php?cat=<h1>nakerah</h1>