PENTEST

چک لیست تست نفوذ وب: ۹۷ آزمون WSTG v4.2 در ۱۲ دسته

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

بیشتر چیزهایی که در فارسی با عنوان «چک لیست تست نفوذ» منتشر می‌شود، فهرستی از نام آسیب‌پذیری‌هاست: SQL Injection، XSS، CSRF و چند مورد دیگر. آن فهرست چک‌لیست نیست، واژه‌نامه است. چک‌لیست واقعی به شما می‌گوید چه چیزی را در کدام بخش برنامه بررسی کنید و پوشش را قابل اندازه‌گیری می‌کند. مرجع استاندارد این کار راهنمای OWASP Web Security Testing Guide v4.2 است: دوازده دسته و در نسخه‌ی پایدار حدود ۹۷ آزمون نام‌گذاری‌شده. این مقاله همان ساختار را در قالب جدول‌های قابل استفاده ارائه می‌کند، به‌علاوه‌ی چک‌لیست پیش از شروع پروژه که نبودش شایع‌ترین منبع دردسر عملیاتی و حقوقی است.

در یک نگاه

  • مرجع پوشش، WSTG v4.2 است — نسخه‌ی پایدار جاری، منتشرشده در ۳ دسامبر ۲۰۲۰. نسخه‌ی ۴٫۳ منتشر نشده و ۵٫۰ در حال توسعه است.
  • دوازده دسته با پیشوند شناسه: INFO ۱۰ آزمون، CONF ۱۱، IDNT ۵، ATHN ۱۰، ATHZ ۴، SESS ۹، INPV ۱۹، ERRH ۲، CRYP ۴، BUSL ۹، CLNT ۱۳، APIT ۱ — جمعاً حدود ۹۷ آزمون.
  • بزرگ‌ترین دسته INPV (اعتبارسنجی ورودی) با ۱۹ آزمون است؛ اما پرارزش‌ترین یافته‌ها معمولاً از ATHZ و BUSL بیرون می‌آیند که با هم فقط ۱۳ آزمون دارند.
  • دسته‌ی WSTG-APIT فقط یک آزمون دارد (GraphQL). برای API باید OWASP API Security Top 10 (۲۰۲۳) را به‌عنوان مرجع مکمل به کار برد.
  • چک‌لیست پیش از شروع — مجوز کتبی، انجماد دامنه، بازه‌ی آزمون، تماس تشدید و پشتیبان تأییدشده — به‌اندازه‌ی چک‌لیست فنی الزامی است.

چک‌لیست پیش از شروع: پنج موردی که نبودشان پروژه را خراب می‌کند

پیش از اولین درخواست HTTP، این پنج مورد باید مکتوب و امضاشده باشند. هیچ‌کدام کار فنی نیست و هر پنج مورد در همه‌ی چارچوب‌های جدی — از فازهای PTES تا مرحله‌ی «Planning» در NIST SP 800-115 — الزامی‌اند.

موردچه چیزی باید مشخص شودچرا حیاتی است
مجوز کتبی آزموننام دارایی‌ها، نام و امضای مالک سامانه، تاریخ اعتبار، ارجاع به قرارداد و NDAبدون آن، آزمون از نظر حقوقی دسترسی غیرمجاز است. این سند غیرقابل‌مذاکره است
انجماد دامنه (Scope Freeze)فهرست بسته‌ی دامنه‌ها، زیردامنه‌ها، اندپوینت‌های API، و صریحاً موارد خارج از دامنهجلوگیری از هم آزمون ناخواسته‌ی دارایی ثالث و هم از دست رفتن دارایی فراموش‌شده
بازه‌ی آزمونتاریخ و ساعت شروع و پایان، و پنجره‌های ممنوع (مثلاً روز کمپین فروش)تیم پایش باید بداند؛ و گزارش باید عکس لحظه‌ای مشخصی داشته باشد
تماس تشدید (Escalation)نام و شماره‌ی تماس فوری در دو طرف، برای ۲۴ ساعت شبانه‌روزاگر آزمون سرویس را ناپایدار کرد یا نشانه‌ی نفوذ واقعی پیدا شد، باید بلافاصله ارتباط برقرار شود
پشتیبان تأییدشدهپشتیبان تازه که بازیابی‌اش آزموده شده، نه فقط گرفته شدهپشتیبانی که بازیابی‌اش امتحان نشده، پشتیبان نیست

سه مورد تکمیلی که توصیه می‌شود: فهرست IPهای مبدأ تیم آزمون (برای فهرست سفید و برای بازبینی لاگ‌ها)، حساب کاربری برای هر نقش در برنامه، و تصمیم روشن درباره‌ی محیط — عملیاتی یا Staging. جزئیات قالب مجوز و بندهای قرارداد در قرارداد و مجوز تست نفوذ و روش تعریف دامنه در دامنه‌ی تست نفوذ آمده است.

باور غلط رایج

«چون سامانه مال خودمان است، مجوز کتبی لازم نیست.» مالکیت سازمانی جای مجوز مکتوب را نمی‌گیرد. سرور شما ممکن است روی زیرساخت ابری ثالث باشد، درگاه پرداختتان متعلق به شرکت دیگری است، و CDN شما سرویس‌دهنده‌ی مستقلی است. مجوز باید مشخص کند کدام دارایی متعلق به شماست و آزمون کدام بخش‌ها را پوشش نمی‌دهد. تیمی که بدون این سند کار را شروع می‌کند، شما را هم در معرض ریسک قرار می‌دهد.

چک لیست تست نفوذ بر پایه‌ی دوازده دسته‌ی WSTG v4.2

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

پیشوند شناسهدستهتعداد آزمونمحور
WSTG-INFOگردآوری اطلاعات۱۰نگاشت سطح حمله پیش از آزمون
WSTG-CONFپیکربندی و مدیریت استقرار۱۱پلتفرم، فایل‌های رهاشده، هدرها، ذخیره‌سازی ابری
WSTG-IDNTمدیریت هویت۵نقش‌ها، ثبت‌نام، شمارش حساب
WSTG-ATHNاحراز هویت۱۰ورود، قفل حساب، بازیابی رمز
WSTG-ATHZمجوزدهی۴ارتقای سطح دسترسی، IDOR، عبور از مسیر
WSTG-SESSمدیریت نشست۹کوکی، تثبیت نشست، CSRF، خروج
WSTG-INPVاعتبارسنجی ورودی۱۹بزرگ‌ترین دسته: انواع تزریق، SSRF، SSTI
WSTG-ERRHمدیریت خطا۲خطای نامناسب، Stack Trace
WSTG-CRYPرمزنگاری ضعیف۴TLS، Padding Oracle، انتقال ناامن
WSTG-BUSLمنطق کسب‌وکار۹دور زدن جریان، سقف‌ها، آپلود فایل
WSTG-CLNTسمت کلاینت۱۳DOM XSS، CORS، Clickjacking، WebSocket
WSTG-APITآزمون API۱فقط GraphQL

دو مشاهده‌ی مهم از همین جدول. اول: توزیع تعداد آزمون‌ها با توزیع ریسک هم‌راستا نیست. دسته‌ی INPV نوزده آزمون دارد و ATHZ فقط چهار، در حالی که کنترل دسترسی شکسته رتبه‌ی یک OWASP Top 10:2025 است و OWASP گزارش می‌کند ۱۰۰٪ برنامه‌های آزموده‌شده نوعی نقص کنترل دسترسی داشته‌اند. تعداد آزمون معیار زمان صرف‌شده نیست.

دوم: WSTG و OWASP Top 10 دو تاکسونومی متفاوت‌اند و کاملاً هم‌راستا نیستند. نمونه‌ی روشن: SSRF در WSTG زیر اعتبارسنجی ورودی است (WSTG-INPV-19) اما در Top 10:2025 داخل A01 کنترل دسترسی شکسته ادغام شده. اگر گزارشی این دو را یکسان نشان دهد، ساده‌سازی نادرستی انجام داده است. تفصیل موضوع در متدولوژی تست نفوذ.

شناسایی و پیکربندی — INFO (۱۰) و CONF (۱۱)

این بیست‌ویک آزمون پیش‌نیاز همه‌ی کار بعدی است. هر اندپوینتی که در این مرحله پیدا نشود، آزموده هم نمی‌شود.

آزمونچه چیزی را بررسی می‌کنید
نشت اطلاعات از موتور جست‌وجوصفحات ایندکس‌شده‌ای که نباید عمومی باشند؛ نسخه‌های کش‌شده
اثرانگشت وب‌سرورمحصول و نسخه از هدرها، ترتیب هدرها و رفتار خطا
بازبینی فایل‌های فرا‌دادهrobots.txt، sitemap.xml، security.txt، .well-known/
شمارش برنامه‌های میزبانچند برنامه روی یک میزبان؟ زیردامنه‌ها و پورت‌های غیرمتعارف
نشت اطلاعات در محتوای صفحهکامنت‌های HTML، فایل‌های JS باندل‌شده، Source Map رهاشده، کلید API
شناسایی نقاط ورودیهر پارامتر، هدر، کوکی و بدنه‌ای که برنامه می‌خواند
نگاشت مسیرهای اجراجریان‌های چندمرحله‌ای و ترتیب اجباری آن‌ها
اثرانگشت فریم‌ورک و برنامهفریم‌ورک و نسخه — ورودی کار روی زنجیره‌ی تأمین (A03:2025)
نگاشت معماری برنامهCDN، WAF، Load Balancer، لایه‌های میانی
پیکربندی شبکه و پلتفرمسرویس‌های اضافی، نسخه‌های وصله‌نشده، محیط‌های Staging عمومی
مدیریت پسوند فایلرفتار سرور با .bak، .old، .inc، .config
فایل‌های پشتیبان و بی‌ارجاعآرشیو کد، .git/ افشاشده، فایل .env
رابط‌های مدیریتیپنل ادمین بی‌محافظ یا صرفاً «پنهان»
متدهای HTTPPUT، DELETE، TRACE، و هدرهای بازنویسی متد
HSTSوجود، مقدار max-age و includeSubDomains
سیاست دامنه‌ی متقاطع RIAcrossdomain.xml و clientaccesspolicy.xml باقی‌مانده
مجوزهای فایلفایل‌های قابل نوشتن در مسیر سرویس‌دهی
تصاحب زیردامنهرکورد DNS اشاره‌کننده به سرویس آزادشده
ذخیره‌سازی ابریباکت با دسترسی عمومی خواندن یا نوشتن

در عمل بیشتر این مرحله با ابزار انجام می‌شود: کشف زیردامنه با subfinder، بررسی زنده‌بودن و اثرانگشت با httpx، کشف مسیر با ffuf و بررسی الگوهای شناخته‌شده با Nuclei. مبانی این فاز در شناسایی (Reconnaissance) توضیح داده شده و فهرست کامل ابزارها در ابزارهای تست نفوذ.

هویت و احراز هویت — IDNT (۵) و ATHN (۱۰)

این پانزده آزمون به دسته‌ی A07:2025 خطاهای احراز هویت نگاشت می‌شوند.

آزمونچه چیزی را بررسی می‌کنید
تعریف نقش‌هافهرست کامل نقش‌ها و مجوز هر نقش — پیش‌نیاز کل کار ATHZ
فرایند ثبت‌نامآیا کاربر می‌تواند نقشی بالاتر از پیش‌فرض برای خودش بسازد؟ تأیید ایمیل و شماره اجباری است؟
تخصیص حسابچه کسی حساب می‌سازد، حذف می‌کند و نقش تغییر می‌دهد؛ آیا حساب حذف‌شده واقعاً غیرفعال می‌شود؟
شمارش حسابتفاوت پاسخ ورود/بازیابی برای کاربر موجود و ناموجود؛ تفاوت زمان پاسخ
سیاست نام کاربریامکان ساخت نام‌های مشابه یا هم‌ارز پس از نرمال‌سازی
انتقال اعتبارنامهارسال روی کانال رمزنگاری‌شده؛ اعتبارنامه در Query String نباشد
اعتبارنامه‌ی پیش‌فرضحساب پیش‌فرض پنل‌ها، سرویس‌های مدیریتی و ابزارهای همراه فریم‌ورک
قفل حسابوجود سازوکار، و از آن مهم‌تر: آیا خودش به منع سرویس تبدیل می‌شود؟
دور زدن طرح احراز هویتدسترسی مستقیم به مسیر پس از ورود، دستکاری پارامتر وضعیت، اجبار مرور
«مرا به یاد داشته باش»توکن ماندگار قابل حدس یا بدون انقضا
ضعف کش مرورگرداده‌ی حساس قابل بازگشت با دکمه‌ی Back پس از خروج
سیاست رمز عبورهم‌راستایی با NIST SP 800-63B؛ بررسی در برابر مجموعه‌های فاش‌شده
سؤال امنیتیوجودشان به‌خودی‌خود یک یافته است — پاسخ‌ها برای افراد متعدد دانستنی‌اند
تغییر و بازیابی رمزعمر و یکبارمصرف بودن توکن، پیوند بازیابی، ابطال نشست‌های فعال پس از تغییر
احراز هویت در کانال‌های جایگزیناپ موبایل، API، سامانه‌ی قدیمی — آیا کنترل ضعیف‌تری دارند؟

موارد مربوط به توکن را جداگانه بررسی کنید: اگر برنامه از JWT استفاده می‌کند، اعتبارسنجی ادعاهای aud و iss، فهرست سفید الگوریتم و رفتار در برابر جابه‌جایی الگوریتم را بیازمایید؛ و اگر ورود از طریق OAuth است، تطابق دقیق redirect_uri، وجود state و PKCE را.

مجوزدهی و نشست — ATHZ (۴) و SESS (۹)

سیزده آزمون که پرارزش‌ترین یافته‌های هر پروژه از آن‌ها بیرون می‌آید. توجه کنید که این بخش عملاً تمام‌دستی است؛ هیچ ابزاری نمی‌داند کاربر ۵ مجاز به دیدن رکورد ۷ است یا نه.

آزمونچه چیزی را بررسی می‌کنید
عبور از مسیر و گنجاندن فایلخواندن فایل خارج از ریشه؛ جزئیات در LFI
دور زدن طرح مجوزدهیدسترسی افقی و عمودی؛ مسیر دوقلوی API، هدرهای X-Original-URL و بازنویسی متد
ارتقای سطح دسترسیتبدیل کاربر عادی به مدیر؛ Mass Assignment روی فیلد نقش. جزئیات در ارتقای سطح دسترسی
ارجاع مستقیم ناامن به شیءتغییر شناسه در پارامتر یا بدنه؛ جزئیات در IDOR
طرح مدیریت نشستآنتروپی شناسه‌ی نشست، تولید سمت سرور، تغییر شناسه پس از ورود
ویژگی‌های کوکیHttpOnly، Secure، SameSite، دامنه و مسیر، پیشوند __Host-
تثبیت نشستآیا شناسه‌ی پیش از ورود بعد از ورود معتبر می‌ماند؟
افشای متغیرهای نشستتوکن در URL، در لاگ، در هدر Referer، در localStorage
CSRFتوکن هم‌گام‌ساز سمت سرور؛ جزئیات در CSRF
عملکرد خروجابطال نشست در سمت سرور، نه فقط پاک کردن کوکی
انقضای نشستانقضای بی‌کاری و انقضای مطلق
Session Puzzlingاستفاده‌ی مشترک از یک متغیر نشست در دو جریان متفاوت
ربایش نشستپذیرش نشست از IP یا User-Agent متفاوت، بازپخش توکن

روش استاندارد آزمون کنترل دسترسی: با هر نقش وارد شوید، مجموعه‌ی کامل درخواست‌های آن نقش را ثبت کنید، سپس هر درخواست را با نشست نقش‌های دیگر و بدون نشست بازپخش کنید و هر سه چیز را مقایسه کنید: کد وضعیت، طول پاسخ و محتوا. برای هر منبع، همه‌ی متدها را جدا بیازمایید (GET، POST، PUT، PATCH، DELETE) — الگوی رایج این است که بررسی مجوز روی GET هست و روی PATCH نیست. مفاهیم پایه در کنترل دسترسی شکسته.

باور غلط رایج

«چون همه‌ی مرورگرها پیش‌فرض SameSite=Lax دارند، CSRF حل شده است.» این نادرست است. Chrome این پیش‌فرض را اعمال می‌کند، اما Firefox نه — باگ متناظر در Mozilla با وضعیت WONTFIX بسته شده و قابلیت که در Firefox 96 عرضه شده بود، به‌دلیل شکستن سایت‌ها برگردانده شد. Safari سازوکار متفاوتی (مسدودسازی کوکی ثالث) دارد. علاوه بر این، SameSite در سطح دامنه‌ی قابل ثبت عمل می‌کند نه Origin، پس زیردامنه‌های خواهر آن را دور می‌زنند، و تغییر وضعیت با متد GET همچنان کار می‌کند. توکن CSRF سمت سرور همچنان الزامی است.

اعتبارسنجی ورودی — INPV (۱۹)

بزرگ‌ترین دسته و همان بخشی که ابزارها بیشترین کمک را می‌کنند. این‌جا خودکارسازی توجیه دارد — اما تأیید نهایی هر یافته دستی است.

آزموننکته‌ی عملی
XSS بازتابیهر پارامتر در هر بافت (HTML، اتریبیوت، JS، URL) — XSS
XSS ذخیره‌شدهورودی‌هایی که بعداً به کاربر دیگری نمایش داده می‌شوند؛ پنل ادمین را فراموش نکنید
دستکاری متد HTTPپذیرش متدهای غیرمنتظره روی مسیرهای حساس
آلودگی پارامتر (HPP)ارسال تکراری یک پارامتر و بررسی اینکه کدام مقدار برنده می‌شود
تزریق SQLهشت زیرآزمون پایگاه‌داده‌محور به‌علاوه‌ی NoSQL، ORM و سمت کلاینت — SQL Injection
تزریق LDAPدر سامانه‌های متصل به Active Directory
تزریق XMLمقدمه‌ی XXE؛ در جاوا و آپلود SVG/OOXML جدی‌تر است
تزریق SSIدر سرورهای قدیمی با Server Side Includes
تزریق XPathجست‌وجو روی داده‌ی XML
تزریق IMAP/SMTPفرم‌های تماس و سامانه‌های وب‌میل
تزریق کدشامل زیرآزمون‌های LFI و RFI
تزریق دستورشامل تزریق آرگومان که بدون شل هم کار می‌کند — Command Injection
Format Stringدر کامپوننت‌های بومی و لاگ‌نویسی‌های خاص
آسیب‌پذیری پرورش‌یافتهورودی امروز ذخیره می‌شود و در جریان دیگری فردا اجرا می‌شود (تزریق مرتبه‌دوم)
HTTP Splitting و Smugglingاختلاف تفسیر بین پروکسی و بک‌اند
درخواست‌های ورودی HTTPرفتار در برابر درخواست‌های ناهنجار
تزریق هدر Hostمسمومیت کش و پیوند بازیابی رمز آلوده
SSTIوقتی ورودی به قالب می‌رسد نه به داده — SSTI
SSRF (WSTG-INPV-19)متادیتای ابری، سرویس داخلی، تشخیص کور با OAST — SSRF

یک تذکر مهم درباره‌ی SSRF: باور قدیمی «SSRF روی AWS مساوی است با گرفتن فوری اعتبارنامه‌ی IAM» دیگر پیش‌فرض درست نیست. IMDSv2 برای دریافت توکن به درخواست PUT و هدر اختصاصی نیاز دارد و به‌صورت پیش‌فرض محدودیت hop برابر ۱ دارد؛ Amazon Linux 2023 و نمونه‌های جدیدتر پیش‌فرض روی IMDSv2 هستند. درست این است که بررسی کنید IMDSv1 فعال است یا نه، نه اینکه فرض بگیرید.

خطا، رمزنگاری و سمت کلاینت — ERRH (۲)، CRYP (۴)، CLNT (۱۳)

نوزده آزمون که دو دسته‌ی کوچک و یک دسته‌ی بزرگ را پوشش می‌دهند.

دستهآزمون‌ها
ERRH (۲)مدیریت نامناسب خطا؛ افشای Stack Trace. این‌ها به دسته‌ی جدید A10:2025 مدیریت نادرست شرایط استثنایی هم مربوط‌اند
CRYP (۴)ضعف TLS (نسخه و مجموعه‌رمزها)؛ Padding Oracle؛ انتقال داده‌ی حساس روی کانال رمزنشده؛ رمزنگاری ضعیف در سطح برنامه — TLS
CLNT (۱۳)DOM XSS؛ اجرای JavaScript؛ تزریق HTML؛ تغییر مسیر سمت کلاینت؛ تزریق CSS؛ دستکاری منابع سمت کلاینت؛ CORS؛ Cross-Site Flashing؛ Clickjacking؛ WebSocket؛ پیام‌رسانی وب (postMessage)؛ ذخیره‌سازی مرورگر؛ XSSI

برای TLS، مبنای فعلی: TLS 1.3 فعال باشد؛ TLS 1.0 و 1.1 طبق RFC 8996 منسوخ‌اند و باید غیرفعال شوند؛ و اگر TLS 1.2 را برای سازگاری نگه می‌دارید، طبق RFC 10015 (جولای ۲۰۲۶) مجموعه‌رمزهای RSA ایستا و همه‌ی خانواده‌ی FFDHE از رده خارج شده‌اند — یعنی فقط ECDHE با AEAD. توصیه‌ی HPKP دیگر معتبر نیست و از مرورگرها حذف شده.

برای بخش سمت کلاینت، دو نکته: اول اینکه DOM XSS را با اسکن سمت سرور پیدا نمی‌کنید، چون بارِ حمله معمولاً در Fragment آدرس است که هرگز به سرور ارسال نمی‌شود؛ ابزار درست، بازرسی مسیر منبع تا سینک در جاوااسکریپت است. دوم، سیاست CSP را ارزیابی کنید ولی به آن به‌عنوان رفع نگاه نکنید: سیاست‌های مبتنی بر فهرست سفید به‌طور ساختاری دور زده می‌شوند و رویکرد درست، nonce به‌همراه strict-dynamic است.

منطق کسب‌وکار — BUSL (۹)

نُه آزمون که هیچ‌کدام قابل خودکارسازی نیستند و بیشترین اثر مالی مستقیم را دارند. برای اجرای این بخش، تیم آزمون باید فرایند کسب‌وکار شما را بفهمد — به همین دلیل است که پرسش‌نامه‌ی اسکوپینگ باید سراغ جریان‌های کسب‌وکار برود.

آزمونپرسشی که پاسخ می‌دهد
اعتبارسنجی داده‌ی منطق کسب‌وکارآیا مقدار خارج از محدوده‌ی منطقی پذیرفته می‌شود؟ تعداد منفی، قیمت صفر، تاریخ گذشته
امکان جعل درخواستآیا می‌توان درخواستی ساخت که رابط کاربری هرگز تولید نمی‌کند؟
بررسی یکپارچگیآیا داده‌ی حساس (قیمت، تخفیف، شناسه‌ی فروشنده) از سمت کلاینت پذیرفته می‌شود؟
زمان‌بندی فرایندآیا با کند یا سریع کردن مراحل، وضعیت غیرمنتظره می‌سازید؟ نقطه‌ی ورود شرایط مسابقه
سقف استفاده از تابعآیا کد تخفیف یک‌بارمصرف چند بار قابل استفاده است؟ سقف برداشت قابل دور زدن است؟
دور زدن جریان کاریآیا می‌توان مرحله‌ی پرداخت یا تأیید را حذف کرد و مستقیم به مرحله‌ی نهایی رفت؟
دفاع در برابر سوءاستفادهآیا برنامه رفتار غیرعادی را تشخیص می‌دهد یا فقط خطا برمی‌گرداند؟
آپلود انواع فایل غیرمنتظرهاعتبارسنجی نوع واقعی فایل، نه پسوند و نه هدر Content-Type
آپلود فایل مخربمحل ذخیره، امکان اجرا، پردازش سمت سرور (تبدیل تصویر، استخراج آرشیو)

درباره‌ی شرایط مسابقه یک به‌روزرسانی مهم لازم است: تصور «حمله‌ی مسابقه روی اینترنت عملی نیست» منسوخ است. تکنیک single-packet attack با استفاده از چندگانه‌سازی HTTP/2 چندین درخواست کامل را در یک بسته‌ی TCP بسته‌بندی می‌کند و اثر نویز شبکه را حذف می‌کند؛ پژوهش PortSwigger میانه‌ی پراکندگی ۱ میلی‌ثانیه را در برابر ۴ میلی‌ثانیه‌ی روش قدیمی گزارش کرده است. پس هر جریان مالی که به وضعیت مشترک دست می‌زند باید تحت بار موازی آزموده شود. نمونه‌ی عملی این آزمون را در نمونه تست نفوذ روایت کرده‌ایم.

API: چرا WSTG-APIT کافی نیست

این را باید صریح گفت: دسته‌ی WSTG-APIT در نسخه‌ی ۴٫۲ فقط یک آزمون دارد و آن هم GraphQL است. WSTG v4.2 متدولوژی جامعی برای REST API نیست. اگر پیمانکاری ادعا می‌کند «API شما را بر پایه‌ی WSTG کامل آزمودیم»، یا مرجع را نمی‌شناسد یا در حال ساده‌سازی گمراه‌کننده است.

مرجع درست برای API، OWASP API Security Top 10 (نسخه‌ی ۲۰۲۳) است. جدول زیر آن را به‌عنوان چک‌لیست مکمل ارائه می‌کند:

دستهدر عمل چه چیزی را بیازمایید
BOLA — مجوزدهی شکسته در سطح شیءهر شناسه در مسیر و بدنه، با نشست کاربر دیگر
احراز هویت شکستهاعتبارسنجی توکن، عمر، ابطال، مسیرهای بازیابی
BOPLA — مجوزدهی شکسته در سطح ویژگیMass Assignment در نوشتن، و برگشت فیلدهای اضافی در خواندن
مصرف نامحدود منابعنبود سقف صفحه‌بندی، عملیات سنگین بدون محدودسازی نرخ
BFLA — مجوزدهی شکسته در سطح تابعفراخوانی متد یا مسیر مدیریتی با نقش پایین
دسترسی نامحدود به جریان‌های حساسسوءاستفاده‌ی خودکار از جریان‌هایی مثل ثبت سفارش یا رزرو
SSRFهر پارامتری که سرور را وادار به درخواست بیرونی می‌کند
پیکربندی نادرستCORS بازتابی، هدرها، افشای خطا، محیط Debug فعال
مدیریت نادرست موجودینسخه‌های قدیمی API، محیط Staging عمومی، مستندات افشاشده
مصرف ناامن APIهای ثالثاعتماد بدون اعتبارسنجی به پاسخ سرویس بیرونی

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

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

چک لیست تست نفوذ استاندارد کدام است؟

مرجع پذیرفته‌شده‌ی جهانی OWASP Web Security Testing Guide است و نسخه‌ی پایدار جاری آن v4.2 (۳ دسامبر ۲۰۲۰) با دوازده دسته و حدود ۹۷ آزمون. نسخه‌ی ۴٫۳ منتشر نشده و ۵٫۰ در حال توسعه است. برای API باید OWASP API Security Top 10 (۲۰۲۳) را هم به کار برد، چون دسته‌ی WSTG-APIT فقط یک آزمون دارد.

آیا OWASP Top 10 همان چک‌لیست تست نفوذ است؟

نه. Top 10 یک تاکسونومی ریسک با ده دسته برای طبقه‌بندی یافته‌هاست؛ WSTG یک متدولوژی آزمون با آزمون‌های نام‌گذاری‌شده و شناسه‌دار. برای بیان پوشش از WSTG استفاده می‌کنید و برای رده‌بندی یافته‌ها از Top 10 و CWE. این دو کاملاً هم‌راستا هم نیستند؛ نمونه‌اش SSRF است که در WSTG زیر اعتبارسنجی ورودی و در Top 10:2025 داخل A01 است.

چک‌لیست را خودمان می‌توانیم اجرا کنیم؟

بخش‌هایی بله و بخش‌هایی نه. دسته‌های INFO، CONF، ERRH و CRYP تا حد خوبی با ابزار و دانش عمومی قابل پوشش‌اند و انجامشان توسط تیم داخلی ارزش دارد. دسته‌های ATHZ و BUSL به تجربه‌ی حمله‌محور و ذهنیت سوءاستفاده نیاز دارند و همان‌جایی هستند که تیم داخلی معمولاً کور است، چون برنامه را از دید طراح می‌بیند. بحث کامل در تیم تست نفوذ.

کدام دسته از چک‌لیست بیشترین زمان را می‌گیرد؟

از نظر تعداد آزمون، INPV با ۱۹ مورد بزرگ‌ترین است. اما از نظر زمان واقعی، ATHZ به‌همراه BUSL بیشترین زمان را می‌گیرند، چون تمام‌دستی‌اند و با تعداد نقش‌ها به‌صورت ترکیبی رشد می‌کنند. اگر برنامه‌ی شما پنج نقش دارد، آزمون کنترل دسترسی به‌تنهایی می‌تواند بیش از نیمی از بودجه‌ی پروژه را بگیرد — موضوعی که در هزینه تست نفوذ باز کرده‌ایم.

برای هر آزمون چه شواهدی باید نگه داشت؟

برای هر ردیف چک‌لیست سه چیز: وضعیت (آزموده شد / آسیب‌پذیر / خارج از دامنه)، شواهد خام (درخواست و پاسخ HTTP کامل) و زمان اجرا. مستندسازی «آزموده شد و مشکلی نبود» هم لازم است، چون همین است که پوشش را اثبات می‌کند و در آزمون سال بعد مرجع مقایسه می‌شود.

هر چند وقت یک‌بار باید کل چک‌لیست را اجرا کرد؟

پوشش کامل معمولاً سالانه، و آزمون هدفمند روی بخش‌های تغییریافته پس از هر انتشار بزرگ. برای سازمان‌های مشمول PCI DSS این حداقل هر ۱۲ ماه و پس از هر تغییر مهم زیرساخت یا برنامه الزامی است، و پس از رفع یافته‌ها آزمون باید تکرار شود. توجه کنید ISO/IEC 27001:2022 دوره‌ی مشخصی تعیین نمی‌کند و فرایند مبتنی بر ریسک می‌خواهد.

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

مهدی مرادلو

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

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

PENTEST

فرایند تست نفوذ گام‌به‌گام برای سازمان‌ها

ادامه مطلب ←
PENTEST

هزینه تست نفوذ در ایران؛ قیمت بر اساس نوع پروژه

ادامه مطلب ←
PENTEST

گزارش تست نفوذ: نمونه، ساختار و قالب نوشتن

ادامه مطلب ←