راهنمای جامع تست‌های تزریق برای آزمون نفوذ (Penetration Testing)

این مقاله شامل دو بخش اصلی است: بخش اول با استفاده از placeholderها برای تست‌های ایمن، و بخش دوم با پیلودهای واقعی برای محیط‌های کنترل‌شده. تمام محتوا بر اساس اصول حرفه‌ای آزمون نفوذ تهیه شده و برای مستندسازی و آموزش مناسب است. تاریخ تهیه: ۱۳ اوت ۲۰۲۵.

بخش اول: لیست دسته‌بندی ورودی‌ها برای تست تزریق با Placeholderها

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

دسته تست Placeholder هدف شاخص تشخیص
Single Quote Test <SINGLE_QUOTE> بررسی واکنش سیستم به رشته‌های تک‌کوتیشن خطای سینتکس یا اجرای غیرمنتظره Query
Double Quote Test <DOUBLE_QUOTE> بررسی escaping رشته‌های دوبل کوتیشن خطای سینتکس یا رفتار غیرعادی در خروجی
Parenthesis Test <PAREN_OPEN> و <PAREN_CLOSE> بررسی پردازش پرانتز در Query یا Expression خطای پارس یا تغییر در منطق برنامه
Logical Operator Test <LOGIC_OP> بررسی حساسیت به شرط‌های منطقی تغییر در خروجی یا دور زدن منطق شرطی
Comment Sequence Test <COMMENT_SEQ> بررسی امکان قطع کردن Query یا Statement نادیده گرفتن بخشی از Query یا خطای اجرا
Special Character Test <SPECIAL_CHAR> بررسی handling کاراکترهای خاص خطای پردازش یا رفتار غیرمنتظره در خروجی
Long Input Test <LONG_STRING_256> یا <LONG_STRING_5000> تست محدودیت طول ورودی و Validation خطای سرریز بافر یا قطع ورودی
Encoding Variant Test <URL_ENCODED>، <BASE64_ENCODED> بررسی decode و normalisation ورودی‌ها اجرای نادرست یا دور زدن فیلترهای ورودی
Null Byte Test <NULL_BYTE> بررسی حساسیت به بایت صفر خطای پردازش یا دسترسی غیرمجاز
Numeric Boundary Test <NEGATIVE_NUM>، <LARGE_NUM> بررسی مدیریت اعداد غیرمعمول خطای سرریز یا رفتار غیرمنتظره در محاسبات
Boolean Expression Test <BOOLEAN_EXPR> شناسایی نقاطی که منطق برنامه قابل تغییر است تغییر در خروجی یا دور زدن شرط‌های منطقی
Time Delay Test <TIME_FUNC> بررسی وجود تزریق زمان‌محور (در محیط staging) تأخیر غیرمعمول در پاسخ سرور
Template Injection Test <TEMPLATE_EXPR> بررسی اجرای ناخواسته متغیرها در Template Engine اجرای کد یا نمایش متغیرهای ناخواسته
Path Traversal Test <PATH_TRAVERSAL> بررسی مدیریت مسیر و دسترسی به فایل دسترسی به فایل‌های غیرمجاز یا خطای مسیر
هشدار: این placeholderها فقط برای تست ایمن استفاده شوند. در محیط واقعی، از پیلودهای واقعی با احتیاط استفاده کنید.

بخش دوم: لیست دسته‌بندی تست‌های تزریق با پیلودهای واقعی

در این بخش، نمونه‌های واقعی پیلودها ارائه شده است. این پیلودها فقط در محیط‌های تست کنترل‌شده (مانند staging) استفاده شوند و ممکن است در محیط تولید آسیب‌زا باشند. توضیحات تکمیلی برای هر دسته اضافه شده است.

دسته تست نمونه پیلود واقعی هدف شاخص تشخیص
Single Quote Test ' OR 1=1 -- بررسی واکنش سیستم به رشته‌های تک‌کوتیشن خطای سینتکس SQL یا بازگشت داده‌های غیرمنتظره
Double Quote Test " OR "1"="1 بررسی escaping رشته‌های دوبل کوتیشن خطای سینتکس یا خروجی غیرعادی
Parenthesis Test ') OR ('1'='1 بررسی پردازش پرانتز در Query یا Expression خطای پارس یا دور زدن منطق Query
Logical Operator Test OR 1=1 بررسی حساسیت به شرط‌های منطقی دسترسی غیرمجاز یا تغییر در نتایج Query
Comment Sequence Test -- یا # بررسی امکان قطع کردن Query یا Statement نادیده گرفتن بخشی از Query یا خطای اجرا
Special Character Test ; DROP TABLE users; -- بررسی handling کاراکترهای خاص اجرای دستورات ناخواسته یا خطای سرور
Long Input Test 'a' * 256 یا 'a' * 5000 تست محدودیت طول ورودی و Validation خطای سرریز بافر یا قطع ورودی
Encoding Variant Test %27%20OR%201=1 (URL) یا J2FzZQ== (Base64) بررسی decode و normalisation ورودی‌ها اجرای نادرست یا دور زدن فیلترهای ورودی
Null Byte Test %00 بررسی حساسیت به بایت صفر دسترسی غیرمجاز یا خطای پردازش
Numeric Boundary Test -999999999 یا 999999999999999 بررسی مدیریت اعداد غیرمعمول خطای سرریز یا رفتار غیرمنتظره در محاسبات
Boolean Expression Test 1=1 AND 1=2 شناسایی نقاطی که منطق برنامه قابل تغییر است تغییر در خروجی یا دور زدن شرط‌های منطقی
Time Delay Test SLEEP(5) یا WAITFOR DELAY '0:0:5' بررسی وجود تزریق زمان‌محور (در محیط staging) تأخیر غیرمعمول (مثلاً ۵ ثانیه) در پاسخ سرور
Template Injection Test {{7*7}} یا <% print("test") %> بررسی اجرای ناخواسته متغیرها در Template Engine نمایش خروجی محاسباتی (مثل ۴۹) یا کد اجرا شده
Path Traversal Test ../../etc/passwd بررسی مدیریت مسیر و دسترسی به فایل دسترسی به فایل‌های غیرمجاز یا خطای مسیر

توضیحات تکمیلی برای هر دسته

هشدار مهم: این پیلودها فقط در محیط‌های تست کنترل‌شده استفاده شوند. استفاده در محیط تولید غیرقانونی و خطرناک است. همیشه اجازه‌نامه کتبی بگیرید و از ابزارهایی مثل Burp Suite یا SQLMap استفاده کنید.

نکات اجرایی و ابزارهای پیشنهادی

نکات فنی و کاربردی در تست تزریق

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

تزریق SQL (SQL Injection): یکی از متداول‌ترین آسیب‌پذیری‌های وب است. این نوع حمله زمانی رخ می‌دهد که ورودی کاربر بدون اعتبارسنجی و فیلتر مناسب به یک دستور SQL ارسال شود. مهاجم می‌تواند با تزریق دستورات SQL مخرب، به داده‌های حساس دسترسی پیدا کند، آن‌ها را تغییر دهد یا حتی پایگاه داده را حذف کند. تست تزریق SQL معمولاً با پیلودهایی مانند ' OR 1=1 -- آغاز می‌شود تا وجود آسیب‌پذیری مشخص شود.

تزریق دستورات سیستم (OS Command Injection): این آسیب‌پذیری به مهاجم اجازه می‌دهد تا دستورات سیستم عامل را از طریق یک ورودی وب‌سایت اجرا کند. این اتفاق زمانی رخ می‌دهد که برنامه کاربردی ورودی‌های کاربر را به یک تابع سیستم عامل مانند system() در PHP یا subprocess در پایتون ارسال کند. پیلودهایی مانند ; ls یا & id برای بررسی این آسیب‌پذیری استفاده می‌شوند.

تزریق XSS (Cross-Site Scripting): این نوع حمله به مهاجم اجازه می‌دهد تا اسکریپت‌های مخرب را در صفحات وب قابل مشاهده توسط سایر کاربران تزریق کند. آسیب‌پذیری XSS به سه دسته اصلی تقسیم می‌شود: ذخیره‌شده (Stored)، بازتابی (Reflected) و DOM-based. پیلودهای جاوااسکریپت مانند <script>alert(1)</script> برای تست این آسیب‌پذیری به کار می‌روند. هدف اصلی، سرقت اطلاعات کاربری یا اجرای کدهای ناخواسته در مرورگر قربانی است.

تزریق XML (XXE Injection): این آسیب‌پذیری زمانی رخ می‌دهد که یک parser ضعیف XML، ورودی‌های خارجی را پردازش کند. مهاجم می‌تواند با تعریف موجودیت‌های خارجی (External Entities) به فایل‌های محلی سرور دسترسی پیدا کند یا از طریق حملات Denial of Service به سیستم آسیب برساند. برای تست این آسیب‌پذیری، یک فایل XML با یک موجودیت خارجی (مانند <!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>) به برنامه ارسال می‌شود.

تزریق LDAP (LDAP Injection): این حمله در برنامه‌هایی رخ می‌دهد که از LDAP برای احراز هویت یا مدیریت اطلاعات استفاده می‌کنند. مهاجم با تزریق کاراکترهای خاص به فیلدهای ورودی، می‌تواند Query LDAP را تغییر دهد و به اطلاعات حساس دسترسی یابد یا احراز هویت را دور بزند. پیلودهایی مانند *)(uid=*))(|(user=test برای شناسایی این آسیب‌پذیری استفاده می‌شوند.

تفاوت‌ها و اصول کلیدی