معمولاً WAF (Web Application Firewall) ها در حالت های passive و reactive و گاهی اوقات در دو حالت کار میکنند و این امر به زمان نصب که آن ها بستگی دارد.
مثلاً پس از استقرار، می توانند در حالت passive قرار گیرند، که در این حالت از مقادیر false positive کم شده و از مسدود کردن اپلیکیشن جلوگیری می کند. با این حال، به محض تولید، اکثراً در حالت reactive قرار دارند.
قبل از تست یک برنامه وب، بسیار مفید است بدانید که آیا WAF در مقابل شما قرار گرفته است یا خیر و اگر قرار گرفته است از چه نوعی می باشد.
سیستم های WAF اغلب اوقات ردپایی از خود به جای می گذارند که می توان با استفاده از این موضوع محل قرار گیری و نوع WAF را تشخیص دهیم.
بیایید برخی از این تکنیک ها را بررسی کنیم.
مقادیر کوکی
برخی از سیستم های WAF با انتشار کوکی های خود در طول ارتباطات HTTP، حضور خود را از طریق کوکی ها نشان میدهند.
برای مثال:
Citrix Netscaler از کوکی های مختلف مانند ns_af، citrix_ns_id و یا NSC_ در پاسخ های HTTP خود استفاده میکند.
F5 BIG-IP ASM از کوکی هایی که با TS شروع می شوند استفاده می کند و رشته ای که از regex زیر پیروی می کند را دنبال می کنند:
Barracuda از دو کوکی barra_counter_session و BNI__BARRACUDA_LB_COOKIE استفاده می کند.
بازنویسی هدر
برخی از WAF ها هدرهای HTTP را بازنویسی می کنند، معمولاً هدر سرور را برای فریب مهاجمان تغییر می دهند.
به عنوان مثال، در صورت درخواست مخرب، هدر را بازنویسی می کنند و با توجه به درخواست مخرب، هدر HTTP Server را در پاسخ حذف می کنند.
کد پاسخ HTTP
اگر درخواست مخرب باشد، برخی از WAF ها کد های پاسخ HTTP را تغییر می دهند.
برای مثال:
بدنه پاسخ HTTP
همچنین می توان حضور WAF را در بدنه Response شناسایی نمود.
مثال:
mod_security
AQTRONIX WebKnight
dotDefender
بستن ارتباط
یک ویژگی جالب که توسط برخی از WAF ها پشتیبانی می شود، بستن ارتباط می باشد.
قطع ارتباط در مواردی که WAF یک درخواست مخرب را تشخیص می دهد، مفید است.
mod_security
در اینجا احتمال پیاده سازی mod_security برای شناسایی حمله brute force وجود دارد.
ابزار های شناسایی WAF
ابزار های تست نفوذ بسیاری برای شناسایی WAF وجود دارد. از این ابزار ها برای شناسایی و نحوه تعیین Payload استفاده میشود. برای مثال پس از شناسایی WAF می توان با استفاده از تکنیک obfuscate، اقدام به دور زدن WAF
نماییم.
ابزار wafw00f
ابزاری که در این زمینه شناخته شده است، wafw00f نام دارد. این ابزار توسط Sandro Gauci و Wendel G. Henrique ساخته شده است.
تکنیک های مورد استفاده برای تشخیص WAF در این ابزار همانند روش هایی است که قبلاً دیده ایم:
- کوکی ها
- Server Cloaking
- کد های Response
- قطع عملیات
- قوانین از پیش ساخته شده
اسکن نمودن وب سایت با استفاده از wafw00f بسیار ساده است و تصویر زیر آن را تایید می کند:
ابزار Nmap
علاوه بر این ابزار می توانید از Nmap جهت شناسایی WAF استفاده نمایید. این ابزار حاوی اسکریپتی است که قادر به شناسایی WAF و نسخه آن می باشد.
این اسکریپت http-waf-fingerprint نام دارد و توسط Hani Benhabiles نوشته شده است.
اسکن نمودن یک وب سایت با nmap همانند ابزار wafw00f ساده است. برای این منظور کافی است داخل خط فرمان خود دستور زیر را اجرا نماییم:
ابزار imperva-detect
ابزار دیگری که برای شناسایی WAF می توان از آن استفاده نمود imperva-detect می باشد که توسط Lamar Spells ساخته شده است. این ابزار به طور 100% بر روی تشخیص Imperva WAF تمرکز دارد:
تصویر زیر نمونه ای از نحوه اجرای ابزار imperva-detect می باشد:
منبع: