CAREER

نقشه راه یادگیری تست نفوذ وب: مسیر واقعی از صفر

مهدی مرادلو
مهدی مرادلو
مدیر تیم · سرپرست فنیبازبینی: ۲۵ مرداد ۱۴۰۵
۳۱ فروردین ۱۴۰۵ ۲۱ دقیقه مطالعه

اگر برای شروع یادگیری تست نفوذ جست‌وجو کرده باشید، ده‌ها نتیجه دیده‌اید که وعده‌ی «هکر شدن در یک ماه» می‌دهند. مشکل این محتوا فقط اغراق نیست؛ ترتیب اشتباه است. تست نفوذ وب مهارتی است که روی چند لایه‌ی پیش‌نیاز بنا می‌شود و اگر لایه‌ی پایینی را جا بیندازید، در سطح «اجرای ابزار» متوقف می‌مانید. این نقشه راه یادگیری تست نفوذ وب همان ترتیبی است که در عمل کار می‌کند: از HTTP و شبکه و لینوکس تا مدل امنیتی مرورگر، دسته‌های آسیب‌پذیری به ترتیب وابستگی، تسلط بر Burp، تمرین روی اهداف قانونی، و در پایان گزارش‌نویسی و اولین موقعیت شغلی.

در یک نگاه

  • ترتیب یادگیری مهم‌تر از فهرست منابع است: شبکه و HTTP ← لینوکس ← یک زبان برنامه‌نویسی ← مدل امنیتی مرورگر ← دسته‌های آسیب‌پذیری ← ابزار.
  • یک زبان برنامه‌نویسی کافی است، نه پنج زبان. پایتون برای خودکارسازی و جاوااسکریپت برای خواندن سمت کلاینت، انتخاب‌های عملی‌اند.
  • Burp Suite Community هیچ اسکنری ندارد — و همین محدودیت در دوره‌ی یادگیری یک مزیت است، چون شما را وادار می‌کند مهارت دستی بسازید.
  • تمرین فقط روی اهداف قانونی: Web Security Academy، OWASP Juice Shop، DVWA یا نمونه‌ی خودمیزبان. آزمودن بدون مجوز کتبی، دسترسی غیرمجاز است.
  • برنامه‌ی واقع‌بینانه چند فاز چندماهه است. هیچ‌کس نمی‌تواند نتیجه را تضمین کند، اما می‌توان مسیر را طوری چید که هر ماه یک مهارت قابل اثبات اضافه شود.

این مسیر چیست، و چه چیزی نیست

تست نفوذ وب در ماهیت مهارت «فهمیدن» است، نه مهارت «اجرا کردن». کسی که می‌داند یک درخواست HTTP در سمت سرور از چه لایه‌هایی می‌گذرد، بدون هیچ ابزار خودکاری می‌تواند حدس بزند بررسی مجوز کجا احتمالاً فراموش شده است. کسی که فقط دکمه‌ی Scan را می‌شناسد، هرجا اسکنر ساکت باشد ساکت می‌ماند — و بدترین خبر این است که اسکنرها دقیقاً در پرارزش‌ترین دسته‌ها (کنترل دسترسی و منطق کسب‌وکار) ساکت‌اند.

به همین دلیل این نقشه راه بر پایه‌ی ترتیب وابستگی مفاهیم چیده شده، نه بر پایه‌ی فهرست منابع. هر مرحله پیش‌نیاز مرحله‌ی بعد است و پریدن از رویشان صرفه‌جویی در زمان نیست؛ بدهی فنی است که چند ماه بعد به شکل «نمی‌فهمم چرا این پیلود کار نکرد» برمی‌گردد. اگر می‌خواهید ببینید خروجی این مسیر در عمل چه شکلی است، راهنمای تست نفوذ وب کل فرایند یک پروژه‌ی واقعی را از اسکوپ‌بندی تا گزارش شرح می‌دهد.

باور غلط رایج

«در ۳۰ روز هکر شوید.» این پرتکرارترین وعده‌ی این کلیدواژه است و در هیچ نسخه‌ای درست نیست. در ۳۰ روز می‌توانید Burp را نصب کنید، چند آزمایشگاه XSS را حل کنید و یک اسکنر را اجرا کنید. آنچه در ۳۰ روز به‌دست نمی‌آید همان چیزی است که کارفرما بابتش پول می‌دهد: توان پوشش سیستماتیک یک برنامه، تشخیص یافته‌ی واقعی از مثبت کاذب، و نوشتن گزارشی که تیم توسعه بر اساسش کد را عوض کند.

مرز قانونی — پیش از هر تمرینی این را بخوانید

شما فقط مجاز به آزمودن چیزی هستید که مالک آن هستید یا مجوز کتبی صریح برای آزمودنش دارید. «مجوز» یعنی قرارداد، توافق‌نامه‌ی اسکوپ، یا سیاست منتشرشده‌ی یک برنامه‌ی باگ‌بانتی — نه حدس، نه فرم تماس، و نه این استدلال که «سایت آسیب‌پذیر بود». اسکن یک سامانه‌ی متعلق به دیگری بدون مجوز، حتی با نیت خوب، مصداق دسترسی غیرمجاز است و مسیر شغلی شما را پیش از آغاز می‌بندد. تمام تمرین‌های این نقشه راه روی محیط‌های آزمایشگاهی قانونی انجام می‌شود.

پیش‌نیاز اول: شبکه و HTTP

این تنها بخشی از مسیر است که هیچ راه دور زدنی ندارد. آسیب‌پذیری وب در نهایت یک درخواست و پاسخ است؛ اگر نتوانید یک درخواست خام را خط‌به‌خط بخوانید و بگویید هر خط چه کاری می‌کند، هر یافته‌ای برایتان تصادفی خواهد بود.

از شبکه به عمق یک دوره‌ی CCNA نیاز ندارید. به این‌ها نیاز دارید: مدل لایه‌ای و اینکه TCP در برابر UDP چه تفاوتی دارد، DNS و انواع رکورد (و اینکه یک زیردامنه‌ی رهاشده چطور به تسخیر زیردامنه می‌رسد)، NAT و پروکسی و اینکه ترافیک شما دقیقاً از کجا رد می‌شود، و مبانی TLS در سطح «هنگام دست‌دادن چه اتفاقی می‌افتد و گواهی چه چیزی را اثبات می‌کند».

HTTP را در سطح پروتکل بشناسید

  • متدها و اینکه چرا یک عملیات تغییردهنده‌ی وضعیت هرگز نباید با GET قابل انجام باشد.
  • کدهای وضعیت و معنای دقیق ۴۰۱ در برابر ۴۰۳ — این تفاوت در تست کنترل دسترسی مستقیماً به کار می‌آید.
  • هدرها: Host، Referer، Origin، Content-Type، Authorization، خانواده‌ی Sec-Fetch-*.
  • کوکی و نشست: چطور وضعیت در پروتکلی بی‌حالت نگه داشته می‌شود، و چه صفاتی روی کوکی قابل تنظیم است.
  • تغییر مسیر، کش و مذاکره‌ی محتوا — سه جایی که رفتار غیرمنتظره زیاد پیدا می‌شود.
  • HTTP/2 در برابر HTTP/1.1: چندگانه‌سازی روی یک اتصال. این جزئیات ظاهراً خشک، پایه‌ی حمله‌ی تک‌بسته‌ای در شرایط رقابتی است.

معیار عبور از این مرحله ساده است: این درخواست را ببینید و بتوانید سه فرضیه‌ی آزمون‌پذیر از آن بیرون بکشید.

GET /api/invoice?id=1034 HTTP/1.1
Host: app.example.com
Cookie: session=eyJ1aWQiOjEwMzR9
Origin: https://app.example.com
Sec-Fetch-Site: same-origin

سه فرضیه‌ی خوب: آیا id در سمت سرور با مالک نشست تطبیق داده می‌شود؟ آیا محتوای کوکی نشست قابل رمزگشایی و دستکاری است؟ آیا اگر هدر Origin را عوض کنم پاسخ همراه با Access-Control-Allow-Credentials برمی‌گردد؟

پیش‌نیاز دوم: تسلط بر لینوکس

بخش عمده‌ی چیزی که آزمون می‌کنید روی لینوکس اجرا می‌شود، و تقریباً همه‌ی ابزارهای این حوزه لینوکس‌بومی‌اند. اما دلیل مهم‌تر این است که بدون درک سیستم‌عامل، بخشی از یافته‌ها را نمی‌فهمید: چرا خواندن /proc/self/environ در پیمایش مسیر ارزشمند است، چرا مجوزهای فایل روی دایرکتوری آپلود سرنوشت یک شل وب را تعیین می‌کند، و چرا یک سرویس systemd که با کاربر root اجرا می‌شود یافته‌ی مستقلی است.

مهارت لینوکسچرا در تست نفوذ وب لازم است
شل، لوله و تغییر مسیر ورودی/خروجیساخت خط لوله‌ی شناسایی؛ خروجی یک ابزار ورودی ابزار بعدی می‌شود
سلسله‌مراتب فایل‌سیستم و مجوزهافهم اینکه با LFI چه فایل‌هایی ارزش خواندن دارند و چرا آپلود در مسیر قابل اجرا فاجعه است
پردازش‌ها، سرویس‌ها و systemdتشخیص سرویس‌های اضافی و کاربرِ اجرای برنامه — مصداق مستقیم پیکربندی نادرست
پردازش متن: grep، sed، awk، jq، sort -uکار با خروجی چندهزارخطی ابزارهای شناسایی و پاسخ‌های JSON
SSH و مدیریت کلیدکار با ماشین آزمایشگاهی و سرور ابری خودتان
مدیریت بسته و کامپایل از سورسنصب ابزارهایی که در مخزن توزیع شما نیستند
لاگ‌ها: journalctl و لاگ وب‌سرورفهم اینکه فعالیت شما چه ردی می‌گذارد — لازمه‌ی گزارش و لازمه‌ی حرفه‌ای‌بودن
کانتینر و Dockerراه‌اندازی محیط آسیب‌پذیر آزمایشگاهی در چند دقیقه، بدون آلوده‌کردن سیستم اصلی
باور غلط رایج

«اول باید کالی لینوکس را به‌عنوان سیستم‌عامل اصلی نصب کنم.» کالی یک توزیع ابزارمحور برای اجرای پروژه است، نه ابزار آموزش لینوکس. نصب کالی به شما لینوکس یاد نمی‌دهد؛ فقط چند صد ابزار می‌دهد که نمی‌دانید کدامشان به چه کاری می‌آید. مسیر بهتر: لینوکس را روی هر توزیع رایج (یا WSL2) یاد بگیرید و کالی را در یک ماشین مجازی برای زمان اجرای پروژه نگه دارید.

یک زبان برنامه‌نویسی — و چرا پایتون و جاوااسکریپت

پرسش «برای تست نفوذ باید برنامه‌نویسی بلد باشم؟» پاسخ کوتاهی دارد: برای شروع نه، برای عبور از سطح متوسط بله. تفاوت بین کسی که در سطح آزمایشگاه متوقف می‌شود و کسی که روی یک برنامه‌ی واقعی مؤثر است، تقریباً همیشه توان اسکریپت‌نویسی است.

پایتون: برای خودکارسازی

در عمل شما مدام به چیزهایی نیاز دارید که ابزار آماده ندارند: بازتولید یک جریان چندمرحله‌ای احراز هویت، تولید هزار شناسه با یک الگوی خاص، مقایسه‌ی هزار پاسخ برای پیدا کردن تفاوت معنادار، یا استخراج اندپوینت از یک فایل JavaScript باندل‌شده. همه‌ی این‌ها یک اسکریپت صدخطی است. سطح لازم: کار روان با کتابخانه‌ی درخواست HTTP، JSON، عبارت باقاعده و حلقه. به‌علاوه Turbo Intruder — ابزار استاندارد آزمون شرایط رقابتی — با پایتون اسکریپت می‌گیرد.

جاوااسکریپت: چون چیزی را که نمی‌خوانید نمی‌توانید تست کنید

در برنامه‌های امروزی بخش بزرگی از منطق در مرورگر اجرا می‌شود. برای پیدا کردن XSS از نوع DOM باید بتوانید مسیر داده را از یک منبع (مثلاً location.hash) تا یک سینک خطرناک (مثلاً innerHTML) دنبال کنید. برای آلودگی پروتوتایپ یا سوءاستفاده از postMessage باید کد را بخوانید. حتی در شناسایی، خواندن باندل و فایل sourcemap یکی از پربازده‌ترین کارهاست، چون اندپوینت‌هایی را لو می‌دهد که در رابط کاربری هیچ لینکی به آن‌ها نیست.

و به‌اندازه‌ی کافی SQL و Bash

بدون فهم SQL، ابزار تزریق برای شما جادو است و نمی‌توانید یافته را از مثبت کاذب تشخیص دهید؛ سطح لازم JOIN، UNION، زیرکوئری و توابع رشته‌ای است. Bash هم چسب خط لوله‌ی شناسایی است. اگر بعدها به افزونه‌نویسی برای Burp رسیدید، آن‌جا زبان جاواست. فهرست کامل و اینکه هر زبان دقیقاً برای چه کاری است، در منابع یادگیری امنیت وب با جزئیات بیشتری آمده.

مدل امنیتی مرورگر: لایه‌ای که همه جا می‌شکند

این مرحله بیشترین بازده را به ازای زمان صرف‌شده دارد و در بیشتر آموزش‌های فارسی کاملاً غایب است. اگر مدل امنیتی مرورگر را بدانید، چهار دسته‌ی آسیب‌پذیری (XSS، CSRF، پیکربندی نادرست CORS و مشکلات کوکی و نشست) به‌جای چهار فهرست پیلود، به یک مدل ذهنی منسجم تبدیل می‌شوند.

  • سیاست هم‌مبدأ (Same-Origin Policy): مبدأ از سه‌گانه‌ی طرح‌واره، دامنه و پورت ساخته می‌شود. این پیش‌فرضِ محدودکننده است و همه‌ی مکانیزم‌های دیگر یا آن را شل می‌کنند یا سخت‌تر.
  • تفاوت «مبدأ» و «سایت»: این ظریف‌ترین و پرکاربردترین نکته است. SameSite روی دامنه‌ی قابل ثبت عمل می‌کند نه روی مبدأ؛ پس a.example.com و b.example.com از نظر آن هم‌سایت‌اند. نتیجه‌ی مستقیم: یک XSS روی هر زیردامنه، حفاظت SameSite را کامل خنثی می‌کند.
  • صفات کوکی: HttpOnly، Secure، SameSite و پیشوندهای __Host- و __Secure-.
  • CORS سیاست هم‌مبدأ را شل می‌کند؛ خودش کنترل امنیتی نیست. پیکربندی سخاوتمندانه‌ی آن حفاظت را برمی‌دارد، اضافه نمی‌کند.
  • CSP یک اقدام کاهنده است، نه رفع آسیب‌پذیری. سیاست مبتنی بر فهرست میزبان‌های مجاز در عمل شکسته است؛ رویکرد درست nonce به‌همراه strict-dynamic است.
  • ذخیره‌سازی سمت کلاینت: هر چیزی که در localStorage باشد با یک XSS خوانده می‌شود — و توکن‌های JWT اغلب همان‌جا پیدا می‌شوند.
باور غلط رایج

«همه‌ی مرورگرهای مدرن پیش‌فرض SameSite=Lax دارند، پس CSRF حل شده است.» کروم این پیش‌فرض را اعمال می‌کند، اما فایرفاکس نه — تلاش موزیلا برای فعال‌سازی پیش‌فرض Lax به‌دلیل شکستن گسترده‌ی وب کنار گذاشته شد و باگ مربوطه با وضعیت WONTFIX بسته شده. یعنی برنامه‌ای که توکن CSRF ندارد و SameSite را صریحاً تنظیم نکرده، امروز در فایرفاکس آسیب‌پذیر است. توکن سمت سرور همچنان الزامی است.

ابزار این مرحله هم رایگان است: DevTools مرورگر یک سطح آزمون درجه‌یک است، نه ابزار کمکی. نقطه‌ی توقف روی تغییر DOM، پنل Storage برای بررسی صفات کوکی، و جست‌وجو در Sources برای یافتن اندپوینت و کلید در باندل — این‌ها مهارت‌های پایه‌اند.

دسته‌های آسیب‌پذیری، به ترتیب وابستگی

اشتباه رایج، یادگیری الفبایی یا تصادفی آسیب‌پذیری‌هاست. ترتیب زیر بر دو معیار بسته شده: پیش‌نیاز مفهومی هر دسته، و نسبت «تأثیر به هزینه‌ی یادگیری». چارچوب رده‌بندی هم OWASP Top 10:2025 است که نسخه‌ی جاری این فهرست محسوب می‌شود.

#دستهپیش‌نیازچرا این جایگاه
۱کنترل دسترسی شکسته و IDORHTTP و نشسترتبه‌ی یک OWASP (A01:2025)؛ کم‌ترین پیش‌نیاز فنی، بیشترین تأثیر، و هیچ اسکنری قابل اعتماد پیدایش نمی‌کند
۲تزریق SQLSQLمکانیزم شفاف و آموزنده؛ پایه‌ی فهم همه‌ی انواع تزریق
۳XSS (بازتابی، ذخیره‌شده، DOM)جاوااسکریپت و مدل مرورگرپرحجم‌ترین CWE در داده‌ی جهانی؛ نوع DOM بهترین تمرین ردیابی منبع تا سینک
۴CSRF و مسائل کوکیمدل مرورگرمستقیماً روی دانش مرحله‌ی قبل سوار می‌شود
۵خطاهای احراز هویت و نشستHTTP و رمزنگاری پایهA07:2025؛ نیازمند تفکر فرایندی، نه پیلود
۶SSRFشبکه و DNSدر ۲۰۲۵ زیر A01 ادغام شده؛ فهمش بدون دانش شبکه ممکن نیست
۷آپلود فایل، پیمایش مسیر و LFIلینوکس و فایل‌سیستممسیر متداول رسیدن به اجرای کد
۸SSTI، تزریق دستور، Deserializationیک زبان سمت سرورتأثیر بالا اما نیازمند درک زبان و کتابخانه‌ها
۹JWT، OAuth و OIDCرمزنگاری پایه و تفکر جریانیپرخطاترین ناحیه‌ی برنامه‌های امروزی؛ باگ‌ها منطقی‌اند نه نحوی
۱۰شرایط رقابتیHTTP/2 و هم‌روندیتکنیک تک‌بسته‌ای عملاً پراش شبکه را حذف کرده و این دسته را دوباره زنده کرده
۱۱منطق کسب‌وکارهمه‌ی موارد بالاپرارزش‌ترین یافته‌ها؛ کاملاً دستی و وابسته به درک فرایند

و چیزهایی که وقت‌تان را نگیرند

دو موضوع در آموزش‌های قدیمی جای زیادی می‌گیرند و در عمل تقریباً مرده‌اند: RFI (چون allow_url_include در پیکربندی پیش‌فرض PHP خاموش است و از نسخه‌ی ۷٫۴ منسوخ شده) و ترفند بایت تهی برای دور زدن بررسی پسوند (که در PHP 5.3.4 رفع شد). XXE هم دیگر مسئله‌ی همه‌جایی نیست؛ کتابخانه‌های اصلی PHP و پایتون به‌صورت پیش‌فرض ایمن‌اند و شکارگاه واقعی‌اش پشته‌های جاوا و آپلود فایل‌های SVG و OOXML است.

باور غلط رایج

«با React یا Vue می‌نویسیم، پس XSS نداریم.» فریم‌ورک‌های مدرن فقط درج متن را به‌صورت پیش‌فرض کدگذاری می‌کنند. دریچه‌های فرار (dangerouslySetInnerHTML، v-html)، مقادیر URL در صفاتی مثل href که در برابر طرح‌واره‌ی javascript: محافظت نمی‌شوند، تزریق قالب سمت کلاینت، و زنجیره‌های آلودگی پروتوتایپ همه باقی مانده‌اند. مستندات خود React درباره‌ی آن دریچه می‌گوید ایجاد یک آسیب‌پذیری XSS از این راه «بسیار ساده» است.

تسلط بر Burp Suite — و چرا نسخه‌ی رایگان برای یادگیری بس است

پروکسی رهگیر، ستون فقرات آزمون دستی وب است. ترتیب یادگیری داخل خود ابزار هم اهمیت دارد: Proxy و تاریخچه ← Repeater ← Intruder ← (در نسخه‌ی حرفه‌ای) Scanner و Collaborator. کسی که Repeater را عمیق بلد است از کسی که فقط Scanner را می‌شناسد بسیار مؤثرتر است، چون بیشتر یافته‌های واقعی از تکرار دستی یک درخواست با تغییرات کوچک بیرون می‌آیند.

جدول زیر مرز دقیق نسخه‌ی رایگان و حرفه‌ای است. این مرز را بدانید تا وقت‌تان را برای پیدا کردن قابلیتی که وجود ندارد تلف نکنید.

قابلیتCommunityیادداشت عملی
پروکسی HTTP(S) و WebSocket، تاریخچهدارد۹۰٪ کار یادگیری همین‌جا انجام می‌شود
Repeater، Decoder، Comparer، SequencerداردRepeater را به سطح رفلکس برسانید
DOM Invaderدارددر Community هم موجود است؛ بهترین ابزار رایگان شکار XSS از نوع DOM
Intruder کاملنداردنسخه‌ی نمایشی به‌شدت کندشده است؛ برای فازینگ واقعی از ffuf استفاده کنید
Burp Scannerنداردهیچ اسکنر خودکاری در Community نیست
Burp Collaboratorنداردیعنی تشخیص آسیب‌پذیری‌های کور خارج از باند ممکن نیست
ذخیره‌ی پروژه، جست‌وجو در پروژه، گزارش خودکارنداردمحدودیت جدی در پروژه‌ی واقعی، نه در یادگیری
باور غلط رایج

«Burp Community یک اسکنر محدود دارد.» ندارد. اسکنر Burp به‌طور کامل قابلیت نسخه‌ی حرفه‌ای است و Collaborator هم همین‌طور. در مقابل، ادعای دیگری که زیاد تکرار می‌شود هم غلط است: DOM Invader قابلیت انحصاری نسخه‌ی حرفه‌ای نیست و در Community در دسترس است.

مسیر پیشنهادی: چند ماه اول را کامل با Community کار کنید. نبود اسکنر شما را مجبور می‌کند خودتان درخواست‌ها را مرور کنید و همین چیزی است که مهارت می‌سازد. توضیح گام‌به‌گام هر بخش ابزار در مدخل Burp Suite دانشنامه آمده است. اگر بعدها به‌عنوان جایگزین سبک‌تر برای کار دستی سراغ گزینه‌های دیگر رفتید، فقط این را بدانید که هیچ‌کدام معادل اسکنر و سرویس خارج از باند Burp را ندارند.

آزمایشگاه: تمرین روی اهداف قانونی

مهارت از تمرین می‌آید، اما تمرین باید جایی انجام شود که قانونی و آموزنده باشد. چهار گزینه‌ی معتبر:

  • PortSwigger Web Security Academy — رایگان، با آزمایشگاه‌های تعاملی و درجه‌بندی از مقدماتی تا پیشرفته. از نظر کیفیت و به‌روزبودن، از بیشتر دوره‌های پول‌دار جلوتر است و مرجع عملی همین حوزه محسوب می‌شود.
  • OWASP Juice Shop — برنامه‌ای آسیب‌پذیر با پشته‌ی مدرن جاوااسکریپت. به برنامه‌های واقعی امروزی نزدیک‌تر است و برای تمرین API و منطق کسب‌وکار خوب است.
  • DVWA — کلاسیک و ساده، مناسب فهم مکانیزم خام تزریق SQL و LFI. بدانید که پشته‌اش قدیمی است و نباید تصویر شما از وب امروز را شکل بدهد.
  • محیط خودمیزبان — نسخه‌ای از برنامه‌ی خودتان یا یک پروژه‌ی متن‌باز که در Docker بالا می‌آورید. این بهترین تمرین است، چون هم کد را دارید و هم مجوز کامل.

چطور تمرین کنیم که یاد بگیریم

هر آزمایشگاه را سه‌مرحله‌ای تمام کنید: اول حلش کنید، بعد بدون نگاه‌کردن به راهنما مکانیزم را برای خودتان توضیح دهید، و در آخر در سه پاراگراف بنویسید که نقص کجای کد بود و رفع درستش چیست. مرحله‌ی سوم است که تمرین را به مهارت تبدیل می‌کند — و تصادفی نیست که همان مهارت گزارش‌نویسی است.

اهدافی که «برای تمرین» معرفی می‌شوند اما نیستند

هیچ سایت واقعیِ متعلق به دیگری، هدف تمرین نیست — حتی اگر جایی به‌عنوان «سایت آسیب‌پذیر برای تمرین» معرفی شده باشد. تنها استثنا برنامه‌های باگ‌بانتی است، و آن هم فقط در چارچوب دقیق اسکوپ و سیاست منتشرشده‌ی همان برنامه. نحوه‌ی ورود درست به این فضا در راهنمای یادگیری باگ‌بانتی توضیح داده شده است.

پوشش سیستماتیک هم اهمیت دارد: بعد از حل چند ده آزمایشگاه، فهرست آزمون‌های راهنمای WSTG را به‌عنوان چک‌لیست بردارید و ببینید کدام دسته‌ها را هرگز تمرین نکرده‌اید. تفاوت آماتور و حرفه‌ای اغلب در همان دسته‌های فراموش‌شده است.

خواندن گزارش‌های افشاشده و نوشتن گزارش

دو مهارت که در هیچ دوره‌ای جدی گرفته نمی‌شوند و بیشترین اثر را روی حرفه‌ای‌شدن دارند.

خواندن گزارش‌های افشاشده

گزارش‌های عمومی برنامه‌های باگ‌بانتی و رایت‌آپ‌های محققان، تنها جایی است که مسیر فکری یک تست را می‌بینید: چه چیزی توجه محقق را جلب کرد، چه فرضیه‌هایی را رد کرد، و چطور یک باگ کم‌شدت را به یک زنجیره‌ی پرتأثیر تبدیل کرد. هفته‌ای دو گزارش بخوانید و برای هرکدام یک جمله بنویسید: «الگوی قابل تعمیم این گزارش چه بود؟» بعد از پنجاه گزارش، شما یک کتابخانه‌ی ذهنی از الگوها دارید که هیچ فهرست پیلودی نمی‌دهد. فهرست منابع معتبر این دسته در منابع یادگیری امنیت وب آمده است.

نوشتن گزارش

یک یافته‌ی بدون گزارش خوب، عملاً وجود ندارد. ساختار حرفه‌ای:

  1. عنوان که خودِ مشکل و مکانش را بگوید، نه نام دسته را.
  2. شدت با امتیاز CVSS و ذکر صریح اینکه از چه نسخه‌ای استفاده کرده‌اید — نسخه‌ی جاری v4.0 است اما v3.1 هنوز در داده‌ی واقعی غالب است و هر دو قابل‌دفاع‌اند، به شرط شفافیت.
  3. مراحل بازتولید به‌قدری دقیق که یک توسعه‌دهنده بدون تماس با شما بتواند تکرار کند.
  4. شاهد: درخواست و پاسخ خام، و اثبات مفهوم غیرتسلیحاتی — کوچک‌ترین چیزی که وجود مشکل را اثبات کند، نه بیشتر.
  5. تأثیر به زبان کسب‌وکار: «مهاجم می‌تواند فاکتور همه‌ی کاربران را بخواند»، نه «پارامتر اعتبارسنجی نشده است».
  6. راهکار رفع، مرتب‌شده بر اساس اثربخشی.
باور غلط رایج

«راهکار رفع: قرار دادن WAF.» این جمله در یک گزارش حرفه‌ای جایی ندارد. WAF یک کنترل جبرانی و خریدار زمان است؛ نسبت به کنترل دسترسی شکسته ساختاراً کور است، منطق کسب‌وکار را نمی‌فهمد، و قابل دور زدن است. راهکار رفع، تغییر کد است؛ قاعده‌ی WAF حداکثر یک اقدام موقت.

فازهای مسیر و زمان‌بندی واقع‌بینانه

بازه‌های زیر بر فرض تمرین منظم روزانه (حدود دو ساعت) نوشته شده‌اند. با زمان کمتر، بازه‌ها به‌همان نسبت طولانی‌تر می‌شوند. این‌ها تخمین است، نه تعهد — سرعت یادگیری افراد به پیش‌زمینه‌ی فنی‌شان بستگی دارد و هیچ برنامه‌ای نمی‌تواند نتیجه را تضمین کند.

فازتمرکزمعیار عبوربازه‌ی تقریبی
صفر — پایهشبکه، HTTP، لینوکس، مبانی یک زبانیک درخواست خام را خط‌به‌خط توضیح می‌دهید و یک اسکریپت صدخطی می‌نویسید۲ تا ۴ ماه
یک — مدل مرورگر و سه دسته‌ی اولSOP، کوکی، CORS، CSP + کنترل دسترسی، تزریق SQL، XSSهر سه دسته را در آزمایشگاه بازتولید و مکانیزمشان را تشریح می‌کنید۲ تا ۳ ماه
دو — ابزار و تمرین سیستماتیکBurp، ffuf، شناسایی + حل حجمی آزمایشگاهیک برنامه‌ی آزمایشگاهی را بدون راهنما به‌صورت کامل پوشش می‌دهید۳ تا ۴ ماه (همپوشان با فاز یک)
سه — پوشش کامل و گزارشباقی دسته‌ها، چک‌لیست WSTG، CVSS، گزارش‌نویسییک گزارش کامل چندیافته‌ای می‌نویسید که خواندنی و قابل اقدام است۲ تا ۳ ماه
چهار — تخصص و خروجی عمومییک شاخه‌ی عمیق (API، منطق کسب‌وکار، احراز هویت) + رایت‌آپ و ابزارخروجی قابل بررسی عمومی داریدپیوسته

سه نکته‌ی صادقانه درباره‌ی این جدول: اول، فازها همپوشانی دارند و خطی نیستند. دوم، «معیار عبور» مهم‌تر از «بازه» است؛ اگر معیار محقق نشده، عبور از فاز فقط خودفریبی است. سوم، اگر مسیر شما آموزش تیمی است نه فردی — یعنی می‌خواهید تیم توسعه‌ی یک شرکت را به سطح قابل قبولی برسانید — منطق زمان‌بندی کاملاً متفاوت است و در راهنمای انتخاب دوره و آموزش توسعه‌ی امن و دوره‌های سازمانی توسعه‌ی امن توضیح داده شده است.

اولین موقعیت شغلی یا اولین باگ

در پایان فاز سه، دو مسیر پیش روی شماست و هیچ‌کدام بر دیگری برتری مطلق ندارد.

مسیر استخدام

بازار به خروجی قابل بررسی نگاه می‌کند: رایت‌آپ‌های تحلیلی، یک ابزار کوچک منتشرشده، قاعده‌ی SAST یا قالب اسکن که نوشته‌اید، و نمونه‌گزارشی که روی یک محیط آزمایشگاهی نوشته‌اید و می‌توانید بدون نقض محرمانگی نشان دهید. یک مسیر کم‌گفته‌شده اما بسیار عملی هم وجود دارد: ورود از سمت توسعه. اگر توسعه‌دهنده‌اید، نقش «قهرمان امنیت» درون تیم خودتان سریع‌ترین راه رسیدن به کار امنیتی واقعی است. تصویر کامل نقش‌ها و مسیر رشد در بازار کار و مسیر شغلی امنیت سایبری آمده است.

مسیر باگ‌بانتی

باگ‌بانتی یک آزمایشگاه واقعی با مجوز است و برای ساختن رزومه بی‌نظیر است، اما درآمدش نامنظم است: تکراری‌بودن گزارش (Duplicate) بخش عادی کار است و رسیدن به اولین پاداش می‌تواند ماه‌ها طول بکشد. با دید «مکمل» به آن نگاه کنید، نه جایگزین حقوق.

قدم بعدی، بسته به جایی که ایستاده‌اید

  • هنوز پایه ندارید: از فاز صفر شروع کنید و دوره‌ها و مسیر یادگیری را برای ترتیب مطالب ببینید.
  • پایه دارید و می‌خواهید دسته‌ها را عمیق کنید: دانشنامه را دسته‌به‌دسته بخوانید و هر مدخل را همان روز در آزمایشگاه بازتولید کنید.
  • می‌خواهید بدانید کارفرما چه می‌خواهد: بازار کار امنیت سایبری و سپس رزومه‌سازی.
  • مسئول یک تیم توسعه‌اید و مسیرتان آموزش تیمی است: دوره‌ی سازمانی توسعه‌ی امن برای همین نوشته شده.

و یک یادآوری آخر، چون بیشترین آسیب را همین می‌زند: هر چیزی که یاد می‌گیرید فقط روی دارایی خودتان یا با مجوز کتبی اجرا شود. مهارت فنی بدون این انضباط، سرمایه نیست؛ ریسک است.

پرسش‌های متداول

برای یادگیری تست نفوذ وب از کجا شروع کنم؟

از HTTP و شبکه، نه از ابزار. تا وقتی نتوانید یک درخواست و پاسخ خام را خط‌به‌خط توضیح دهید، هر آموزش ابزاری سطحی می‌ماند. ترتیب پیشنهادی: شبکه و HTTP، سپس لینوکس، سپس مبانی یک زبان (پایتون یا جاوااسکریپت)، سپس مدل امنیتی مرورگر، و بعد از آن آسیب‌پذیری‌ها به ترتیب وابستگی — با شروع از کنترل دسترسی شکسته که هم کم‌ترین پیش‌نیاز را دارد و هم بیشترین تأثیر.

یادگیری تست نفوذ چقدر طول می‌کشد؟

با تمرین منظم روزانه، معمولاً چند ماه تا رسیدن به سطح آزمایشگاهی مستقل و حدود یک سال تا سطحی که بتوانید یک برنامه‌ی واقعی را به‌صورت سیستماتیک پوشش دهید و گزارش قابل اقدام بنویسید. این بازه تخمین است نه تعهد، و به پیش‌زمینه‌ی فنی شما بستگی دارد. هر محتوایی که عدد قطعی یا «هکر شدن در ۳۰ روز» وعده می‌دهد، چیزی می‌فروشد.

برای تست نفوذ باید برنامه‌نویسی بلد باشم؟

برای شروع خیر، برای عبور از سطح متوسط بله. یک زبان کافی است: پایتون برای خودکارسازی و نوشتن ابزار کوچک، و جاوااسکریپت برای خواندن کد سمت کلاینت — چون چیزی را که نمی‌توانید بخوانید نمی‌توانید تست کنید. به‌علاوه به‌اندازه‌ی کافی SQL برای فهم آسیب‌پذیری تزریق و Bash برای چسباندن خط لوله‌ی شناسایی.

آیا برای شروع باید کالی لینوکس نصب کنم؟

لازم نیست. کالی یک توزیع ابزارمحور برای زمان اجرای پروژه است، نه ابزار آموزش لینوکس. لینوکس را روی هر توزیع رایج یا WSL2 یاد بگیرید و کالی را داخل یک ماشین مجازی نگه دارید. نصب کالی به‌عنوان سیستم اصلی، مهارت اضافه نمی‌کند و فقط چند صد ابزار در اختیار شما می‌گذارد که نمی‌دانید کدامشان به چه کاری می‌آید.

نسخه‌ی رایگان Burp Suite برای یادگیری کافی است؟

بله، و برای چند ماه اول حتی بهتر است. Community پروکسی، تاریخچه، Repeater، Decoder، Comparer و DOM Invader را دارد که مجموعاً بخش عمده‌ی کار یادگیری است. آنچه ندارد: Burp Scanner (به‌طور کامل)، Collaborator، Intruder کامل و ذخیره‌ی پروژه. نبود اسکنر در دوره‌ی یادگیری یک مزیت است چون شما را وادار می‌کند خودتان درخواست‌ها را بررسی کنید؛ برای فازینگ هم ffuf جایگزین رایگان و سریع‌تری است.

تمرین تست نفوذ روی چه محیطی قانونی است؟

فقط روی چیزی که مالکش هستید یا مجوز کتبی صریح برای آزمودنش دارید. گزینه‌های قانونی و رایگان: PortSwigger Web Security Academy، OWASP Juice Shop، DVWA، و برنامه‌های آسیب‌پذیری که خودتان در Docker بالا می‌آورید. برنامه‌های باگ‌بانتی هم قانونی‌اند اما فقط در چارچوب دقیق اسکوپ و سیاست منتشرشده‌شان. آزمودن هر سامانه‌ی دیگری بدون مجوز، مصداق دسترسی غیرمجاز است.

مهدی مرادلو
WRITTEN BY

مهدی مرادلو

مدیر تیم · سرپرست فنی

محقق امنیتی با تمرکز روی منطق کسب‌وکار و زنجیره‌های حمله‌ی پیچیده. اسکوپ‌بندی پروژه‌ها و تضمین کیفیت گزارش‌ها با اوست.