en
Feedback
Try Hack Box

Try Hack Box

Open in Telegram

1 Nov 2020 1399/08/11 🔴 THB | Offensive Security آموزش، تحقیق و تجربه عملی در امنیت تهاجمی Penetration Testing · Red Teaming · AI Security 🎯 یاد بگیر. آزمایش کن. حرفه‌ای شو.

Show more
6 499
Subscribers
-224 hours
+367 days
+11130 days
Posts Archive
\n\n@TryHackBox","datePublished":"2024-08-18T06:20:06Z","dateModified":"2024-08-18T06:20:06Z","author":{"@type":"Organization","name":"Try Hack Box","url":"https://telemetr.io/en/channels/1218408024-tryhackbox","image":"https://img.tlmtr.io/c/1ksjAk/6046249694691789995?ty=x"},"publisher":{"@type":"Organization","name":"Try Hack Box","url":"https://telemetr.io/en/channels/1218408024-tryhackbox","image":"https://img.tlmtr.io/c/1ksjAk/6046249694691789995?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":331},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":4}]}},{"@type":"ListItem","position":14,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/1218408024-tryhackbox/posts/1764","url":"https://telemetr.io/en/channels/1218408024-tryhackbox/posts/1764","mainEntityOfPage":"https://telemetr.io/en/channels/1218408024-tryhackbox/posts/1764","headline":"برای درک بهتر SOP، مثالی از کد زیر را که در output.jsbin.com میزبانی شده است، می‌آوریم که از درخواست Ajax برا…","articleBody":"برای درک بهتر SOP، مثالی از کد زیر را که در output.jsbin.com میزبانی شده است، می‌آوریم که از درخواست Ajax برای دریافت پاسخ gmail.com و نوشتن آن در صفحه وب با استفاده از یک سند استفاده می‌کند. function نوشتن.\n@TryHackBox","datePublished":"2024-08-18T04:10:21Z","dateModified":"2024-08-18T04:10:21Z","author":{"@type":"Organization","name":"Try Hack Box","url":"https://telemetr.io/en/channels/1218408024-tryhackbox","image":"https://img.tlmtr.io/c/1ksjAk/6046249694691789995?ty=x"},"publisher":{"@type":"Organization","name":"Try Hack Box","url":"https://telemetr.io/en/channels/1218408024-tryhackbox","image":"https://img.tlmtr.io/c/1ksjAk/6046249694691789995?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":333},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":5}]}},{"@type":"ListItem","position":15,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/1218408024-tryhackbox/posts/1763","url":"https://telemetr.io/en/channels/1218408024-tryhackbox/posts/1763","mainEntityOfPage":"https://telemetr.io/en/channels/1218408024-tryhackbox/posts/1763","headline":"شکل 1.4 مبدا در same-origin policy @TryHackBox","articleBody":"شکل 1.4 مبدا در same-origin policy\n@TryHackBox","datePublished":"2024-08-18T03:36:42Z","dateModified":"2024-08-18T03:36:42Z","author":{"@type":"Organization","name":"Try Hack Box","url":"https://telemetr.io/en/channels/1218408024-tryhackbox","image":"https://img.tlmtr.io/c/1ksjAk/6046249694691789995?ty=x"},"publisher":{"@type":"Organization","name":"Try Hack Box","url":"https://telemetr.io/en/channels/1218408024-tryhackbox","image":"https://img.tlmtr.io/c/1ksjAk/6046249694691789995?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":356},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":5}]}},{"@type":"ListItem","position":16,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/1218408024-tryhackbox/posts/1762","url":"https://telemetr.io/en/channels/1218408024-tryhackbox/posts/1762","mainEntityOfPage":"https://telemetr.io/en/channels/1218408024-tryhackbox/posts/1762","headline":"Same-Origin Policy (SOP) یکی از اساسی ترین و اصلی ترین سیاست ها در مرورگرها است. این خط‌مشی در اصل از دسترسی…","articleBody":"Same-Origin Policy\n(SOP) \nیکی از اساسی ترین و اصلی ترین سیاست ها در مرورگرها است. این خط‌مشی در اصل از دسترسی صفحات وب در یک مبدا جلوگیری می‌کند. Origin معمولاً به عنوان ترکیبی از طرح، دامنه و پورت گفته می شود. به عبارت ساده، اگر طرح، دامنه و شماره پورت آنها مطابقت داشته باشد، دو صفحه وب از یک مبدا در نظر گرفته می شوند.\n\nدر اینجا لازم به ذکر است که SOP ماهیت ناسازگار و ناهمگن است و از این رو اجرای آن در مرورگرها ممکن است متفاوت باشد. یک مثال از گذشته اینترنت اکسپلورر شامل یک طرح و یک هاست است. با این حال، پورت ها در نظر گرفته نمی شوند.\n\n@TryHackBox","datePublished":"2024-08-18T03:34:52Z","dateModified":"2024-08-18T03:34:52Z","author":{"@type":"Organization","name":"Try Hack Box","url":"https://telemetr.io/en/channels/1218408024-tryhackbox","image":"https://img.tlmtr.io/c/1ksjAk/6046249694691789995?ty=x"},"publisher":{"@type":"Organization","name":"Try Hack Box","url":"https://telemetr.io/en/channels/1218408024-tryhackbox","image":"https://img.tlmtr.io/c/1ksjAk/6046249694691789995?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":387},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":1},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":5}]}},{"@type":"ListItem","position":17,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/1218408024-tryhackbox/posts/1761","url":"https://telemetr.io/en/channels/1218408024-tryhackbox/posts/1761","mainEntityOfPage":"https://telemetr.io/en/channels/1218408024-tryhackbox/posts/1761","headline":"خوندن چت‌های ناشناس تلگرام @TryHackBox","articleBody":"خوندن چت‌های ناشناس تلگرام\n\n@TryHackBox","datePublished":"2024-08-18T03:25:47Z","dateModified":"2024-08-18T03:25:47Z","author":{"@type":"Organization","name":"Try Hack Box","url":"https://telemetr.io/en/channels/1218408024-tryhackbox","image":"https://img.tlmtr.io/c/1ksjAk/6046249694691789995?ty=x"},"publisher":{"@type":"Organization","name":"Try Hack Box","url":"https://telemetr.io/en/channels/1218408024-tryhackbox","image":"https://img.tlmtr.io/c/1ksjAk/6046249694691789995?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":362},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":15}]}},{"@type":"ListItem","position":18,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/1218408024-tryhackbox/posts/1760","url":"https://telemetr.io/en/channels/1218408024-tryhackbox/posts/1760","mainEntityOfPage":"https://telemetr.io/en/channels/1218408024-tryhackbox/posts/1760","headline":"معلوم شد ربات‌های چت ناشناس، در حال ذخیره سازی اطلاعات شما هستند! لینک کامل خبر","articleBody":"معلوم شد ربات‌های چت ناشناس، در حال ذخیره سازی اطلاعات شما هستند!\n لینک کامل خبر","datePublished":"2024-08-17T22:07:54Z","dateModified":"2024-08-17T22:07:54Z","author":{"@type":"Organization","name":"Try Hack Box","url":"https://telemetr.io/en/channels/1218408024-tryhackbox","image":"https://img.tlmtr.io/c/1ksjAk/6046249694691789995?ty=x"},"publisher":{"@type":"Organization","name":"Try Hack Box","url":"https://telemetr.io/en/channels/1218408024-tryhackbox","image":"https://img.tlmtr.io/c/1ksjAk/6046249694691789995?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":391},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":11}]}},{"@type":"ListItem","position":19,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/1218408024-tryhackbox/posts/1759","url":"https://telemetr.io/en/channels/1218408024-tryhackbox/posts/1759","mainEntityOfPage":"https://telemetr.io/en/channels/1218408024-tryhackbox/posts/1759","headline":"رابط کاربری این نشان دهنده HTML و CSS است و محتوای تجزیه شده را روی صفحه نمایش می دهد. ابزارهای مرورگر شامل ه…","articleBody":"رابط کاربری\n\nاین نشان دهنده HTML و CSS است و محتوای تجزیه شده را روی صفحه نمایش می دهد. ابزارهای مرورگر شامل همه چیزهایی است که می بینید به جز پنجره هایی که صفحه وب در آن ارائه می شود. به عنوان مثال، نوار آدرس، دکمه های برگشت/به جلو، و منوی نشانه گذاری، همه بخش های رابط کاربری هستند.\n\n\nBrowser Engine \n\nبه عنوان رابط بین رابط کاربری و موتور rendering عمل می کند. به عنوان مثال، هنگامی که یک کاربر با رابط مرورگر تعامل می کند، مانند تایپ یک URL، کلیک کردن بر روی لینک، یا تعامل با فرم، موتور مرورگر مسئول پردازش دستور است.\n\nRendering Engine\n\nموتور Rendering بخشی جدایی ناپذیر از مرورگرهای وب است، اساساً HTML، CSS و جاوا اسکریپت را به صفحات بصری و تعاملی تبدیل می کند. هر مرورگر از یک موتور خاص استفاده می کند: کروم و اپرا از Blink استفاده می کنند، فایرفاکس از Gecko استفاده می کند و Safari روی WebKit کار می کند. این موتورها نشانه‌گذاری و اسکریپت‌نویسی را پردازش می‌کنند تا Document Object Model (DOM) صفحه وب را ایجاد کنند، سبک‌ها را از CSS اعمال می‌کنند، جاوا اسکریپت را برای محتوای پویا اجرا می‌کنند، و سپس طرح‌بندی و نمایش بصری صفحه را روی صفحه نمایش می‌دهند. \nبا توجه به اینکه هر مرورگر وب از یک موتور Rendering خاص استفاده می‌کند، آسیب‌پذیری در موتوری مانند Blink، Gecko یا WebKit می‌تواند همه مرورگرهای متکی به آن موتور خاص را در معرض خطرات امنیتی بالقوه قرار دهد.\n\nNetworking \n\nاین کامپوننت مسئول برقراری تماس های شبکه اصلی مانند HTTP و DNS است.\n\nUI Backend\n\nاین برای دسترسی به روش های سیستم عامل اساسی مانند جعبه های ترکیبی، جعبه های کاربر و غیره استفاده می شود.\n\nJavaScript Interpreter\n\nاین جزء مسئول تجزیه و اجرای کد جاوا اسکریپت موجود در صفحات وب است.\n\nData Stroge\n\nاین مؤلفه مسئول ذخیره سازی داده ها در سمت سرویس گیرنده است. این شامل مکانیسم هایی مانند کوکی ها، ذخیره سازی وب، IndexedDB، WebSQL و FileSystem است.\n\nسیاست ها و مکانیسم های امنیتی مرورگر اصلی\n\nفروشندگان مرورگر چندین سیاست و مکانیسم امنیتی را برای محافظت از کاربران خود معرفی کرده اند. این خط‌مشی‌ها به‌طور پیش‌فرض اجرا می‌شوند یا ممکن است توسط هر مرورگر به روشی متفاوت اجرا شوند. فروشندگان مرورگر برای محافظت از کاربران خود، مجموعه وسیعی از سیاست ها و مکانیسم های امنیتی را پیاده سازی کرده اند. این خط‌مشی‌ها از کنترل نوع منبعی که می‌تواند در سطح granular  بارگذاری شود تا اعمال انزوا شدید بین وب‌سایت‌های مختلف را شامل می‌شود.\n\n@TryHackBox","datePublished":"2024-08-17T20:35:13Z","dateModified":"2024-08-17T20:35:13Z","author":{"@type":"Organization","name":"Try Hack Box","url":"https://telemetr.io/en/channels/1218408024-tryhackbox","image":"https://img.tlmtr.io/c/1ksjAk/6046249694691789995?ty=x"},"publisher":{"@type":"Organization","name":"Try Hack Box","url":"https://telemetr.io/en/channels/1218408024-tryhackbox","image":"https://img.tlmtr.io/c/1ksjAk/6046249694691789995?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":363},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":4}]}},{"@type":"ListItem","position":20,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/en/channels/1218408024-tryhackbox/posts/1758","url":"https://telemetr.io/en/channels/1218408024-tryhackbox/posts/1758","mainEntityOfPage":"https://telemetr.io/en/channels/1218408024-tryhackbox/posts/1758","headline":"اجازه دهید به طور خلاصه در مورد هر یک از اجزاء صحبت کنیم","articleBody":"اجازه دهید به طور خلاصه در مورد هر یک از اجزاء صحبت کنیم","datePublished":"2024-08-17T20:34:53Z","dateModified":"2024-08-17T20:34:53Z","author":{"@type":"Organization","name":"Try Hack Box","url":"https://telemetr.io/en/channels/1218408024-tryhackbox","image":"https://img.tlmtr.io/c/1ksjAk/6046249694691789995?ty=x"},"publisher":{"@type":"Organization","name":"Try Hack Box","url":"https://telemetr.io/en/channels/1218408024-tryhackbox","image":"https://img.tlmtr.io/c/1ksjAk/6046249694691789995?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":331},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":3}]}}]}
شکل 1.7 مجموعه کوکی ها در hackerone.com @TryHackBox
شکل 1.7 مجموعه کوکی ها در hackerone.com @TryHackBox

Cookie Bomb Vulnerability بمب کوکی زمانی اتفاق می‌افتد که یک وب‌سایت تعداد بسیار زیادی کوکی یا چند کوکی با اندازه بسیار بزرگ تنظیم می‌کند. مرورگرها محدودیت هایی در تعداد کوکی هایی دارند که می توانند ذخیره کنند، این محدودیت روی تعداد کوکی ها در هر دامنه یا اندازه کوکی ها تنظیم شده است. در سمت سرور، تعداد زیاد کوکی‌ها می‌تواند منجر به ارسال داده‌های بیش از حد در هدرهای HTTP شود، که می‌تواند زمان بارگذاری را افزایش داده و به طور بالقوه سرور را بیش از حد بارگذاری کند. بیایید نگاهی به کد جاوا اسکریپت زیر بیندازیم، که چندین کوکی را تنظیم می کند که از "testcookie1" شروع می شود و تا 99 افزایش می یابد، هر کدام با مقدار 4000 "A": مثال
// تنظیم دامنه let baseDomain = ' hackerone.com '; // یک رشته 4000 A برای مقدار کوکی ایجاد کنید let cookieValue = 'A'.repeat(4000); // حلقه برای تنظیم چند کوکی for (let cookieNum = 1; cookieNum < 99; cookieNum++) { // تنظیم یک کوکی با نام های افزایشی و رشته طولانی به عنوان مقدار document.cookie='testCookie${cookieNum}=${cookieValue};Domain=${baseDomain}'; }
پس از اجرای این کد جاوا اسکریپت در زمینه hackerone.com ، می توانیم ببینیم که مقدار کوکی تنظیم شده است. در نتیجه، دسترسی به hackerone.com و زیر دامنه های آن منجر به خطا می شود. @TryHackBox

نمونه ای از مسیر کوتاهتر
Set-Cookie:SessionID=setbytheservr;domain=. example.com ;path=/
نمونه ای از مهاجم که مسیر طولانی تری را تنظیم می کند
Set-Cookie:SessionID=attackerknown; domain=.example.com ;path=/admin
وقتی مرورگر این هدرها را پردازش می کند، هر دو کوکی را ذخیره می کند. با این حال، هنگام دسترسی به مسیری که با هر دو کوکی مانند «/admin» مطابقت دارد، کوکی با مسیر طولانی‌تری که توسط مهاجم تنظیم شده است، اولویت دارد. @TryHackBox

شکل 1.6 گزیده ای از RFC 6265 در مورد order کوکی @TryHackBox
شکل 1.6 گزیده ای از RFC 6265 در مورد order کوکی @TryHackBox

Cookie Tossing Vulnerability همانطور که قبلاً بحث شد، هنگامی که یک کوکی به طور دقیق در دامنه فعلی قرار ندارد، می توان توسط زیر دامنه های دامنه اصلی به آن دسترسی داشت. در صورتی که مهاجم بتواند کنترل هر زیردامنه را به دست آورد، پیامدهای این آسیب‌پذیری‌ها می‌تواند گسترده باشد، از جمله توانایی مهاجم برای تثبیت توکن جلسه، که منجر به تصاحب حساب می‌شود. در اینجا نحوه عملکرد حمله آمده است: مرحله 1: مهاجمی که کنترل vulnerable.example.com را در اختیار دارد، کوکی با نام "sessionID" را روی یک مقدار مشخص تنظیم می کند. مثال
Set-Cookie:sessionID=valueknowntoattacker;domain= example.com
مرحله 2: هنگامی که قربانی از یک زیر دامنه تحت کنترل مهاجم ( vulnerable.example.com ) بازدید می کند، مرورگر مقدار را ذخیره می کند. مرحله 3: قربانی از example.com بازدید می کند و با استفاده از شناسه جلسه ثابت به برنامه وارد می شود. مرحله 4: وقتی قربانی به برنامه وارد می شود، برنامه SessionID جدیدی ایجاد نمی کند. مرحله 5: مهاجم از همان Session ID برای کنترل حساب قربانی استفاده می کند. Cookie tossing حتی زمانی که یک کوکی با نام خاصی از قبل تنظیم شده باشد امکان پذیر است. هنگامی که مرورگر دو کوکی با یک نام دریافت می کند، مرورگر درخواست را معتبر می داند و هر دو را ارسال می کند. مثال
Set-Cookie:SessionID=setbytheserver;SessionID=attackerknown;domain=.example.com
اکثر برنامه ها در صورت تکرار، اولین پارامتر را پردازش می کنند. در این صورت، می‌توانیم با افزودن مسیرهای طولانی‌تر، کوکی خود را مجبور کنیم. این به این دلیل است که کوکی‌هایی با مسیرهای طولانی‌تر طبق جزئیات مستند شده تحت RFC 6265 [ https://datatracker.ietf.org/doc/html/rfc6265#section-5.4 ] اولویت دارند. @TryHackBox

Domain-Level Cookie Scoping همانطور که قبلا توضیح داده شد، در زمینه کوکی، محدوده کوکی از طریق پارامترهای دامنه و مسیر تنظیم می شود. با این حال، محدوده زمانی که به صورت آزاد تنظیم شود می تواند منجر به اختلاف شود. به مثال زیر توجه کنید: مثال Set-Cookie: key=anyvalue;domain=. example.com در این مثال، کوکی با ویژگی دامنه به است. " example.com ” با استفاده از یک نقطه پیشرو، که نشان دهنده یک قرارداد قدیمی است که برای تنظیم کوکی ها استفاده می شود. هنگامی که یک کوکی با دامنه ای به صورت “. example.com "، برای همه زیر دامنه های آن مانند sub.example.com یا tmgm.sub.example.com قابل دسترسی می شود. مرورگرهای مدرن این رفتار را استاندارد کرده اند و زمانی که domain= example.com (بدون leading dot) یا domain= را تنظیم می کنید. example.com (با نقطه اول)، کوکی ها در هر دو دامنه مشخص شده و همه زیر دامنه های آنها قابل دسترسی خواهند بود. توجه: روش صحیح restrict و limit scope دامنه این است که به هیچ وجه ویژگی دامنه را شامل نشود. @TryHackBox

HTTP Cookies همانطور که قبلاً ذکر شد، HTTP یک پروتکل stateless است و از این رو از تعاملات قبلی یک مشتری اطلاعی ندارد. برای غلبه بر این محدودیت، از کوکی های HTTP استفاده می شود. هنگامی که یک مشتری برای اولین بار درخواستی را به وب سرور ارسال می کند، سرور با یک هدر "Set-Cookie" حاوی مقدار کوکی پاسخ می دهد. سپس مقدار کوکی در مرورگر مشتری ذخیره می شود. با هر درخواست بعدی به وب سرور، مرورگر کوکی را ارسال می کند. این به سرور اجازه می دهد تا کلاینت را بشناسد و وضعیت جلسه را حفظ کند. یک کوکی بر اساس ویژگی‌های Domain و Path در مقایسه با آن تعریف می‌شود Same-Origin Policy (SOP) که به طرح، هاست و پورت متکی است. به عنوان مثال، کوکی زیر را در نظر بگیرید. مثال Set-Cookie: key=anyvalue; domain=example.com; Path=/search/ در این مثال، یک کوکی برای دامنه example.com تنظیم شده است و به طور خاص در محدوده /search/path قرار دارد. این بدان معنی است که کوکی حاوی "key=value" تنها زمانی توسط مرورگر ارسال می شود که درخواست ها به آدرس های اینترنتی در دامنه " example.com " و در مسیر "/search/" هدایت شوند. برخلاف SOP، کوکی‌ها به طور دقیق به یک مبدا محدود نمی‌شوند، مشروط بر اینکه ویژگی‌های Domain و Path کوکی به آن اجازه می‌دهد. این به یک وب‌سایت در یک مبدا اجازه می‌دهد تا کوکی‌ای را تنظیم کند که بتواند توسط منبع دیگری خوانده شود. @TryHackBox

Content Security Policy (CSP ) یک سیاست امنیتی است که به طور گسترده توسط همه مرورگرهای مدرن پشتیبانی می شود و برای کاهش حملات تزریق مانند XSS، clickjacking و سایر حملات تزریق کد ناشی از اجرای غیرمجاز اسکریپت طراحی شده است. این خط‌مشی اختیاری است و می‌تواند از طریق سرصفحه‌های «Content-Security-Policy» اجرا شود. بیایید نمونه‌ای را ببینیم که چگونه می‌توان CSP را طوری تنظیم کرد که به مرورگرها اجازه دهد جاوا اسکریپت را فقط از یک منبع مشخص، یعنی " http://code.jquery.com/jquery-1.11.0.min.js " اضافه کنند. مثال: Content-Security-Policy:script-src http://code.jquery.com/jquery-1.11.0.min.js ; این سیاست تضمین می‌کند که فقط جاوا اسکریپت از کتابخانه جی کوئری مشخص شده اجرا می‌شود و هر اسکریپت دیگری را که از این منبع نیست مسدود می‌کند. CSP به عنوان یک سیاست بسیار سختگیرانه معرفی شد، و از این رو، شکستن چندین وب سایت از دیدگاه دنیای واقعی عملی نبود. با این حال، با معرفی لول های بیشتر، این سیاست کمتر سختگیرانه و عملی شد. لول های CSP از لول 1 با دستورالعمل های اساسی به لول 3 پیشرفت کردند و کنترل های پیشرفته ای داشتند که امکان مدیریت دقیق منابع را فراهم می کرد. CSP دستورالعمل‌هایی را برای کنترل منابعی که یک صفحه می‌تواند بارگذاری کند، تعریف می‌کند، که به توسعه‌دهندگان اجازه می‌دهد منابعی را که در لیست سفید قرار می‌گیرند مشخص کنند. این شامل اسکریپت ها، سبک ها، تصاویر و موارد دیگر می شود. CSP Level 1 : این سطح دستورالعمل‌های اساسی را معرفی می‌کند که به توسعه‌دهندگان اجازه می‌دهد منابعی را که باید در لیست سفید قرار می‌گیرند را مشخص کنند. این شامل اسکریپت ها، سبک ها، تصاویر و موارد دیگر می شود. CSP Level 2 : این سطح به توسعه دهندگان کنترل بیشتری بر روی اینکه کدام مبدا می تواند سایت شما را در فریم ها جاسازی کند، ارائه می دهد. CSP Level 3 : این سطح در حال حاضر در حال توسعه است و تنها بخش‌هایی از آن تحت مرورگرهای مدرن پیاده‌سازی شده‌اند و کنترل دقیق‌تری بر تعاملات منابع ارائه می‌دهند. در آینده بیشتر درباره CSP و بایپس کردن  بالقوه آن به دلیل پیکربندی نادرست (misconfiguration)بررسی خواهیم کرد. @TryHackBox

توجه: در جدول، store.example.com و about:blank در یک مبدا نشان داده شده اند. این ممکن است برای برخی از خوانندگان گیج کننده باشد. "About:blank" منشأ ندارد و منشأ سندی را که آن را ایجاد کرده است به ارث می برد. به عنوان مثال، اگر صفحه ای در https://store.example.com پنجره جدیدی به about:blank باز کند، صفحه about:blank مبدا https://store.example.com را به ارث می برد. @TryHackBox

جدول 1.5 قوانین تعامل بین مبداهای مختلف
جدول 1.5 قوانین تعامل بین مبداهای مختلف

شکل ۱.۵ SOP violation
شکل ۱.۵ SOP violation

تصویر صفحه در شکل 1.5 نشان می دهد که دسترسی به " www.gmail.com " از " https://output.jsbin.com " به دلیل عدم تطابق نام میزبان مسدود شده است. جدول زیر (جدول 1.5) قوانین تعامل بین مبداهای مختلف را تشریح می کند و شرایطی را مشخص می کند که تحت آن مبدا یکسان رفتار می شود. @TryHackBox

Code : <script> xhr = new XMLHttpRequest(); xhr.open('GET', 'www.gmail.com', true); xhr.onreadystatechange = function () { if (xhr.readyState === XMLHttpRequest.DONE && xhr. status === 200) {document.write(xhr.responseText); } }; xhr.send(); </script> @TryHackBox

برای درک بهتر SOP، مثالی از کد زیر را که در output.jsbin.com میزبانی شده است، می‌آوریم که از درخواست Ajax برای دریافت پاسخ gmail.com و نوشتن آن در صفحه وب با استفاده از یک سند استفاده می‌کند. function نوشتن. @TryHackBox

شکل 1.4 مبدا در same-origin policy @TryHackBox
شکل 1.4 مبدا در same-origin policy @TryHackBox

Same-Origin Policy (SOP) یکی از اساسی ترین و اصلی ترین سیاست ها در مرورگرها است. این خط‌مشی در اصل از دسترسی صفحات وب در یک مبدا جلوگیری می‌کند. Origin معمولاً به عنوان ترکیبی از طرح، دامنه و پورت گفته می شود. به عبارت ساده، اگر طرح، دامنه و شماره پورت آنها مطابقت داشته باشد، دو صفحه وب از یک مبدا در نظر گرفته می شوند. در اینجا لازم به ذکر است که SOP ماهیت ناسازگار و ناهمگن است و از این رو اجرای آن در مرورگرها ممکن است متفاوت باشد. یک مثال از گذشته اینترنت اکسپلورر شامل یک طرح و یک هاست است. با این حال، پورت ها در نظر گرفته نمی شوند. @TryHackBox

خوندن چت‌های ناشناس تلگرام @TryHackBox

معلوم شد ربات‌های چت ناشناس، در حال ذخیره سازی اطلاعات شما هستند! لینک کامل خبر

رابط کاربری این نشان دهنده HTML و CSS است و محتوای تجزیه شده را روی صفحه نمایش می دهد. ابزارهای مرورگر شامل همه چیزهایی است که می بینید به جز پنجره هایی که صفحه وب در آن ارائه می شود. به عنوان مثال، نوار آدرس، دکمه های برگشت/به جلو، و منوی نشانه گذاری، همه بخش های رابط کاربری هستند. Browser Engine به عنوان رابط بین رابط کاربری و موتور rendering عمل می کند. به عنوان مثال، هنگامی که یک کاربر با رابط مرورگر تعامل می کند، مانند تایپ یک URL، کلیک کردن بر روی لینک، یا تعامل با فرم، موتور مرورگر مسئول پردازش دستور است. Rendering Engine موتور Rendering بخشی جدایی ناپذیر از مرورگرهای وب است، اساساً HTML، CSS و جاوا اسکریپت را به صفحات بصری و تعاملی تبدیل می کند. هر مرورگر از یک موتور خاص استفاده می کند: کروم و اپرا از Blink استفاده می کنند، فایرفاکس از Gecko استفاده می کند و Safari روی WebKit کار می کند. این موتورها نشانه‌گذاری و اسکریپت‌نویسی را پردازش می‌کنند تا Document Object Model (DOM) صفحه وب را ایجاد کنند، سبک‌ها را از CSS اعمال می‌کنند، جاوا اسکریپت را برای محتوای پویا اجرا می‌کنند، و سپس طرح‌بندی و نمایش بصری صفحه را روی صفحه نمایش می‌دهند. با توجه به اینکه هر مرورگر وب از یک موتور Rendering خاص استفاده می‌کند، آسیب‌پذیری در موتوری مانند Blink، Gecko یا WebKit می‌تواند همه مرورگرهای متکی به آن موتور خاص را در معرض خطرات امنیتی بالقوه قرار دهد. Networking این کامپوننت مسئول برقراری تماس های شبکه اصلی مانند HTTP و DNS است. UI Backend این برای دسترسی به روش های سیستم عامل اساسی مانند جعبه های ترکیبی، جعبه های کاربر و غیره استفاده می شود. JavaScript Interpreter این جزء مسئول تجزیه و اجرای کد جاوا اسکریپت موجود در صفحات وب است. Data Stroge این مؤلفه مسئول ذخیره سازی داده ها در سمت سرویس گیرنده است. این شامل مکانیسم هایی مانند کوکی ها، ذخیره سازی وب، IndexedDB، WebSQL و FileSystem است. سیاست ها و مکانیسم های امنیتی مرورگر اصلی فروشندگان مرورگر چندین سیاست و مکانیسم امنیتی را برای محافظت از کاربران خود معرفی کرده اند. این خط‌مشی‌ها به‌طور پیش‌فرض اجرا می‌شوند یا ممکن است توسط هر مرورگر به روشی متفاوت اجرا شوند. فروشندگان مرورگر برای محافظت از کاربران خود، مجموعه وسیعی از سیاست ها و مکانیسم های امنیتی را پیاده سازی کرده اند. این خط‌مشی‌ها از کنترل نوع منبعی که می‌تواند در سطح granular  بارگذاری شود تا اعمال انزوا شدید بین وب‌سایت‌های مختلف را شامل می‌شود. @TryHackBox

اجازه دهید به طور خلاصه در مورد هر یک از اجزاء صحبت کنیم