نکات کلیدی
1. درک اصول باگ باونتی و تعاملات وب
آسیبپذیری، ضعفی در یک برنامه است که به یک فرد مخرب اجازه میدهد تا اقداماتی غیرمجاز انجام دهد یا به اطلاعاتی دسترسی پیدا کند که نباید به آنها دسترسی داشته باشد.
تعریف آسیبپذیری. آسیبپذیری، نقصی در یک برنامه است که اجازه میدهد اقداماتی غیرمجاز یا دسترسی به اطلاعات محدود شده انجام شود. این نقصها میتوانند ناشی از استفادههای عمدی یا غیرعمدی از برنامه باشند. باگ باونتیها جوایزی هستند که شرکتها به هکرهای اخلاقی که بهطور مسئولانه این آسیبپذیریها را کشف و گزارش میدهند، ارائه میدهند.
مدل کلاینت-سرور. اینترنت از طریق شبکهای از کامپیوترها که از طریق بستهها با یکدیگر ارتباط برقرار میکنند، عمل میکند. کلاینتها درخواستها را آغاز میکنند و سرورها پاسخ میدهند. درک این رابطه کلاینت-سرور برای شناسایی آسیبپذیریهای بالقوه بسیار مهم است.
بازدید از وبسایت. زمانی که شما یک URL را وارد میکنید، مرورگر شما نام دامنه را استخراج کرده، آن را با استفاده از DNS به یک آدرس IP تبدیل میکند، یک اتصال TCP برقرار میکند، یک درخواست HTTP ارسال میکند، پاسخ سرور را دریافت میکند و پاسخ را نمایش میدهد. درخواستهای HTTP از روشهایی مانند GET، POST، PUT و DELETE برای تعامل با سرورها استفاده میکنند.
2. تسلط بر ریدایرکتهای باز برای بهرهبرداری از اعتماد
ریدایرکتهای باز از اعتماد یک دامنه خاص بهرهبرداری میکنند تا اهداف را به یک وبسایت مخرب جذب کنند.
آسیبپذیری ریدایرکت. ریدایرکتهای باز زمانی رخ میدهند که یک وبسایت کاربران را بر اساس ورودیهای غیرقابل اعتماد به یک سایت دیگر هدایت میکند، معمولاً از طریق پارامترهای URL. مهاجمان میتوانند این ریدایرکتها را دستکاری کنند تا کاربران را به سایتهای مخرب هدایت کنند، که ممکن است برای فیشینگ یا توزیع بدافزار باشد.
روشهای بهرهبرداری. مهاجمان میتوانند از طریق پارامترهای URL، تگهای refresh HTML <meta>
یا ویژگی window.location
جاوااسکریپت از ریدایرکتهای باز بهرهبرداری کنند. شناسایی پارامترهایی مانند url=
, redirect=
, یا next=
کلید یافتن این آسیبپذیریها است.
استراتژیهای کاهش. وبسایتها میتوانند با تأیید URLهای ریدایرکت در برابر یک لیست سفید از دامنههای معتبر یا با استفاده از صفحات میانجی که قبل از ریدایرکت کردن کاربران به سایتهای خارجی هشدار میدهند، ریدایرکتهای باز را کاهش دهند. مثال ریدایرکت میانجی HackerOne اهمیت شناسایی ابزارها و خدماتی را که وبسایتها در حین جستجوی آسیبپذیریها استفاده میکنند، نشان میدهد.
3. استفاده از آلودگی پارامتر HTTP برای رفتار غیرمنتظره
آلودگی پارامتر HTTP (HPP) فرآیند دستکاری نحوه برخورد یک وبسایت با پارامترهایی است که در طول درخواستهای HTTP دریافت میکند.
تعریف HPP. آلودگی پارامتر HTTP (HPP) شامل تزریق پارامترهای اضافی به یک درخواست HTTP برای دستکاری نحوه پردازش آنها توسط وبسایت است. این میتواند در سمت سرور اتفاق بیفتد و بر نحوه مدیریت دادهها توسط سرور تأثیر بگذارد یا در سمت کلاینت، بر رفتار مرورگر کاربر تأثیر بگذارد.
HPP در سمت سرور. HPP در سمت سرور از نحوه استفاده کد سمت سرور از مقادیر منتقل شده به عنوان پارامترها بهرهبرداری میکند. فناوریهای مختلف سرور به طور متفاوتی با پارامترهای متعدد با همان نام برخورد میکنند، که آزمایش را ضروری میسازد.
HPP در سمت کلاینت. HPP در سمت کلاینت به مهاجمان اجازه میدهد تا پارامترهای اضافی را به یک URL تزریق کنند تا تأثیراتی در سمت کاربر ایجاد کنند. این میتواند شامل دستکاری نحوه نمایش توابع جاوااسکریپت یا ویژگیهای HTML باشد که ممکن است منجر به XSS یا سایر آسیبپذیریهای سمت کلاینت شود. مثال دکمههای اشتراکگذاری اجتماعی HackerOne نشان میدهد که چگونه وبسایتهایی که محتوا را میپذیرند و با سایر خدمات وب ارتباط برقرار میکنند، میتوانند در برابر HPP آسیبپذیر باشند.
4. جلوگیری از جعل درخواست بینسایتی با درک احراز هویت
حمله جعل درخواست بینسایتی (CSRF) زمانی رخ میدهد که یک مهاجم میتواند مرورگر یک هدف را وادار کند تا یک درخواست HTTP به وبسایت دیگری ارسال کند.
تعریف CSRF. جعل درخواست بینسایتی (CSRF) زمانی رخ میدهد که یک مهاجم مرورگر یک کاربر را وادار میکند تا یک درخواست HTTP مخرب به وبسایتی ارسال کند که کاربر در آن احراز هویت شده است، بدون اینکه کاربر از این موضوع آگاه باشد یا رضایت دهد. این میتواند منجر به انجام اقداماتی غیرمجاز بر روی حساب کاربر شود.
روشهای احراز هویت. وبسایتها از کوکیها یا احراز هویت پایه برای ذخیره احراز هویت کاربر استفاده میکنند. کوکیها فایلهای کوچکی هستند که در مرورگر کاربر ذخیره میشوند، در حالی که احراز هویت پایه شامل ارسال نام کاربری و رمز عبور کدگذاری شده به صورت base64 در هدر درخواست HTTP است.
استراتژیهای دفاع. حملات CSRF میتوانند با استفاده از توکنهای CSRF که مقادیر منحصر به فرد و غیرقابل پیشبینی هستند و در درخواستهای HTTP برای تأیید اصالت آنها گنجانده میشوند، کاهش یابند. سایر دفاعها شامل استفاده از ویژگی کوکی SameSite و بررسی هدر Origin یا Referer است. مثال قطع ارتباط توییتر Shopify اهمیت جستجوی درخواستهای HTTP که اقداماتی را در سرور از طریق یک درخواست GET انجام میدهند، نشان میدهد.
5. شناسایی و بهرهبرداری از تکنیکهای تزریق HTML و جعل محتوا
تزریق HTML و جعل محتوا حملاتی هستند که به یک کاربر مخرب اجازه میدهند تا محتوا را به صفحات وب یک سایت تزریق کند.
تزریق HTML. تزریق HTML به مهاجمان اجازه میدهد تا عناصر HTML دلخواه را به یک وبسایت تزریق کنند، که ممکن است منجر به تخریب سایت یا ایجاد فرمهای فیشینگ شود. این مشابه XSS است، اما شامل اجرای جاوااسکریپت نمیشود.
جعل محتوا. جعل محتوا شامل تزریق محتوای متنی به یک وبسایت است که میتواند برای گمراه کردن کاربران یا انتشار اطلاعات نادرست استفاده شود. این معمولاً کمتر جدی از تزریق HTML است زیرا اجازه ایجاد عناصر HTML دلخواه را نمیدهد.
استراتژیهای کاهش. وبسایتها میتوانند با بهدرستی پاکسازی ورودیهای کاربر، کدگذاری کاراکترهای خاص و پیادهسازی کدگذاری خروجی سختگیرانه، تزریق HTML و جعل محتوا را کاهش دهند. مثال تزریق نظر Coinbase نشان میدهد که چگونه کدگذاری کاراکترها میتواند برای دور زدن پاکسازی HTML استفاده شود.
6. بهرهبرداری از تزریق بازگشت خط و تغذیه برای دستکاری HTTP
آسیبپذیری تزریق بازگشت خط و تغذیه (CRLF) زمانی رخ میدهد که یک برنامه ورودی کاربر را به درستی پاکسازی نکند یا بهطور نادرست این کار را انجام دهد.
تعریف تزریق CRLF. تزریق بازگشت خط و تغذیه (CRLF) زمانی رخ میدهد که یک مهاجم کاراکترهای کدگذاری شده (%0D و %0A) را به پیامهای HTTP تزریق کند، که به آنها اجازه میدهد هدرها را دستکاری کرده و احتمالاً حملات مخفیسازی درخواست HTTP یا تقسیم پاسخ را انجام دهند.
مخفیسازی درخواست HTTP. مخفیسازی درخواست HTTP شامل الحاق یک درخواست HTTP دوم به درخواست اولیه و مشروع با بهرهبرداری از یک آسیبپذیری تزریق CRLF است. این میتواند منجر به مسمومیت کش، فرار از دیوار آتش یا ربودن درخواست شود.
تقسیم پاسخ HTTP. تقسیم پاسخ HTTP به یک مهاجم اجازه میدهد تا یک پاسخ HTTP واحد را با تزریق هدرهای جدید تقسیم کند، که ممکن است منجر به آسیبپذیریهای XSS یا ریدایرکت شود. مثال تقسیم پاسخ v.shopify.com اهمیت جستجوی فرصتهایی را نشان میدهد که یک سایت ورودی را میپذیرد که به عنوان بخشی از هدرهای بازگشتی خود استفاده میکند.
7. شناسایی و بهرهبرداری از آسیبپذیریهای XSS
حملات XSS زمانی رخ میدهد که وبسایتها برخی کاراکترها را بدون پاکسازی نمایش میدهند و باعث میشوند مرورگرها جاوااسکریپت مخرب را اجرا کنند.
تعریف XSS. آسیبپذیریهای XSS زمانی رخ میدهند که یک وبسایت به مهاجمان اجازه میدهد تا کد جاوااسکریپت مخرب را به صفحات آن تزریق کنند، که سپس توسط مرورگرهای سایر کاربران اجرا میشود. این میتواند منجر به ربودن حساب، سرقت دادهها یا تخریب شود.
انواع XSS. دو نوع اصلی XSS وجود دارد: بازتابی (که در آن بارگذاری بلافاصله اجرا میشود) و ذخیرهشده (که در آن بارگذاری در سرور ذخیره میشود و بعداً اجرا میشود). XSS همچنین میتواند مبتنی بر DOM، کور یا خودی باشد.
استراتژیهای کاهش. وبسایتها میتوانند با بهدرستی پاکسازی ورودیهای کاربر، کدگذاری کاراکترهای خاص و استفاده از سیاست امنیت محتوای (CSP) آسیبپذیریهای XSS را کاهش دهند. مثال عمده Shopify نشان میدهد که آسیبپذیریهای XSS نیازی به پیچیدگی ندارند و مهم است که بررسی کنید یک سایت چگونه با انواع مختلف ورودیها برخورد میکند.
8. بهرهبرداری از تزریق الگو برای اجرای کد
آسیبپذیریهای تزریق الگو زمانی رخ میدهند که موتورهای الگو ورودی کاربر را بدون پاکسازی مناسب نمایش میدهند و گاهی منجر به اجرای کد از راه دور میشوند.
تعریف تزریق الگو. آسیبپذیریهای تزریق الگو زمانی رخ میدهند که یک برنامه وب از یک موتور الگو برای تولید دینامیک صفحات وب، ایمیلها یا رسانههای دیگر استفاده میکند و یک مهاجم میتواند کد مخرب را به الگو تزریق کند. این میتواند منجر به اجرای کد از راه دور (RCE) یا XSS شود.
تزریق الگوی سمت سرور (SSTI). آسیبپذیریهای SSTI زمانی رخ میدهند که تزریق در منطق سمت سرور اتفاق بیفتد. این میتواند به مهاجمان اجازه دهد تا کد دلخواه را بر روی سرور اجرا کنند و احتمالاً کل سیستم را به خطر بیندازند.
تزریق الگوی سمت کلاینت (CSTI). آسیبپذیریهای CSTI در موتورهای الگوی کلاینت و نوشته شده در جاوااسکریپت رخ میدهند. در حالی که معمولاً نمیتوانند برای RCE استفاده شوند، اما میتوانند برای XSS استفاده شوند. مثال تزریق الگوی AngularJS اوبر نشان میدهد که چگونه میتوان برای شناسایی آسیبپذیریهای CSTI با ارسال بارگذاریهای ساده و مشاهده نتیجه نمایش داده شده، آزمایش کرد.
9. بهرهبرداری از تزریق SQL برای دستکاری پایگاههای داده
زمانی که یک آسیبپذیری در یک سایت مبتنی بر پایگاه داده به یک مهاجم اجازه میدهد تا با استفاده از SQL (زبان پرسوجوی ساختاریافته) به پایگاه داده سایت حمله کند یا آن را پرسوجو کند، به آن تزریق SQL (SQLi) گفته میشود.
تعریف تزریق SQL. آسیبپذیریهای تزریق SQL (SQLi) زمانی رخ میدهند که یک مهاجم بتواند کد SQL مخرب را به یک پرسوجوی پایگاه داده تزریق کند و به این ترتیب به دستکاری یا استخراج دادهها از پایگاه داده بپردازد. این میتواند منجر به سرقت دادهها، تغییر دادهها یا حتی تصاحب کامل پایگاه داده شود.
تکنیکهای بهرهبرداری. مهاجمان میتوانند با دستکاری پارامترهای URL، ورودیهای فرم یا سایر دادههای کنترلشده توسط کاربر که در پرسوجوهای SQL استفاده میشوند، از آسیبپذیریهای SQLi بهرهبرداری کنند. تکنیکهای رایج شامل استفاده از شرط OR 1=1، افزودن نظرات برای دور زدن فیلترها و استفاده از عبارات UNION برای استخراج دادهها است.
استراتژیهای کاهش. وبسایتها میتوانند با استفاده از عبارات آماده، پرسوجوهای پارامتری و اعتبارسنجی ورودی، آسیبپذیریهای SQLi را کاهش دهند. مثال SQLi کور Yahoo! Sports نشان میدهد که چگونه میتوان با جستجوی تغییرات ظریف در نتایج پرسوجو، آسیبپذیریهای SQLi را آزمایش کرد.
10. تسلط بر جعل درخواست سمت سرور برای دسترسی به شبکههای داخلی
یک آسیبپذیری جعل درخواست سمت سرور (SSRF) به یک مهاجم اجازه میدهد تا یک سرور را وادار به انجام درخواستهای شبکهای غیرمجاز کند.
تعریف SSRF. آسیبپذیریهای جعل درخواست سمت سرور (SSRF) زمانی رخ میدهند که یک مهاجم بتواند یک سرور را وادار به انجام درخواستهای شبکهای غیرمجاز کند و به این ترتیب به منابع داخلی دسترسی پیدا کند یا با خدمات خارجی به نمایندگی از سرور تعامل کند.
تکنیکهای بهرهبرداری. مهاجمان میتوانند با دستکاری پارامترهای URL، ورودیهای فرم یا سایر دادههای کنترلشده توسط کاربر که برای ساخت درخواستهای HTTP استفاده میشوند، از آسیبپذیریهای SSRF بهرهبرداری کنند. این میتواند به آنها اجازه دهد تا به سرورهای داخلی دسترسی پیدا کنند، فایلهای حساس را بخوانند یا اقدامات مخرب دیگری انجام دهند.
استراتژیهای کاهش. وبسایتها میتوانند با اعتبارسنجی ورودی کاربر، لیستگذاری دامنههای مجاز و پیادهسازی تقسیمبندی شبکه، آسیبپذیریهای SSRF را کاهش دهند. مثال SSRF ESEA نشان میدهد که چگونه میتوان از آسیبپذیریهای SSRF برای پرسوجو از متاداده AWS بهرهبرداری کرد.
11. بهرهبرداری از آسیبپذیریهای موجود در موجودیت خارجی XML برای استخراج دادهها
مهاجمان میتوانند از نحوه تجزیه XML (زبان نشانهگذاری قابل گسترش) توسط یک برنامه با بهرهبرداری از یک آسیبپذیری موجودیت خارجی XML (XXE) سوءاستفاده کنند.
تعریف XXE. آسیبپذیریهای موجودیت خارجی XML (XXE) زمانی رخ میدهند که یک برنامه ورودی XML را تجزیه میکند و اجازه میدهد موجودیتهای خارجی گنجانده شوند، که میتواند برای دسترسی به فایلهای محلی، منابع شبکه داخلی یا حتی اجرای کد دلخواه استفاده شود.
تکنیکهای بهرهبرداری. مهاجمان میتوانند با ایجاد اسناد XML مخرب که شامل اعلامیههای موجودیت خارجی هستند، از آسیبپذیریهای XXE بهرهبرداری کنند، که میتواند برای خواندن فایلهای حساس یا انجام اقدامات مخرب دیگر استفاده شود.
استراتژیهای کاهش. وبسایتها میتوانند با غیرفعال کردن پردازش موجودیتهای خارجی، اعتبارسنجی ورودی XML و استفاده از تجزیهکنندههای XML امن، آسیبپذیریهای XXE را کاهش دهند. مثال دسترسی به خواندن Google نشان میدهد که چگونه میتوان از آسیبپذیریهای XXE برای خواندن فایلهای داخلی بهرهبرداری کرد.
12. شناسایی و بهرهبرداری از آسیبپذیریهای اجرای کد از راه دور
یک آسیبپذیری اجرای کد از راه دور (RCE) زمانی رخ میدهد که یک برنامه از ورودی کنترلشده توسط کاربر بدون پاکسازی استفاده کند.
تعریف RCE. آسیبپذیریهای اجرای کد از راه دور (RCE) زمانی رخ میدهند که یک مهاجم بتواند کد دلخواه را بر روی یک سرور اجرا کند و احتمالاً کل سیستم را به خطر بیندازد. این یکی از شدیدترین انواع آسیبپذیریها است.
تکنیکهای بهرهبرداری. مهاجمان میتوانند با تزریق دستورات شل، اجرای توابع در زبان برنامهنویسی استفاده
آخرین بهروزرسانی::
نقد و بررسی
کتاب شکار باگهای واقعی به خاطر معرفی خود به هک وب، بهویژه برای مبتدیان، نقدهای مثبتی دریافت کرده است. خوانندگان از توضیحات دقیق آن دربارهی آسیبپذیریهای رایج و مثالهای واقعی از گزارشهای HackerOne قدردانی میکنند. این کتاب به خاطر ساختار واضح و دسترسیپذیریاش، حتی برای خوانندگان غیرتخصصی، مورد تحسین قرار گرفته است. برخی انتقادات شامل محتوای قدیمی (مثالها تنها تا سال ۲۰۱۶) و سادهسازی بیش از حد برخی مفاهیم است. بهطور کلی، این کتاب برای افرادی که به امنیت سایبری، امنیت برنامههای وب و شکار باگ علاقهمند هستند، توصیه میشود و پیشنهاد میشود که با منابع جدیدتر برای درک جامعتر همراه شود.
Similar Books









