السلام عليكم ورحمة الله وبركاتة،
بسم الله الرحمن الرحيم والصلاة والسلام على اشرف الانبياء والمرسلين سيدنا محمد عليه افضل الصلاة والسلام ،واما بعد اليوم اقدم لكم شرح لعلى وعسى يكون قد التطلاعات. وهو عن الجافا سكربت وبالاخص جيسون وهو اختصار الى JavaScript Object Notation أي تعني اختصار ترميز جافا سكريبت. او تدوين اهداف الجافا السكربت لكي تكون مرنه وسلسه عندما يقوم الانسان بقراءه الكود بشكل سهل، اما بخصوص وظيفه البرمجيه الاولية هي تقوم بنقل البيانات بين السيرفر والويب ابلكيشن Web server to web appliction، مثل اجاكس ajax واxml على كل حال جيسون هي لغة فردية ولكن تحتوى على ترميزات وا نصيب ليس بالبسيط من الجافا سكريبت.
شرحنا اليوم راح نتطرق في كيفيه اكتشاف السكربت مصاب با
Json Cross site scripting injection
الثغرة تكمن في التحقق من المدخلات والفلتره مثلها مثل اي ثغرة حقن اخرى يقوم بتحقق من المدخلات وايضا لها تخطيات للفلتره
نبدا على بركة الله
من خلال الصورة نلاحظ الطلب كان من خلال الستعلام من متغير GET^TITLE في HTTP METHODفي البداية لنفترض بأن لدينا صفحة بحث عن الفلام في سكربت معين مكتوب بلغة php &java json، تقوم الصفحة بالبحث بالاستعلام عن مدخل معين بستخدام جيسون لنقل البيانات للويب سيرفر ومن ثم يطبع لنا الناتج على الصفحة لناخذ مثال لحقن كود جافا سكربت
كما نلاحظ ظهر لنا قيمة الجافا سكربت والرد يكون من خلال JSONResponse
والتنفيذ من خلال دالة EVAL طبعا كما هو معلوم دالة Eval في الجافا سكربت خطيره من دون اخذ الحيطه الازمه من الفلتره والترتيب. لحد الان فهمنا انه السكربت يستخدم جيسون جافا سكربت لنقل البيانات وتنفيذ من دالة Eval
لنتجه الان لفحص اكواد الصفحة ونشرح على الاكواد في كيفيه عمل وتسير الصفحة.
نلاحظ بأن المتغير Title=GET
كما نلاحظ الكود مكتوب بلغة البي اتش بي ولكن الاستعلام بلغة الجيسون والاستدعاء ايضا من جيسون جافا سكربت
كما نلاحظ من الصور السابقة، الكود مكتوب بلغة البي اتش بي ولكن التنفيذ و الاستدعاء من لغة الجيسون جافا كما هو موضح في الصور السابقة. طيب بحكم المتغيرString يتم استدعاه من الجيسون وايضا بحكم عدم وجود فلتره للمدخل من قبل المبرمج. نقدر بأن نحقن البايلود تبعنا بكل سهولة، في حقن الجافا السكربت خاصه بالجيسون يذكرنا كثير في كيفيه تخطي لوحة التحكم من خلال ثغرات سيكول انجكشن. أي انه من خلال ارسال استعلام بحيث يوهم JSON JAVASCIRPT بأن الاستعلام صحيح بأن العمود او الاسم معين موجود في القاعدة. ناخذ مثال عن كيفيه الاستعلام من جيسون بأسم حقيقي مخزن.
كل من هالاسماء مسجل فعليأ في السكربت لنقوم بالبحث باحد هاذي الاسماء للمعاينه الناتج من الصفحة. لناخذ IRON MAN على سبيل المثال.
والاستعلام فعلا صحيح. Yes! We have that movie
كما نلاحظ الاستعلام من خلال الجيسون في البداية رمز '{ وفي النهاية }]}';
يعني استعلامنا لل IRON MAN هاكذا
; '{": {"}]};IRON MAN":[{"RESPONSE":"' . $TITLE. 'Yes! We have that movie'
الحقنه تكون في ارسال استعلام جيسون من خلال المتغير. المصابTITLE
وذالك عن طريق تخطي متغير String من خلال اقفال استعلام الاول تكون الحقنه هاكذا
نكتب نهاية الاستعلام في البداية ونقوم بالانتهاء بالبايلود او الحقنه هاكذا
}]}';alert('R3m0t3~nullbyte');//
والناتج JSON REFLECTED XSS
دمتم في حفظ الله ورعايته.
مراجع/ REFERENCES
تعليقات
إرسال تعليق