این مقاله شامل دو بخش اصلی است: بخش اول با استفاده از 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> | بررسی مدیریت مسیر و دسترسی به فایل | دسترسی به فایلهای غیرمجاز یا خطای مسیر |
در این بخش، نمونههای واقعی پیلودها ارائه شده است. این پیلودها فقط در محیطهای تست کنترلشده (مانند 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 | بررسی مدیریت مسیر و دسترسی به فایل | دسترسی به فایلهای غیرمجاز یا خطای مسیر |
در این بخش، به بررسی عمیقتر روشها و تکنیکهای تست تزریق برای اطمینان از پوشش کامل آسیبپذیریهای احتمالی میپردازیم.
تزریق 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 برای شناسایی این آسیبپذیری استفاده میشوند.