یک کیبرد آزادی متعصب
باگ XSS چیست؟
سلام بر دوستان عزیز خوش اومدین به وبلاگ جدید من؛ امروز قرار توضیحی مختصر در باره باگ XSS بدیم و امیدوارم مفید واقع بشه.
باگ اصلا چی هست؟
معمولا کسانی که در حوزه نرم افزار؛ سیستم؛ وب؛ داده؛ امنیت و... کار می کنند؛ به خطا های کوچکی که در برنامه ها به وجود میاد باگ میگویند.
اما شما به طور کلی می تونید «اشکال» بگید؛ اما به فرایند اشکال زدایی یا رفع اشکال دیباگ گفته می شود.
اولین باگ دنیا چه زمانی بود؟
اولین بار در سال 1945 به وجود اومد و به لطف خانم گریس هاپر این لغت به وجود اومد ( Grace Murray Hopper ) که نیروی دریایی هم خدمت میکرد؛ و مشغول کار به روی ماشین MARK II بوده بود.
اولین باگ چطور به وجود اومد؟
درست در سال 1945 که خانم گریس هاپر به همراه چند نفر دیگه از متخصصین مشغول کار به روی دستگاه MARK II بودند متوجه شدند اختلال عملکرد این دستگاه شدند و فهمیدند که این اختلال به خاطر وجود یک حشره در این دستگاه هست!
چند نوع باگ داریم؟
ما حدود هفت نوع باگ داریم ( به طور کلی! ) که به طور کلی شامل :
- خطا های منطقی: در موقعیتی که منطق برنامه اشتباه پیاده سازی شود؛ مثل اجرای یک برنامه ایی که به طور بی نهایت یک چرخه رو انجام بده.
- نحوی ( سینتکس): زمانی که قواعد نوشتاری اون زبان برنامه نویسی رعایت نشود.
- محاسباتی: زمانی که محاسبات ریاضی اشتباهی صورت بگیرد؛ به عنوان مثال مثلا نتیجه تقسیم بر یک عدد فرضی باشه اما جواب غلط در بیاد
- منابع: این باگ زمانی به وجود میاد که برنامه در به کار گیری منابع به مشکل برخورد کنه مثلا اشاره به یک متغیر نامفهوم
- کار تیمی: خب فکر کنم این یکی واضح باشه وقتی شما تویه یک تیم بزرگ هستید؛ بعضی از کارها تا حدی بسیار ساده تر هستند اما کنترل کردن کارها و نظم بخشی به اون کارها سخت تر میشوند چرا که کنترل کردن صد نفر سخن تر از کنترل کردن ده نفر هست
- تعامل: به عنوان مثال وقتی نرم افزار با سخت افزار به مشکل میخوره؛ مثل استفاده از API ها
- چند رشته ایی: خب آخرین نوع باگ هست و بعضی جا ها هم تاثیر به سزایی هم میزاره و این نوع باگ به طور معمول با رشته های یک پردازنده کار داره.
حملات XSS چگونه انجام می شود؟
این نوع حملات به چند دسته تقسیم می شوند:
Reflected XSS(بازتاب ایکس اس اس)
زمانی که یک برنامه داده ای را در یک درخواست HTTP دریافت می کند به وجود می آید.
مثال:
سایت هایی که در آن ها برخی از پردازش ها را از طریق Query string انجام می دهند،
در مقابل این نوع از حملات آسیب پذیر هستند.
به این صورت که مهاجم می تواند با تغییر المان های داخل Query string در نوار آدرس، محتوای صفحه را تغییر داده و
یک لینک به صفحه حاوی اسکریپت های مخرب در آن ایجاد کند.
اگر کاربر از URL ساخته شده توسط مهاجم بازدید کند،
اسکریپت مهاجم در در مرورگر کاربر اجرا می شود.
در این صورت، اسکریپت می تواند هر عملیاتی را انجام دهد و
هر داده ای را که کاربر به آن دسترسی دارد بازیابی کند.
XSS ذخیره شده
با عنوان second-order XSS نیز شناخته می شود؛هنگامی به وجود می آید که برنامه یا صفحه تحت وب، داده ای را از یک منبع غیر قابل اعتماد دریافت می کند و
این داده ها را در پاسخ های HTTP خود به روشی ناامن قرار می دهد.
مثال:
فرض کنید یک وب سایت به کاربران اجازه می دهد که نظرات خود را در مورد پست های وبلاگ ارسال کنند تا
برای سایر کاربران نمایش داده شود.
در این بین کاربران مهاجم نظرات خود را با درخواست HTTP همراه با کدهای مخرب ارسال و به اصطلاح به صفحه تزریق می کنند.
به عنوان مثال برخی از کاربران با استفاده از این روش حمله باگ XSS،
با هر بار لود صفحه کاربران نهایی را مجبور به دانلود یک برنامه یا فایل مخرب با نام های مستعار و کاربردی می کند.
XSS مبتنی بر DOM
DOM یا Document Object Model نمایش سلسله مراتبی مرورگر وب از عناصر موجود در صفحه است
آسیب پذیری های XSS مبتنی بر DOM یا DOM-based XSS معمولا زمانی ایجاد می شوند که
JavaScript داده ها را از یک منبع قابل کنترل توسط هکر یا مهاجم گرفته و اجرا می کند (مانند یک URL).
این امکان مهاجمان را قادر می سازد تا حساب های کاربران دیگر را بدزدند.
مثال:
در این روش تگ های HTML به عنوان شیئی در زبان JavaScript در نظر گرفته می شوند که
می توان محتوای آن ها را تغییر داده و یا حتی آن ها را حذف کرد.
توجه داشته باشید که DOM به خودی خود مشکلی ایجاد نمی کند؛
چرا که یک بخش جدایی ناپذیر از نحوه کار وب سایت های مدرن است؛
اما به این دلیل که جاوا اسکریپت داده ها را به طور نا امن کنترل می کند،
می تواند بستری برای حملات مختلف باشد.
برخی از موارد آسیب پذیر در وب که معمولا برای حملات Cross-site Scripting استفاده می شوند، عبارتند از:
- انجمن ها
- صفحات چت
- صفحات وبی که امکان ارسال نظر دارند
حملات XSS از طریق موراد زیر امکان پذیر است:
- JavaScript
- VBScript
- ActiveX
- Flash
- CSS
چرا جاوا اسکریپت؟
به این دلیل که JavaScript پایه و اساس بخشی از عملکردهای مرورگر است (از JavaScript در نوشتن بخش هایی از مرورگرها استفاده شده است).
منابع:
سرخوش و خرم باشید تا یه جایی نو هفته های بعد:)
مطلبی دیگر از این انتشارات
تعیین و تکلیف هکر های کلاه سبز ( پارت ۲ )
مطلبی دیگر از این انتشارات
خدای خدایان ( اسمبلی )
مطلبی دیگر از این انتشارات
تعیین و تکلیف هکر های کلاه سبز