00 - OWASP_TOP10 | Introduction

Injection series

  1. Limbo
    =====================================================
    Injection
    =====================================================

    في هذه السلسلة سوف نقوم بشرح تفصيلي للأساسيات و ايضا بعض النقاط من المستويات المتقدمة للـ OWASP Top 10 .

    في البداية ما هي الـ OWASP ؟


    Open Web Application Security Project (OWASP) Top 10

    تعتبر هي أكثر منظمة رائدة في مجال دراسة المخاطر الامنية المتعلقة بالـ Web Application .
    حسنا.. من المفاهيم الخاطئة عن OWASP TOP 10 انها عبارة عن اشهر الثغرات الامنية أو security vulnerabilities هذا مفهوم خاطئ بل هي قائمه بالـ security risks .
    تقوم منظمة الـ OWASP بعمل إحصائية على أشهر المخاطر التي تواجه الـ Web Application وتقوم بترتيبها حسب بعض النقاط المعينة .
    لمحة سريعة عن المعايير التي تم من خلالها تحديد او ترتيب هذه المخاطر الأمنية لدي OWASP .




    s9ao_GLz9aMeao9MHr90uSQ.png
    sBCnvanmTmNPWnbMNdOfUPg.png

    بالنسبة لدرجة الصعوبة في استغلال هذا النوع من الثغرات :
    استغلال هذه الثغرات سهل جدا ، يكون في الغالب عبارة عن وضع بعض الأوامر النصية او الاكواد داخل 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 .


    Screen Shot 2019-08-06 at 12.20.48 PM.png Screen Shot 2019-08-06 at 12.21.09 PM.png Screen Shot 2019-08-06 at 12.22.17 PM.png Screen Shot 2019-08-06 at 12.22.35 PM.png
    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------​



    HTML Injection

    هيا لنبدأ في توضيح النوع الأول لدينا هنا وهو HTML Injection .
    وهو من نوع الـ Client أي أن التطبيق او التأثير يكون في جانب العميل فقط في المتصفح ، وليس على السيرفر .
    وببساطة كما قلنا انه يعتمد على ; القدرة على تنفيذ أسطر الـ HTML في الصفحة حيث انه يكون عندي متغير Variable في كود الـ PHP للصفحة يسمح لي اني اعرض الـ input الخاص بي في الصفحة او المتصفح .
    تعالوا لنرى تطبيق بسيط جدا على هذا .

    image10.png

    فقط قمت بإنشاء ملف HTML.php ووضعة في مسار ال Apache server وقمت بتشغيله عبر المتصفح .


    HTML:
    <html>
    
    
    <body>
    
        Welcome :
        <?php
            echo $_REQUEST['username'];
        ?>
        !
    </body>
    
    </html>
    

    هذا الكود البسيط فقط يقوم بأخذ قيمة داخل المتغير username ويعرضها مرة اخرى على الشاشة فقط .


    Screen Shot 2019-08-06 at 12.46.39 PM.png

    قمت بإدخال قيمة للمتغير وتمت طباعتها علي الشاشة كما بالصورة .


    Screen Shot 2019-08-06 at 12.47.41 PM.png

    تم طباعة الكلمة علي الشاشة .. همممم حسنا دعونا نجرب مره اخري لكن مع سطر HTML بسيط
    .


    HTML:
    <h1> Nakerah.! </h1>


    Screen Shot 2019-08-06 at 12.52.14 PM.png

    التغيير بالفعل تم تطبيقه علي الصفحة ..
    لنري معا كود الصفحه في المتصفح . ها هو
    !



    Screen Shot 2019-08-06 at 12.54.31 PM.png

    حسنا وأين تكمل المشكلة ؟ لا اري خطورة في هذا .. حسنا
    ما رأيك في هذ
    ا .

    Screen Shot 2019-08-06 at 12.55.20 PM.png

    قمت بعمل عدة اسطر بسيطة جدا من HTML يطلب من المستخدم الدخول علي هذه الصفحة للتسجيل ..
    لكن مهلا . لم يكن هناك أصلا أي صفحة تسجيل في الموقع الرئيسي ...
    لاحظ الـ Link في الأعلى قمت بعمل Inject لأسطر الـ HTML في هذا الرابط داخل المتغير المصاب .
    وهنا تكمن المشكلة .. يمكن استخدام هذه الطريقة في عمل Phishing وخداع المستخدم .
    او عمل أي شيء تقريبا في الموقع يمكنك بناء الموقع الخاص بك كاملا عن طريق HTML Injection داخل الموقع الرئيسي وفقط يتم ذألك من خلال إيجاد الثغرة ... عمل التعديل المناسب .. ثم أرسلها الي الضحية .
    ها هو الكود السابق

    Screen Shot 2019-08-06 at 1.11.16 PM.png

    يمكنك حتي عمل Comment اي مسح الكود الاصلي للصفحة كاملا ثم وضع الكود الخاص بك من الصفر .
    دعونا نأخذ مثال حي ونقوم بالتطبيق علية ..
    يمكنك زيارة هذا الموقع التابع لـ Acunetix وهو احد اشهر الـ Scanners .

    http://testphp.vulnweb.com/listproducts.php?cat=1
    تظهر لنا في البداية صفحة عادية تعرض بعض الصور .

    Screen Shot 2019-08-06 at 1.17.46 PM.png

    لنري أين يمكننا التعديل علي الصفحة ورؤية المتغيرات الناتجة .
    دعونا نقم بتغير رقم الصفحة
    1 .


    Code:
    http://testphp.vulnweb.com/listproducts.php?cat=1
    
    http://testphp.vulnweb.com/listproducts.php?cat=nakerah
    

    Screen Shot 2019-08-06 at 1.19.37 PM.png الكلمة تمت طباعتها كما هي .. لنجرب مرة اخري مع بعض اسطر الــHTML .


    Code:
    http://testphp.vulnweb.com/listproducts.php?cat=<h1>nakerah</h1>
    
    

    Screen Shot 2019-08-06 at 1.21.57 PM.png تم التطبيق بنجاح .. وعلي هذه الحالة قم بقياس جميع الأوضاع مثل وجود Filter يحاول منع ادخال علامات مثل <>'/'() والعلامات الخاصة الاخرى قم بالتجربة مرارا مع فتح صفحة المصدر للكود لترى بعينك ما الذي تم تغييرة وما الذي تم عمل له Decode وكيف اقوم بتخطي هذا الـ Filter . الأمر يشبه كثيرا XSS التي سوف نقوم بشرحها لاحقا .

    HexoSe, omar2013, voodoo777 and 5 others like this.

Recent Reviews

  1. BassemNasser22
    BassemNasser22
    5/5,
    شرح قوي مبسط
  2. midoaamyreh
    midoaamyreh
    5/5,
    شرح مميز
  3. M.Ayad
    M.Ayad
    5/5,
    awesome suburb distinguished woek
  4. Ahmadh3$h
    Ahmadh3$h
    5/5,
    رائعون انتم
  5. time4x
    time4x
    5/5,
    شرح مميز ربنا يوفقك