
چرا باگ پیدا نمیکنید؟
شکار باگ ذاتا کار سختیه. نه فقط به خاطر این که بهترین هکرها قبلا همهچی رو زیر و رو کردن، بلکه چون شما به عنوان یه فرد تنها دارید تلاش میکنید تا از سازمانهایی که میلیاردها دلار درآمد دارن باهوشتر باشید.
- چرا باگ پیدا نمیکنید؟
- شکار باگ ذاتا سخته
- الان شاید هیچی پیدا نکردید، ولی پیدا خواهید کرد
- گرفتار شدن توی سیاهچاله آموزش
- اولین باگ من؟ اصلا آماده نبودم
- آموزش مفید هست، اما دنیای واقعی خیلی پیچیدهتره
- نسبت آموزش به شکار واقعی رو کمکم تغییر بدید
- کتاب رو بذارید زمین و برید سراغ شکار واقعی
- هدف درست رو انتخاب کنید
- روی یک هدف تمرکز کنید
- اتوماسیون یه بازی کاملا متفاوته
- با جامعه در ارتباط باشید
- جوایز واقعی، لحظات خوبیه که توی مسیر دارید
- ابزارهایی که واقعا نیاز دارید:
شکار باگ ذاتا سخته
علاوه بر این، نشستن پای مانیتور برای ساعتها و خیره شدن به صفحه، فقط برای این که در پایان هیچ دستاوردی نداشته باشید، واقعا میتونه ناامیدکننده باشه.
همونطور که پدربزرگم همیشه میگفت (البته فقط برای جذابتر شدن این مطلب):
“اگه به چیزی اونقدر دست بزنی، بالاخره یه جاش خراب میشه!”
الان شاید هیچی پیدا نکردید، ولی پیدا خواهید کرد
حتی اگه الان هیچ باگی پیدا نکردید، مطمئن باشید که بهش میرسید. برای اینکه کمکتون کنم زودتر به این نقطه برسید، اینجا چند تا نکته کلی آوردم که ممکنه جلوی پیشرفتتون رو گرفته باشه.
گرفتار شدن توی سیاهچاله آموزش
من خودم هم بارها به این مشکل دچار شدم و با اینکه بهتر میدونستم، باز هم نمیتونستم از این عادت دست بکشم.
این حوزه اونقدر فنی و گسترده هست که همیشه چیزی برای یاد گرفتن وجود داره و از همه مهمتر، یاد گرفتنش هم لذتبخشه.
برنامه نویسی، کلاس های آسیب پذیری، مقالههای جدید، چالشهای CTF، آزمایشگاهها این مسیر واقعا پایانی نداره.
حتی برای همین، توی این مقاله عمدا هیچ لینکی به منابع نمیذارم تا شما رو توی این چاه بیپایان آموزشی نندازم.
اما، تقریبا هر بار که واقعا به حرف شکارچیهای با تجربه گوش دادم و بدون اینکه حس کنم مهارت کافی دارم، وارد دنیای واقعی شدم، یه چیزی پیدا کردم.
اولین باگ من؟ اصلا آماده نبودم
وقتی اولین باگم رو گزارش کردم، واقعا هیچ آمادگی خاصی نداشتم. درست مثل شما، فکر میکردم شاید هیچوقت نتونم چیزی پیدا کنم.
ولی بعد از صرف وقت کافی روی یک هدف، موفق شدم یه آسیب پذیری IDOR کشف کنم که بهم اجازه میداد به دادههای حساس هر کسی که میخواستم توی یک پایگاه داده دولتی دسترسی پیدا کنم.
وقتی اولین چیزی رو پیدا کنید (و پیدا خواهید کرد، من به شما ایمان دارم)، اون هیجان و آدرنالین لحظه ارسال گزارش و صحبت با تیم triage باعث میشه انگیزه بگیرید و باز هم ادامه بدید.
اون هیجان باعث شد نه مدت زیادی بعد از اولین باگم، دو تا آسیب پذیری XSS هم روی یه هدف دیگه پیدا کنم.
اما بعدش چی شد؟ دوباره افتادم توی سیاهچاله آموزش و ماهها طول کشید تا دوباره یه چیزی پیدا کنم.
دوباره توی اون سیاهچاله نیفتید.
وقتی اولین باگ رو پیدا کنید و مطمئنا پیدا میکنید همون جرقهای میشه که شما رو به سمت شکار باگهای بعدی هل میده.
آموزش مفید هست، اما دنیای واقعی خیلی پیچیدهتره
تمرینهای شبیه سازی شده شاید به شما کمک کنن که چشمتون رو برای پیدا کردن سرنخهای کلی تیز کنید، ولی درخواستها و پاسخهایی که توسط اپلیکیشنهای واقعی وب تولید میشه، معمولا خیلی پیچیدهتر از چیزیه که توی آزمایشگاهها میبینید.
هر چقدر پیچیدگی بیشتر باشه، احتمال اینکه توسعهدهندهها یه چیزی رو از قلم بندازن بیشتره.
نسبت آموزش به شکار واقعی رو کمکم تغییر بدید
پیشنهاد من اینه که نسبت زمان آموزش به شکار واقعی رو به مرور زمان کاهش بدید.
خود من هم دارم همین کار رو انجام میدم، دقیقا همون چیزی که مربیم بارها به من توصیه کرده بود.
اگه تازه شروع کردید، 70 درصد زمانتون رو برای یادگیری و 30 درصد رو برای کار روی اهداف واقعی بذارید.
هر دو یا سه ماه، 10 درصد از زمان یادگیری کم کنید و به شکار واقعی اضافه کنید.
وقتی به 30 درصد زمان برای یادگیری رسیدید، میتونید خودتون تصمیم بگیرید چطور ادامه بدید. اگه دلتون خواست زمان بیشتری هم به یادگیری اختصاص بدید اشکالی نداره، مهم اینه که همچنان درگیر شکار واقعی باشید.
کتاب رو بذارید زمین و برید سراغ شکار واقعی
فرقی نمیکنه چقدر تازه کار هستید، بالاخره باید از یادگیری صرف فاصله بگیرید و وارد عمل بشید.
من هنوز هم به یادگیری مستمر اعتقاد دارم چون این حوزه همیشه در حال تغییره.
اما حقیقت ساده است:
اگه هیچوقت روی اهداف واقعی وقت نذارید، هیچ باگی هم پیدا نخواهید کرد.
هدف درست رو انتخاب کنید
یه برنامه وب که بیشتر از محتوای ثابت ساخته شده، بهترین گزینه برای تست نیست. شما باید دنبال یه هدف داینامیک باشید که کلی قابلیت و عملکرد ارائه بده. هر چقدر سرور بیشتر مجبور باشه دادههایی که براش ارسال میکنید رو پردازش کنه، شانس بیشتری برای خطا کردن وجود داره. این دقیقا همون چیزیه که شما باید ازش استفاده کنید.
البته ممکنه دایرکتوریها و فایلهایی هم وجود داشته باشن که فراموش شدن و سطح دسترسی مناسبی ندارن، اما بهترین شانس شما برای پیدا کردن آسیبپذیری، پیچیدگی در پردازش دادههایی هست که کاربر ارسال میکنه.
توسعهدهندهها و تیمهای امنیتی باید از بینهایت ترکیب دادهای که ممکنه براشون ارسال بشه محافظت کنن. این یه چالش همیشگیه و همین موضوع باعث میشه که همیشه در موقعیت ضعف قرار بگیرن.
روی یک هدف تمرکز کنید
صبر کلید موفقیته.
تا الان به عنوان یه مبتدی، وقتی با برنامههای وب کار کردید، به عنوان یه کاربر عادی رفتار کردید. اما شکار باگ همه چیز درباره رفتار غیرمنتظره کاربر هست.
شاید در شبکههای اجتماعی مدام ببینید که هکرها دارن موفقیتهاشون رو جشن میگیرن. الگوریتمها هم دقیقا همون چیزی رو بهتون نشون میدن که دلتون میخواد ببینید. ولی اگه دقت کنید، میبینید اونایی که بیشتر از همه موفقیت دارن، معمولا روی یک یا دو هدف خاص تمرکز کردن.
برای پیدا کردن باگهای جدی، باید درک عمیقی از هدف داشته باشید. وقتی بیشتر از بعضی از توسعهدهندهها با یه اپلیکیشن آشنا بشید، توی موقعیتی عالی برای پیدا کردن باگهای بیشتر قرار میگیرید.
- مثلا ممکنه یه feature flag با یه مقدار بولین پیدا کنید که اگه روی true تنظیم بشه، یه قابلیت آزمایشی رو فعال کنه. فقط هر از چندگاهی بررسی کنید ببینید اگه فعال شد، جزو اولین کسایی باشید که اون رو برای آسیبپذیریها تست میکنید.
- یا مثلا یه changelog جدید منتشر بشه؟ به سرعت اون رو بررسی کنید، چون شما قبلا تمام مستندات دیگه رو خوندید.
- یه نقش دسترسی جدید اضافه کردن؟ خب، اگه نقش قبلی مشکلاتی از نوع privilege escalation داشت، وقتشه دوباره همون روشها رو امتحان کنید.
هر هدف جدیدی در ابتدا میتونه ترسناک به نظر برسه، فرقی هم نداره چقدر تجربه دارید. ولی عوض کردن هدف فقط به خاطر اینکه توی سه روز اول چیزی پیدا نکردید، یکی از دلایلیه که ممکنه هیچی پیدا نکنید.
تا زمانی که 100 درصد مطمئن نشدید همه چیز رو بررسی کردید، هدف رو رها نکنید. هر چی بیشتر روی یه هدف زمان بذارید و بفهمید زیرساختهای اون چطور کار میکنه، احتمال پیدا کردن یه چیز با ارزش بیشتر میشه.
همونطور که پدربزرگ این مقاله همیشه میگفت:
“روی یک اپلیکیشن وب تمرکز کن، پشتکار داشته باش، تمام مستندات رو بخون، همه چیز رو امتحان کن و سه هفته بهش فرصت بده. بعد ببین وقتشه که هدف رو عوض کنی یا نه.”
اتوماسیون یه بازی کاملا متفاوته
ابزارهای اسکن خودکار آسیبپذیریها، عملیات شناسایی بیش از حد تهاجمی و زیرساختهایی که برای رقابت با بهترینها نیاز دارید، اگه تازهکار هستید، به دردتون نمیخورن.
مگر اینکه سابقهای در برنامهنویسی یا مهندسی داشته باشید، در غیر این صورت اتوماسیون برای چیزی که نمیدونید دنبالش چی هستید، فقط هدر دادن وقته.
بجای اینکه امیدتون رو به یه اسکن تصادفی از یه سرور ببندید، بهتره شرایط مناسب برای استفاده از ابزار درست رو پیدا کنید.
با جامعه در ارتباط باشید
شما توی این مسیر تنها نیستید. کلی آدم دیگه هم هستن که هنوز اولین باگ خودشون رو پیدا نکردن (و باور کنید، بالاخره پیدا میکنن).
هرچقدر شکار باگ به تنهایی میتونه بهتون استقلال بده، ولی ارتباط با جامعه امنیت سایبری یه ابزار خیلی مهم برای پیشرفت شماست.
شاید برای اطرافیان خارج از این حوزه، این کار مثل یه زبان بیگانه به نظر بیاد. اما وقتی با آدمهایی ارتباط بگیرید که در همین فضا هستن، نه تنها جواب سوالاتتون رو پیدا میکنید، بلکه میتونید جواب سوالهای بقیه رو هم بدید و حتی از حمایت و مشاورههای مفیدشون استفاده کنید.
شرکت در رویدادها، چت سرورها و کنفرانسها میتونه بهتون تاکتیکها و تکنیکهای ارزشمندی بده که ممکنه خودتون هیچوقت بهشون نرسید.
پس، اون چنل رو جوین بدید. برید به اون کنفرانس. ارزشش رو داره.
جوایز واقعی، لحظات خوبیه که توی مسیر دارید
هر چقدر هم که مسخره به نظر برسه، اگه فقط دنبال پول هستید، احتمالا جای درستی نیومدید.
اگه فکر میکنید توی هفته اول یه باگ 50,000 دلاری پیدا میکنید (که خب احتمال صفر نیست ولی خیلی کمه)، احتمالا ناامید خواهید شد.
خیلی از پولهای بزرگ توسط کسایی به دست میاد که در رویدادهای لایو هکینگ شرکت میکنن یا به برنامههای خصوصی دعوت میشن.
ابزارهایی که واقعا نیاز دارید:
وب پر از مقالههاییه که درباره آخرین ابزارهای «حتما باید استفاده کنید» صحبت میکنن.
اما واقعیت اینه که مهمترین ابزارهای شما اینا هستن:
- پشتکار
- صبر
- توجه به جزئیات
اگه بلد هستید چطور درخواستها و پاسخها رو با یه پراکسی HTTP رهگیری کنید و میتونید از یه کیبورد استفاده کنید، دیگه آمادهاید که برید سراغ اهداف واقعی.
در انتها اگر این مطلب براتون مفید بود، سوالات و نظراتتون رو با ما در میان بگذارین.