جدول محتوا
منابع مختلف باگ بانتی رو بهینهتر و سریعتر مطالعه کنید
یک روش که برای مطالعه ی منابع امنیتی مثل کتابها، مقالات و... ازش استفاده میشه، روش مطالعهی خطی هست. به این صورت که مثلا اگه بخوام دو کتاب در یک حوزهی مشترک امنیت مثل تست نفوذ وب رو مطالعه کنم، ابتدا کتاب A رو از اول تا آخر میخونم و بعد همین روند رو برای کتاب B انجام میدم. عیب اصلی این روش، کند بودن، اتلاف وقت و مواجهشدن با اطلاعات تکراری زیاد هست. در باگ هانتیگ مهمترین نکته سرعت عمل و بهروز بودن در منابع جدید نسبت به سایر رقباست. بهترین روش برای افزایش سرعت مطالعهی منابع مختلف، اینه که شما مفاهیم مشترکی که در بین منابع مختلفه و یک مفهوم رو منتقل میکنند، حذف کنید و روی تکنیکها یا سناریوهای حملهی جدید تمرکز کنید. به عنوان مثال اگر یک آسیبپذیری رو در کتاب A خوب یاد گرفتید و در کتاب B همون آسیبپذیری با تکنیکهای بیشتر اشاره شده، کافیه مفاهیم مشترک در منبع دوم رو نادیده بگیرید و مفاهیم و تکنیکهای جدید رو یاد بگیرید. مثلا اگه مفهوم یک آسیبپذیری مثل XSS رو در کتاب A خوب یاد گرفتید، در کتاب B یا منبع دیگه فقط تکنیکها و سناریوهای حملهی جدید XSS رو که در کتاب A نیست یاد بگیرید. برای این کار کافیه فهرست منبع رو ابتدا در نظر بگیرید. این کار باعث میشه کتاب یا منابع جدید در حوزهی امنیت، به خصوص باگ هانتینگ رو، با سرعت بیشتر و در زمان کمتر تموم کنید و بقیهی وقتتون رو برای تست سایتهای واقعی و تجربهی عملی بذارید.برای مفاهیم یا آسیبپذیریهای مختلف، Mind Map درست کنید
یکی از برنامههایی که زیاد برای باگ هانتینگ و حتی تدریس ازش استفاده میکنم، xmind هست. با این برنامه شما میتونید برای هر موضوعی که در نظر دارید، یک نقشهی ذهنی درست کنید و یکی از برنامههاییه که توسط باگ هانترهای زیادی استفاده میشه. سعی کنید برای هر آسیبپذیری یا هر مفهومی که در باگ هانتینگ با اون برخورد میکنید، یک نقشهی ذهنی درست کنید. این کار باعث میشه بعدا تکنیکها یا روشهای اکسپلویت جدیدی که یاد میگیرید رو به راحتی به Mind Map مورد نظر خودتون اضافه کنید. زمانی که میخواید برای یک آسیبپذیری، Mind Map درست کنید، موارد زیر رو در نظر بگیرید: مفهوم باگ در این بخش باید این سوال رو در نظر بگیرید که آسیبپذیری مورد نظر، چطوری ایجاد میشه؟ سعی کنید حتی در سطح کد، آسیبپذیری رو بررسی کنید تا به صورت عمیق با مفهوم باگ آشنا بشید. وبسایت portswigger منبع خوبی برای یادگیری آسیبپذیریهای مختلفه. همچنین از منابع مختلف برای یادگیری یک آسیبپذیری استفاده کنید و سعی کنید در یک محیط لوکال، آسیبپذیری رو شبیهسازی کنید تا به صورت مفهومی و خوب با آسیبپذیری آشنا بشید. در نهایت نکاتی که از مطالعه منابع مختلف یاد گرفتید رو به Mind Map اضافه کنید. کجا این آسیبپذیری رو پیدا کنیم؟ بعد از اینکه با مفهوم و علت به وجود اومدن آسیبپذیری به خوبی آشنا شدید، سعی کنید به این سوال فکر کنید که چه قسمتهایی از اپلیکیشن میتونه این آسیبپذیری رو داشته باشه؟ اگه با علت ایجاد باگ مورد نظر به خوبی آشنا شده باشید و در یک محیط لوکال تمرین کرده باشید، تا حد زیادی میتونید به جواب این سوال برسید. مطالعهی رایت آپهای مختلف هم میتونه در این زمینه به شما کمک کنه و باعث بشه تا با دید هکرهای مختلف آشنا بشید و بفهمید که آسیبپذیری در چه قسمتی از اپلیکیشن توسط باگ هانتر شناسایی شده است. درنهایت بعد از گذشت زمان، یک لیست کامل برای attack surface آسیبپذیری مورد نظر بدست خواهید آورد. تکنیکهای اکسپلویت آسیبپذیری هر تکنیک یا روش حملهی جدیدی که در منابع مختلف مثل کتابها و رایت آپها پیدا میکنید، به Mind Map اضافه کنید. Automation سرعت عمل در ریکان و فرآیند کشف آسیبپذیری اهمیت زیادی داره و باید بتونید روند کشف و اکسپلویت آسیبپذیریهای مختلف رو به صورت اتومات و با سرعت بیشتری نسبت به بقیه انجام بدید. این کار باعث میشه تا آسیبپذیریهایی که در سیستم به صورت بدیهی وجود دارند، با سرعت بیشتری پیدا بشن و بتونید زودتر گزارش کنید. به عنوان مثال، برای یک آسیبپذیری مثل SSRF میتونیم یک Mind Map کلی به صورت زیر در نظر بگیریم: در لینک زیر هم میتونید یک Mind Map کامل برای این آسیبپذیری رو ببینید: https://raw.githubusercontent.com/hackerscrolls/SecurityTips/master/MindMaps/SSRF.pngاز الگوی حملهی باگهانترهای دیگه کمک بگیرید
رایت آپها و ریپورتهای زیادی دربارهی آسیبپذیریهای مختلف وجود داره. نکتهی مهمی که باید در نظر بگیرید، اینه که در هر رایت آپ یا ریپورت سعی کنید با دید و الگوی حملهی باگ هانتر آشنا بشید. خودتون رو به جای باگ هانتر قرار بدید و بپرسید که در این رایت آپ و یا ریپورت، چه قسمتی یا کدوم functionality از اپلیکیشن تست شده؟ آیا میتونم از این الگوی حمله در اپلیکیشنهای مختلف هم استفاده کنم؟ زمانی که با یک الگوی حمله آشنا بشید، بعد از مدتی در کنار تجربهای که خودتون از تست وب اپلیکیشنهای مختلف بدست خواهید آورد، یک دانش خوب هم از الگوی حملهی باگ هانترهای مختلف بدست میارید. پس موقع بررسی هر ریپورت یا رایت آپ، سعی کنید جواب این دو سوال رو پیدا کنید:- کدوم functionality از تارگت مورد تست قرار گرفته؟
- الگوی حملهی هکر برای اکسپلویت این Functionality چی بوده؟
https://hackerone.com/reports/403417
در این ریپورت، باگ هانتر یک آسیبپذیری از نوع RCE در Logo Upload یا آپلودر تارگت پیدا کرده که تا اینجای کار میفهمیم functionality مورد تست باگ هانتر، Uploader اپلیکیشن بوده و این functionality در بسیاری از وب اپلیکیشنهای دیگه هم وجود داره. پس میتونیم ازاین الگوی حمله در بسیاری ازتارگتهای دیگه استفاده کنیم. در ادامه ی ریپورت، میبینیم تارگت از ورژن آسیبپذیر imageMagick استفاده میکرده. ( imageMagick یک ابزار open source هست که برای کار کردن با تصاویر مثل ویرایش عکس و... در یک وب اپلیکیشن ازش استفاده میشه). ورژن آسیب پذیر این برنامه این امکان رو به هکر میده که یک فایل از نوع عکس آپلود بکنه و به یک Reverse Shell برسه. در اینجا قصد ندارم به جزییات فنی بپردازم و هدفم شیوهی درک الگوی حملهی یک هکره. الگوی حمله ی هکر در اینجا به این صورت بوده که بررسی کرده و دیده که قابلیت آپلود تصویر در این دامین وجود داره و احتمال داده که تارگت ممکنه از imageMagick استفاده کنه (معمولا از این برنامه در اپلیکیشنهایی استفاده میشه که قابلیت ویرایش و دستکاری تصویر برای یوزر وجود داره). در نهایت باگ هانتر برای تست آسیبپذیری، یک فایل jpg درست کرده و داخل این فایل یک کد postscript قرار داده و عکس رو آپلود کرده و تونسته به یک reverse shell برسه. بدون توجه به جزییات، به طور ساده الگوی حمله باگ هانتر، آپلود یک تصویر مخرب در تارگتی بوده که از ورژن آسیب پذیر imageMagick استفاده میکرده. در اینجا ما functionality و الگوی حملهی باگ هانتر رو شناختیم. کافیه این دو مورد رو به Mind Map خودمون اضافه کنیم و در کنار چک لیستهای دیگهای که برای تست آپلودرها استفاده میکنیم، از این الگوی حمله هم استفاده کنیم. این یک مثال از بررسی یک گزارش بود. پس سعی کنید در گزارشها و رایت آپهای مختلف، با دید و الگوی حملهی باگ هانتر آشنا بشید.مشکل پیدا نکردن باگ در تارگت رو شناسایی کنید
یک سوال اساسی که بعضی وقتها برای ما پیش میاد اینه که چرا نمیتونیم آسیبپذیری در تارگت پیدا کنیم و یا به طور کامل یک آسیبپذیری رو اکسپلویت کنیم؟ در اینجا سه عامل اصلی که باعث میشن نتونیم از تارگت باگ پیدا کنیم و یا به طور کامل باگی رو اکسپلویت کنیم رو با هم بررسی میکنیم :- نداشتن دانش کافی دربارهی مفاهیم پایه یا بنیادی وب
- نداشتن اطلاعات کافی از تارگت یا ریکان ناقص
- نداشتن اطلاعات کافی دربارهی آسیبپذیری یا فهم نادرست باگ
- اکسپلویت توسط CSP بلاک شده و من نمیدونم چطوری این مکانیزم رو دور بزنم:
- درتارگت از Token-Based Authentication استفاده میشه. در قسمتی از اپلیکیشن که شامل اطلاعات حساس کاربران هست، هدر Origin به درستی در سمت سرور چک نمیشه و میشه از CORS برا دسترسی به اطلاعات حساس کاربران استفاده کرد اما نمیدونم چرا اکسپلویت کار نمیکنه.
- ساب دامینهای x و y از تارگت آسیبپذیری خاصی ندارند پس بیخیال این تارگت بشیم و بریم سراغ یک برنامهی دیگه.