مضى على الشبكة و يوم من العطاء.
  • تحذير: يجب على كل روّاد الشبكة تشغيل برامج الاختراق داخل الأنظمة الوهمية وهي بهدف التعلم وحماية الأعضاء والتوعية بها

[ شرح ] html injection

Ahmad105Ahmad105 is verified member.

./عضو نشيط
.:: كاتب تقني ::.
>:: v1p ::<

السمعة:

HTML Injection - Theory

اخيراً , بداية الثغرة بعد انقطاع ستكون HTML injection
1720371940618.webp

| هي ثغرة بسيطة ولكن في البداية يجب ان نسال انفسنا التالي:

  1. ما هذه الثغرة ؟
  2. كيف يمكننا أن نفعلها؟
  3. كيف نصلحها؟
هذه الاسئلة مهمة بالنسبة لنا خاصة سؤال كيف يمكننا تغطية خلل معين , ولحسن الحظ HTML injection ليست واحدة من الثغرات الحرجة ومع ذلك، تعتبر bug , وسنبدأ بشرح ما هي تلك الثغرة بالضبط وامثلة حقيقية. ولكن علينا الانتباه ان بعض الاكواد تكون ضارة الى اقصى حد بالمستخدمين او تؤدي الى ثغرة xss ولكن كلامنا اليوم سيكون عن HTML injection



بجملة واحدة يمكننا القول أن HTML injection هو إدخال كود HTML في صفحة الموقع ببساطة , كيف تعمل بالثغرة؟
1720375035775.webp


إليكم مثال لنفترض أن لدينا صفحة ويب بسيطة جدًّ وتؤدي مهمة واحدة فقط.
تطلب من العميل إدخال اسمه داخل حقل الإدخال. بمجرد أن يدخل الشخص اسمه،
على سبيل المثال، لنقل أن الاسم المدخل هو "TOM"، ثم تعرض التطبيق
"Hello Tom"
إذًا نلاحظ أن هذا التطبيق يعكس أي شيء ندخله في الصفحة. ويعالج تطبيق الويب المدخل ويعكسه في جملة " {المدخل} Hello "





وهذا كود للمثال
1720375467474.webp

هذا الكود الذي بالصورة لدينا نموذج حيث ندخل اسمنا وبعد النموذج سيعرض "مرحباً" ومن ثم ما أدخلناه في حقل الإدخال. في هذا المثال المطروح ، يعكس المدخل "TOM"
لكن الجزء الرئيسي من الكود هو الجزء الذي نتحكم في كتابته وينعكس في الصفحة





1720376186360.webp


إذاً يأتي السؤال، ماذا سيحدث إذا بدلاً من اسم عادي، قمنا بإدخال كود HTML؟
مثلاً <h1>TEST<h1>
ماذا سيحدث للكود في صفحة الويب إذا قمنا بinjection له ؟
ماذا سينعكس؟


هنا نقرر إذا كانت الصفحة معرضة للـ HTML injection أم لا.
كود HTML الخاص بنا الذي تم عمل injection له في الصفحة سيبدو هكذا كما في الصورة







ماذا سيحدث للكود الموجود داخل صفحة web اذا تم كتابة html ، أنت الآن تتسائل، اليس كذلك؟
حسنًا، سيكون الأمر على حسب الحماية التي يٌقدمها السيرفر:
فممكن يطبع بشكل عادي string
HTML:نسخ إلى الحافظة
HTML:
 hello <h1><u>tom</u></h1>
او ممكن يعالجها ك html code مكتوب باكواد الموقع .... والخ
ولكن اذا عالجها كhtml هذا يعني أن الموقع مصاب بثغرة HTML Injection
وان user_input_feild لا يقوم عليه فلترة (لحمايته من مثل هذه الثغرات) ومن الممكن ايضا ان يكون هناك كود واحد فقط الذي يتم تنفيذه


الآن انتهينا من الجزء النظري، حان الوقت لنطبق على لابات مهيئة وبعد ذلك مواقع حقيقية
HTML Injection on TryHackMe
في هذا الجزء سوف نرى أوّل مثال على html injection
سنلقي نظرة على لاب من tryhackme
أول شيء عليك فعله هو التأكد أن burp قيد التشغيل في حال احتجنا له، أي لنكون على استعداد لاي نشاط غريب او لاكتشاف ثغرة

والآن نقوم بالدخول الى هنا للانتقال الى اللاب
ثم انتقل الى task رقم 5 | command injection practical
نقوم بتشغيل الجهاز
قم بتجهبز اعدادات الاتصال الخاصة ب.......tryhackme
1724008910937.webp


بعد تجهيز الامور الان نقوم بزيارة IP المعطى
يظهر لنا هذه الواجهة , input يمكننا ان نقوم بكتاية اي شئ فيه وسيطبعه ، مثلاً كلمة NOOB ثم submit
قد قام بعكسها إلينا عبر طباعتها في جملة
1724010320353.webp

1724010431472.webp

1724010834222.webp


لنقم الان بتجربة ثغرة htm linjection عبر كتابة وسم html في input ثم submit


1724011741872.webp


نعم نعم ولكن بعض المواقع لا تقبلها ....🤫 حتى لو كانت خطيرة حقًّا ! في الآخر رح تغلب حالك عشان ترفعها xss ولكن WAF لك بالمرصاد.
سنقابل 3 POC في النهاية انشاء الله

نرجع الى المثال هذا يعني ان الصفحة مصابة ب html injection، نجرب ندمج الاثنين html لنكون xss
قام الكود بتحوبل كل شئ الى هذا وعندما تقوم بالضغط على input يقوم بتنفيذ كود js >alert(1)<

1724012970137.webp


الكود المستخدم
HTML:نسخ إلى الحافظة
HTML:
<a/href=j&Tab;a&Tab;v&Tab;asc&NewLine;ri&Tab;pt&colon;&lpar;a&Tab;l&Tab;e&Tab;r&Tab;t&Tab;(1)&rpar;>

HTML Injection - Injecting User-Agent Header

لنرى مثال اخر على ثغرة HTML Injection
لنقم بتشغيل owaspVM
رابط التحميل https://sourceforge.net/projects/owaspbwa/
لنقم بالدخول الى هذا القسم OWASP Mutillidae II
مشاهدة المرفق 12724

لنقم بالدخول الى OWASP 2013 ثم A1injection(other) ثم htmlinjection قم الان باختيار اي شئ تريد ان تجرب عليه
اختار browser info

1724276163621.webp


الان سيتم فتح صفحة يجب أن تكون معرضه لحقن HTML Injection.
لكن بالمقارنة مع المثال الأخير الذي رأيناه هنا، فإننا لا نرى حقًا أي مدخلات من المستخدم يمكننا استخدامها

لا يمكننا إدخال كود HTML الخاص بنا في أي مكان على هذه الصفحة. اذا نظرت بتمعن قليلا ستلاحظ UserAgent الخاص بنا،
الآن، إذا تذكرنا في http header، يوجد header UserAgent يحتوي على المعلومات الخاصه بنا.

ونرى هذا في نهاية الصفحه أيضًا

Browser Version
Cookie PHPSESSID

Cookie acopendivids
تلك القيم لا تعرض الى في request
1724276113301.webp



الآن علينا التاكد من كل هذه المعلومات المطبوعه في الصفحه الذي في الموقع، هل هي لنا أم لا! إذًا لنقم بعمل interciptON ياستخدام اداة burp


1724276012003.webp

الآن، نقارن هذه المعلومات هنا، والمعروضه على صفحة الويب
كما نرى، إنه نفس الشيء تقريبًا واضح وضوح الشمس

لذلك، على الرغم من عدم وجود حقل إدخال للمستخدم على صفحة الويب الخاصة بنا، هل يمكننا محاولة إدخال HTML
1724276753006.webp


الان قد قمنا بارسال request
والناتج قام الموقع بتنفيذ الاكواد! إذًأ هذه html injection

1724276868320.webp
1724276892267.webp



لم نستخدم أي حقل إدخال للمستخدم في الصفحة، ولكننا مازلنا قادرين على إدخال كود HTML من خلال HTTP headers

كم هذا جميل يفتح الآفاق لمختبر الاختراق ....🥷

في الأمثلة القادمة سنرى شئ مثير اكثر من هذا بإذن الله !


Injecting Cookie Field and Redirecting The Page
الان دعونا نرى استخدام مختلف لثغرة html injection
في الجزء السابق عرفنا انه من الممكن إدخال الكود دون وجود أي حقل إدخال للمستخدم.

الآن لنقم بتشغيل owaspVM
لنقم بالدخول الى هذا القسم OWASP Mutillidae II
1724278287865.webp



لنقم بالدخول الى OWASP 2013 ثم A1injection(other) ثم html Via cookie injection ثم capture data page
هكذا لنجرب عليها

1724278440689.webp


الآن نرى انه لا يوجد حقل ادخال في الصفحه لنكتب html مرة أخرى،ولكن نحصل على cookie مطبوعه داخل الصفحه


1724278734521.webp

الآن نقوم باعتراض الطلب باستخدام burp نرى هنا ان القيمه الذي يمكن التعديل عليها هي PHPSESSID وهي نفس القيمه التي في الصفحه

1724441282035.webp


الآن نُجرب حقن html injection ولكن اخطر بكثير , يمكننا أن نستغل هذه الثغره جيّدًا بحيث يمكننا اعادة توجيه المستخدم الى اي موقع.
الآن حان وقت التنفيذ، كيف يمكننا أن نفعل ذلك؟

يمكننا كتابة هذا الكود:

HTML:
<meta http-equiv="refresh" content="2; URL=https://www.google.com" />
شرح الكود:
أولًا، نفتح meta tag ثم http-equiv = "refresh" تقوم بعمل refresh للصفحه ثم content = "2; وتحديد ان الموقع يقوم بعمل refresh في ثانيتين، أي تنفيذ الكود بعد 2
ويمكنك أن تجعلها 0 ثانيه عن طريق تغيرها لتلك content = "0; ثم url = https://www.google.com الرابط الذي سننتقل اليه ثم اغلاق meta tag

والآن، كل ما يجب علينا فعله هو تجربة إذا كان الكود سيتم تنفيذه أم لا.
نعم تم تنفيذ الكود وتم نقلنا الى google

يمكنك جعل الموقع يعيد التوجيه الى موقع مزيف ويمكنك استخدام tool مثل beef

Advance Example of HTML Injection
في هذا الجزء سنقوم بتطبيق مثالين متقدمين على html injection
ل
نقم بالدخول الى OWASP 2013 ثم A1injection(other) ثم htmli via Dom injection ثم html5 storage
1724446429831.webp



الآن، كما تلاحظن ف لدينا هُنا حقلين، ولدينا زر يتم تخزين القيم المدخله في في session storage , و local storage
1724446484310.webp

الآن لنقم باختبار هذه المدخلات لنجرب ادخال test في المدخلات ثم الضغط على add now
النتيجه كما ترى تمت طباعة مدخلنا الذي هو كلمة test كنص عادي داخل الصفحه ثلاث مرات
1724446794729.webp


الان نقوم باعتراض الطلب ياستخدام burp ولكن ستندهش عندما لا يصل اي طلب الى burp


ولكن على الرغم من عدم التقاطنا للطلب يمكننا ان نكتب html في حقول الادخال لنجرب
HTML:
<h1>Test</h1>
وكما نرى تم تنفيذ اكود ولكن لم يتم تنفيذه إلّا على واحد من ثلاثه; بسبب وجود تصفيه للمدخلات (filter) كstring
1724447991646.webp


هذا كان مثال بسيط ل html injection واخيرا حان الوقت لنرى مثال أكثر تقدمًا.


لنقم بالدخول الى OWASP 2013 ثم A1injection(other) ثم htmlinjection، قم الآن باختيار those back buttons
1724448733428.webp


وهذه هي الصفحة التي نحصل عليها مرة أخرى، ولا يوجد حقول ادخال
إذًا ماذا سنحقن؟
لا يمكننا حتى أن نرى في هذا النص أن أي شيء من header ينعكس بشكل جيد لنركز في ذلك النا ولا يعوقك الذي اسفل من ذلك اي في هذا الموقع شئ اجباري وجود User-Agent


1724449188878.webp


لنقم الان بقراءتها ولكن الخاصه ان الزر الرجوع الكبير الذي هو على اقصى الشمال لو ضغط عليه سيرجعك الى الصفحه السابقه
ويعمل الزر عن طريق تنفيذ جافاسكربت ان document.location.href يساوي
the HTTP header referrer


حسنًا، قد يمنحنا هذا بالفعل معلومات كافية إذا جربناها، على سبيل المثال ادخال كود html في referrer header ، دعنا ننتقل burp ونقوم باعتراض الطلب , ثم اضغط على زر الرجوع




لقد حصلنا على رابط الصفحة التي نريد زيارتها، وهي الصفحة السابقة لهذه الصفحة.
1724451420171.webp

وبما أننا قمنا بالنقر على زر الرجوع، فسوف يعيد توجيهنا إلى الصفحة السابقة يمكننا تعديل Referer header لنتمكن من الحصول على open redirect ولكن ليس موضوعنا

والان نرى الكود الخاص بزر الرجوع لنتاكد من ان Referer header ينعكس في الصفحه ام لا
نقوم بالضغط على [f12] من الكيبورد ليظهر لنا ادوات المطورين ونضغط على [ctrl shift s] مع بعض ثم قم بالتاشير على زر الرجوع
نرى انه فعلا ينعكس في الصفحه
1724452260099.webp

والآن، كيف يمكننا عمل htmlinjection ؟
نقوم بكتابة html في Referer header
وسيقوم الموقع تلقائيا بالرجوع الى الصفحه الذي جاء منها

1724452806480.webp

مره اخرى نقوم بالضغط على [f12] من الكيبورد ليظهر لنا ادوات المطورين ونضغط على [ctrl shift s] مع بعض ثم قم بالتاشير على زر الرجوع
نرى انه ما كتبناه في Referer header يعكس في الصفحه
1724453338906.webp


نقوم الان بمراجعة الكود عبر نسحه ومراجعته
1724453636607.webp

نرى انه ستم وضعه في a tag يتم تنفيز كود js ومن ثم كود html واغلاق '; event onclick ثم اغلاق a tag
واول شئ يجب وضعه بالحسبان ان الكود يبدا ب " ويجب اغلاقها لكي يعمل الكود اونتخطى جزئيه معينه
هنا انهينا امر js عبر "
1724453954507.webp

الآن لِنُكمل الكود
1724454163684.webp

ولكن بقي لدينا كود html داخل a tag ما يمكنني فعله الان هو اغلاق a tag
والآن نلاحظ اوجه التشابه في الكودان
1724454983844.webp

قد اغلقنا a tag وفتحنا h1 tag في نفس السطر وكانه سطر جديد
اكننا نكتب كود html المراد حقنه بعد a tag
1724455175998.webp

وها هو payload الخاص بنا.
1724455313301.webp
HTML:
"></a><h1>test</h1>


دعونا نرى ما ان كان سيعمل أم لا ....

لنقم بالخطوات السابقه مُجدّدًا،
افتح burp ، ارجع الى الصفحه التي اكتشفنا فيها الثغره، ثم بعمل اعتراض للطلب، وقم بتغير شئ بسيط في referrer header، وهو اضافة a><h1>test</h1>
على الرابط ولم نكن بحاجه الى حذف الرابط او ماشبه لقد كان فقط لتوضيع code ومراجعته


1724456596378.webp

النتيجه هنا تم عمل html injection

1724456849302.webp
وهذا هو الجزء المتبقي الذي قطعناه من هذا الخط هنا. ';">
بمكننا اخذ نظره عن كيفية ظهور هذا الكود، حيث نُلاحظ الآن أنه تم اغلاق a tag وكتابة كود آخر ثم يقايا الكود الأول تمت طباعتها
1724457076777.webp



POC html injection one
الهدف https://www.viator.com/

1724457690035.webp

في البدايه قمت بفحص domain الراسي للموقع يدويًا لم اجد شئ يذكر
ثم قمت بالدخول الى احد الرحلات الخاصه بهم ثم chat helper

اولى تجربتي كان هذا الشات مصاب NOLIMIT اي يمكنني ان ارسل ملايين الرسائل اي ملايين الاكواد لتخطي waf
ولكن بعد يوم تقريبا وجدت request مشفره

قمت بتجربة الثغره عبر burp intruder اثناء ما كان مصاب NOLIMIT
ولقد وجدت كود a tag فقط هو الذي يعمل كان تحته خط ولكن لم يكن ينفذ
ولكن كيف جلبت الكود مثل هذا وليس هذا ده كان عندي

اولا بعد الحديث مع فريق الدعم قد قام من كان يكلمني قد بعث الي بعض الروابط فقمت بفتح ادوات المطورين[f12]
ثم قمت بعمل تحديد للرابط ثم قمت بإرساله مرة أخرى وقد نجح الكود وقمت بعمل html injection
HTML:
<a href="https://evil.com" target="_blank" rel="nofollow noopener noreferrer">here</a>
قمت بالابلاغ عن الثغرة ولكن عندما أقول أن بعض الشركات لا تقبل بهذه الثغره; لدينا مثال وهذه كانت احدى الشركات
التي لديها حمايه لا باس بها بسبب waf عنيد لا اريد ذكر اسمه وحماية الموقع .

ملاحظة: ما زالت الثغرة موجودة

1724459431845.webp




POC html injection TWO
الهدف https://fr.shopping.rakuten.com
كنت اتصفح التقارير التابعه لhtml injection فوجدت هذه قمت بعمل اعادة استغلال وقمت بتحويلها الى open redirect عبر html


أعتذر على كل الأكواد الموجوده; ولكن كنت أختبر، وأخذت الموقع بعد الاستغلال، يمكنك الآن العيش مع أداة مثل beef بدون قلق




والسلام عليكم ورحمة الله وبركاته

وفي النهايه لو وجد أحدٌ خطأ ما، أو لو وجدت الإدارة خطأ ما ، من فضلكم راسلوني لتعديل الخطأ STORM لا تنسى مراجعته
 

المرفقات

  • 1724439892380.webp
    1724439892380.webp
    20.8 KB · المشاهدات: 102
  • 1724448113306.webp
    1724448113306.webp
    26.4 KB · المشاهدات: 98
  • 1724450741018.webp
    1724450741018.webp
    83.4 KB · المشاهدات: 99
  • 1724451263847.webp
    1724451263847.webp
    86 KB · المشاهدات: 100
التعديل الأخير بواسطة المشرف:
ها هو أحمد يعود لنا كالعادة بشروحاته الجبارة
بارك الله فيك وبارك في جهودك
 
اخيراً , بداية الثغرة بعد انقطاع ستكون HTML injection
1720371940618.webp

| هي ثغرة بسيطة في البداية يجب ان نسال انفسنا

  1. ما هذه الثغرة ؟
  2. كيف يمكننا أن نفعلها؟
  3. كيف نصلحها؟
هذه الاسئلة مهمة بالنسبة لنا خاصتاً كيف يمكننا تغطية خلل معين , ولحسن الحظ HTML injection ليست واحدة من
الثغرات الحرجة ومع ذلك، تعتبر bug , وسنبدأ بشرح ما هي تلك الثغرة بالضبط وامثلة حقيقية. ولكن علينا الانتباه من بعض حيث ان بعض الاكواد تكون ضارة الى اقصى حد . بالمستخدمين او تؤدي الى ثغرة xss ولكن كلامنا اليوم هيكون عن HTML injection



بجملة واحدة يمكننا القول أن HTML injection هو إدخال كود HTML في صفحة الموقع ببساطة , كيف تعمل بالثغرة؟
1720375035775.webp


إليكم مثال لنفترض أن لدينا صفحة ويب بسيطة جداً تؤدي مهمة واحدة فقط.
تطلب من العميل إدخال اسمه داخل حقل الإدخال. بمجرد أن يدخل الشخص اسمه،
على سبيل المثال، لنقل أن الاسم المدخل هو "TOM"، ثم تعرض التطبيق
"Hello Tom"
إذاً نلاحظ أن هذا التطبيق يعكس اي شئ ندخله في الصفحة. ويعالج تطبيق الويب المدخل ويعكسه في جملة " {المدخل} Hello "





وهذا كود للمثال
1720375467474.webp

هذا الكود الذي بالصورة لدينا نموذج حيث ندخل اسمنا وبعد النموذج سيعرض "مرحباً" ومن ثم ما أدخلناه في حقل الإدخال. في هذا المثال المطروح ، يعكس المدخل "TOM"
لكن الجزء الرئيسي من الكود هو الجزء الذي نتحكم في كتابته وينعكس في الصفحة





1720376186360.webp


إذاً يأتي السؤال، ماذا سيحدث إذا بدلاً من اسم عادي، قمنا بإدخال كود HTML؟
مثلاً <h1>TEST<h1>
ماذا سيحدث للكود في صفحة الويب إذا قمنا بinjection له ؟
ماذا سينعكس؟

هنا نقرر إذا كانت الصفحة معرضة للـ HTML injection أم لا.
كود HTML الخاص بنا الذي تم عمل injection له في الصفحة سيبدو هكذا كما في الصورة المقابلة







ماذا سيحدث للكود الموجود داخل صفحة web اذا تم كتابة html تتسائل اليس كذلك
حسنا سيكون الامر على حسب الحماية الي بيقدمها السيرفر ممكن يطبع بشكل عادي string
HTML:نسخ إلى الحافظة
HTML:
 hello <h1><u>tom</u></h1>
او ممكن يعالجها ك html code مكتوب باكواد الموقع .... والخ
ولكن اذا عالجها كhtml هذا يعني ان الموقع مصاب بثغرة HTML Injection
وان user_input_feild لا يقوم عليه فلترة (لحمايته من مثل هذه الثغرات) ومن الممكن ايضا ان يكون هناك كود واحد فقط الذي يتم تنفيذه

الان انتهينى من الجزء النظري حان الوقت لنطبق على لابات مهيئة وبعد ذلك مواقع حقيقية

في هذا الجزء سوف نرى اول مثال على html injection
سنلقي نظرة على لاب من tryhackme
اول شئ هو تاكد بان burp قيد التشغيل من عدم الحاجة إليها في الوقت الحالي لنكون على استعداد لاي نشاط غريب او لاكتشاف ثغرة

والان نقوم بالدخول الى هنا للانتقال الى اللاب
ثم انتقل الى task رقم 5 | command injection practical
نقوم بتشغيل الجهاز
قم بتجهبز اعدادات الاتصال الخاصة ب.......tryhackme
1724008910937.webp


بعد تجهيز الامور الان نقوم بزيارة IP المعطى
يظهر لنا هذه الواجهة , input يمكننا ان نقوم بكتاية اي شئ فيه وسيطبعه ، مثلاً كلمة NOOB ثم submit
قد قام بعكسها إلينا عبر طباعتها في جملة
1724010320353.webp

1724010431472.webp

1724010834222.webp


لنقم الان بتجربة ثغرة htmlinjection عبر كتابة وسم html في input ثم submit


1724011741872.webp


نعم نعم ولكن بعض المواقع لا تقبلها ....🤫 حتى لو كانت خطيرة حقا في الاخر تغلب حالك عشان ترفعها xss ولكن WAF لك بالمرصاد.
سنقابل 3 POC في النهاية انشاء الله

نرجع الى المثال هذا يعني ان الصفحة مصابة ب htmlinjection نجرب ندمج الاثنين html لنكون xss
قام الكود بتحوبل كل شئ الى هذا وعندما تقوم بالضغط على input يقوم بتنفيذ كود js >alert(1)<

1724012970137.webp


الكود المستخدم
HTML:نسخ إلى الحافظة
HTML:
<a/href=j&Tab;a&Tab;v&Tab;asc&NewLine;ri&Tab;pt&colon;&lpar;a&Tab;l&Tab;e&Tab;r&Tab;t&Tab;(1)&rpar;>



لنرى مثال اخر على ثغرة HTML Injection
لنقم بتشغيل owaspVM
رابط التحميل https://sourceforge.net/projects/owaspbwa/
لنقم بالدخول الى هذا القسم OWASP Mutillidae II
مشاهدة المرفق 12724

لنقم بالدخول الى OWASP 2013 ثم A1injection(other) ثم htmlinjection قم الان باختيار اي شئ تريد ان تجرب عليه
اختار browser info

مشاهدة المرفق 12735

الان سيتم فتح صفحة يجب أن تكون معرضه لحقن HTML Injection.
لكن بالمقارنة مع المثال الأخير الذي رأيناه هنا، فإننا لا نرى حقًا أي مدخلات من المستخدم يمكننا استخدامها

لا يمكننا إدخال كود HTML الخاص بنا في أي مكان على هذه الصفحة. اهذا ما تقولك اذا نظرنت بتمعن قليلا سنلاحظ UserAgent الخاص بنا
الآن، إذا تذكرنا في http header، يوجد header UserAgent يحتوي على المعلومات الخاصه بنا.

ونرى هذا في نهاية الصفحه ايضا

Browser Version
Cookie PHPSESSID

Cookie acopendivids
تلك القيم لا تعرض الى في request
مشاهدة المرفق 12734


الان علينا التاكد من كل هذه المعلومات المطبوعه في الصفحه الذي في الموقع هي لنا ام لا لنقم بعمل interciptON ياستخدام اداة burp


مشاهدة المرفق 12733
الآن، نقارن هذه المعلومات هنا، والمعروضه على صفحة الويب
كما نرى، إنه نفس الشيء تقريبًا واضح وضوح الشمس

لذلك، على الرغم من عدم وجود حقل إدخال للمستخدم على صفحة الويب الخاصة بنا، هل يمكننا محاولة إدخال HTML
مشاهدة المرفق 12736

الان قد قمنا بارسال request
والناتج قام الموقع بتنفيذ الاكواد اذن هذه htmlinjection

مشاهدة المرفق 12737مشاهدة المرفق 12738


لم نستخدم أي حقل إدخال للمستخدم في الصفحة، ولكننا مازلنا قادرين على إدخال كود HTML من خلال HTTP headers

كم هذا جميل يفتح الافاق لمختبر الاختراق ....🥷

في الامثله القادم سنرى شئ مثير اكثر من هذا



الان دعونا نرى استخدام مختلف لثغرة htmlinjection
في الجزء السابق لقد عرفنا انه من الممكن إدخال الكود دون وجود أي حقل إدخال للمستخدم.

لان نقوم لنقم بتشغيل owaspVM
لنقم بالدخول الى هذا القسم OWASP Mutillidae II
مشاهدة المرفق 12739


لنقم بالدخول الى OWASP 2013 ثم A1injection(other) ثم html Via cookie injection ثم capture data page
هكذا لنجرب عليها

مشاهدة المرفق 12740

الان نرى انه لا يوجد حقل ادخال في الصفحه لنكتب html فيه ولكن احصل على cookie مطبوعه داخل الصفحه


مشاهدة المرفق 12741
الان نقوم باعتراض الطلب باستخدام burp نرى هنا ان القيمه الذي يمكن التعديل عليها هي PHPSESSID وهي نفس القيمه التي في الصفحه

مشاهدة المرفق 12852

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

HTML:
<meta http-equiv="refresh" content="2; URL=https://www.google.com" />
شرح الكود اولا نفتح meta tag ثم http-equiv = "refresh" تقوم بعمل refresh للصفحه ثم content = "2; وتحديد ان الموقع يقوم بعمل refresh في ثانيتيه اي تنفيذ الكود بعد 2
ويمكنك ان تجعلها 0 ثانيه عن طريق تغيرها لتلك content = "0; ثم url = https://www.google.com الرابط الذي سننتقل اليه ثم اغلاق meta tag

والان كل ما يجب علينا ان نفعله هو تجربة ان الكود سيتم تنفيذه ام لا
نعم تم تنفبذ الكود وتم نقلنا الى google

يمكنك جعل الموقع يعيد التوجيه الى موقع مزيف ويمكنك استخدام tool مثل beef

في هذا الجزء سنقوم بتطبيق مثالين متقدمين على html injection
لنقم بالدخول الى OWASP 2013 ثم A1injection(other) ثم htmli via Dom injection ثم html5 storage
مشاهدة المرفق 12866


الان هنا حقلين ولدينا زر يتم تخزين القيم المدخله في في session storage , و local storage
مشاهدة المرفق 12867
الان لنقم باختبار هذه المدخلات لنجرب ادخال test في المدخلات ثم الضغط على add now
النتيجه كما ترى تمت طباعة مدخلنا الذي هو كلمة test كنص عادي داخل الصفحه ثلاث مرات
مشاهدة المرفق 12868

الان نقوم باعتراض الطلب ياستخدام burp ولكن ستندهش عندما لا يصل اي طلب الى burp


ولكن على الرغم من عدم التقاطنا للطلب يمكننا ان نكتب html في حقول الادخال لنجرب
HTML:
<h1>Test</h1>
وكما نرى تم تنفيذ اكود ولكن لم بتم تنفيذه الا على واحد من ثلاثه بسبب وجود تصفيه للمدخلات (filter) كstring
مشاهدة المرفق 12869

هذا كان مثال بسيط ل html injection واخيرا حان الوقت لنرى مثال اكثر تقدما


لنقم بالدخول الى OWASP 2013 ثم A1injection(other) ثم htmlinjection قم الان باختيار those back buttons
مشاهدة المرفق 12872

وهذه هي الصفحة التي نحصل عليها مرة أخرى، ولا يوجد حقول ادخال
إذن ماذا سنحقن؟
لا يمكننا حتى أن نرى في هذا النص أن أي شيء من header ينعكس بشكل جيد لنركز في ذلك النا ولا يعوقك الذي اسفل من ذلك اي في هذا الموقع شئ اجباري وجود User-Agent


مشاهدة المرفق 12873

لنقم الان بقراءتها ولكن الخاصه ان الزر الرجوع الكبير الذي هو على اقصى الشمال لو ضغط عليه سيرجعك الى الصفحه السابقه
ويعمل الزر عن طريق تنفيذ جافاسكربت ان document.location.href يساوي the HTTP header referrer

حسنًا، قد يمنحنا هذا بالفعل معلومات كافية إذا جربناها، على سبيل المثال ادخال كود html في referrer header ، دعنا ننتقل burp ونقوم باعتراض الطلب
ثم اضغط على زر الرجوع




لقد حصلنا على رابط الصفحة التي نريد زيارتها، وهي الصفحة السابقة لهذه الصفحة.
مشاهدة المرفق 12876
وبما أننا قمنا بالنقر على زر الرجوع، فسوف يعيد توجيهنا إلى الصفحة السابقة يمكننا تعديل Referer header لنتمكن من الحصول على open redirect ولكن ليس موضوعنا

والان نرى الكود الخاص بزر الرجوع لنتاكد من ان Referer header ينعكس في الصفحه ام لا
نقوم بالضغط على [f12] من الكيبورد ليظهر لنا ادوات المطورين ونضغط على [ctrl shift s] مع بعض ثم قم بالتاشير على زر الرجوع
نرى انه فعلا ينعكس في الصفحه
مشاهدة المرفق 12877
والان كيف يمكننا عمل htmlinjection نقوم بكتابة html في Referer header
وسيقوم الموقع تلقائيا بالرجوع الى الصفحه الذي جاء منها

مشاهدة المرفق 12878
مره اخرى نقوم بالضغط على [f12] من الكيبورد ليظهر لنا ادوات المطورين ونضغط على [ctrl shift s] مع بعض ثم قم بالتاشير على زر الرجوع
نرى انه ما كتبناه في Referer header يعكس في الصفحه
مشاهدة المرفق 12879

نقوم الان بمراجعة الكود عبر نسحه ومراجعته
مشاهدة المرفق 12880
نرى انه ستم وضعه في a tag يتم تنفيز كود js ومن ثم كود html واغلاق '; event onclick ثم اغلاق a tag
واول شئ يجب وضعه بالحسبان ان الكود يبدا ب " ويجب اغلاقها لكي يعمل الكود اونتخطى جزئيه معينه
هنا انهينا امر js عبر "
مشاهدة المرفق 12883
الان لنكمل الكود
مشاهدة المرفق 12884
ولكن بقي لدينا كود html داخل a tag ما يمكنني فعله الان هو اغلاق a tag
والان نلاحظ اوجه التشابه في الكودان
مشاهدة المرفق 12885
قد اغلقنا a tag وفتحنا h1 tag في نفس السطر وكانه سطر جديد
اكننا نكتب كود html المراد حقنه بعد a tag
مشاهدة المرفق 12886
وهاهو payload تبعنا
مشاهدة المرفق 12887
HTML:
"></a><h1>test</h1>


دعونى نرى ما ان كان سيعمل ام لا
لنقم بالخطوات السابقه افتح burp ارجع الى الصفحه التي اكتشفنا فيها الثغره ثم بعمل اعتراض للطلب قم بتغير شئ بسيط في referrer header الا وهو اضافة a><h1>test</h1>
على الرابط ولم نكن بحاجه الى حذف الرابط او ماشبه لقد كان فقط لتوضيع code ومراجعته

مشاهدة المرفق 12891
النتيجه هنا تم عمل html injection

مشاهدة المرفق 12892وهذا هو الجزء المتبقي الذي قطعناه من هذا الخط هنا. ';">
بمكننا اخذ نظره عن كيفية ظهور هذا الكود نرر الان انه تم اغلاق a tag وكتابة كود اخر ثم يقايا الكود الاول تمت طباعتها
مشاهدة المرفق 12893



الهدف https://www.viator.com/

مشاهدة المرفق 12894
في البدايه قمت بفحص domain الراسي للموقع يدويا لم اجد شئ يذكر
ثم قمت بالدخول الى احد الرحلات الخاصه بهم ثم chat helper
اولى تجربتي كان هذا الشات مصاب NOLIMIT اي يمكنني ان ارسل ملايين الرسائل اي ملايين الاكواد لتخطي waf
ولكن بعد يوم تقريبا وجدت request مشفره
قمت بتجربة الثغره عبر burp intruder اثناء ما كان مصاب NOLIMIT
ولقد وجدت كود a tag فقط هو الذي يعمل كان تحته خط ولكن لم يكن ينفذ
ولكن كيف جلبت الكود مثل هذا وليس هذا ده كان عندي
اولا بعد الحديث مع فريق الدعم قد قام من كان يكلمني قد بعث الي بعض الروابط فقمت بفتح ادوات المطورين[f12]
ثم قمت بعمل تحديد للرابط ثم قمت بارساله مره اخرى وقد نجح الكود وقمت بعمل html injection
HTML:
<a href="https://evil.com" target="_blank" rel="nofollow noopener noreferrer">here</a>
قمت بالابلاغ عن الثغره ولكن عندما اقول ان بعض الشركات لا تقبل بهذه الثغره اي لدينا مثال وهذه كانت احدى الشركات
التي لديها حمايه لا باس بها بسبب waf عنيد لا اريد ذكر اسمه وحماية الموقع . ملاحظه مزالت الثغره موجوده

مشاهدة المرفق 12895




الهدف https://fr.shopping.rakuten.com
كنت اتصفح التقارير التابعه لhtml injection فوجدت هذه قمت بعمل اعادة استغلال وقمت بتحويلها الى open redirect عبر html


اسف على كل الاكواد الموجوده ولكن كنت اجتبر واخذت الموقع بعد الاستغلال يمكنك الان العيش مع اده مثل beef بدون قلق






وفي النهايه لو وجد احد خطا ما فل يراسلني او الاداره لتعديل الخطا STORM لا تنسى مراجعته
بارك الله فيك حبيب القلب وجزاك الله كل خير
ربنا يبارك بحصتك وعلمك وعملك وربنا يرفع مقامك دنيا واخرة
ننتظر جديدك دائماً يا وحش
 
وحش ما شاء اله تبارك الله و تبرع في الشرح .. الله يجزيك خير اخي
التعليق ليس نسخ لصق ههه لكن فعلا لا اجد ما يمكن ان امدحك به لهذا الجهد
 

آخر المشاركات

فانوس

رمضان
عودة
أعلى