جمع آوری اطلاعات از وب اپلیکیشن
در این بخش از دوره آموزشی OWASP-OTG به اولین بخش از استاندارد OTG با شناسه OTG-INFO-009 می پردازیم که مربوط به جمع آوری اطلاعات از وب اپلیکیشن می باشد.
خلاصه
هر وب اپلیکیشنی که یک فرد در فکر توسعه آن باشد، کدنویسی و توسعه شده است. با توجه به شمار بیشتر پروژههای متن باز و رایگان که در سطح جهان توسعه یافته و اجرا شدهاند، احتمال برخورد ارزیاب امنیتی با یک سایت که بخشی از آن یا کل آن وابسته به یکی از این نرمافزارهای معروف مانند WordPress باشد، زیاد است.
دانستن اجزا وب اپلیکیشن تحت ارزیابی به طور چشمگیری در فرایند تست به ارزیاب کمک کرده و حجم کاری او را کاهش میدهد. این نرمافزارهای معروف حاوی سرایندهای HTML، کوکیها و ساختار مسیری منحصر به فرد هستند و میتوان برای شناسایی وب اپلیکیشن، این موارد را بررسی کرد.
اهداف تست و ارزیابی
هدف از این تست و ارزیابی، تشخیص نوع و نسخه وب اپلیکیشن برای شناسایی آسیب پذیریها و اکسپلویتهای مربوطه حین تست است.
چگونه تست کنیم؟
کوکیها
یک راه مطمئن برای شناسایی وب اپلیکیشن از طریق کوکیهای خاص اپلیکیشن است. درخواست HTTP زیر را در نظر بگیرید:
کوکی مربوط به CAKEPHP به طور خودکار ارسال شده است و اشاره به فریم ورک استفاده شده دارد. لیستی از کوکیها در ادامه آورده شده است. با این حال، تغییر و دستکاری این کوکیها امکانپذیر است.
سورس کد HTML
این روش مبتنی بر یافتن الگوهای خاص در سورس کد HTML است. غالباً یک فرد میتواند اطلاعاتی بیشتری از این طریق جمع آوری کرده و دقت تشخیص وب اپلیکیشن را بالا ببرد. یکی از علائم این روش، کامنتهای HTML که منجر به نشت اطلاعات شدهاند، هستند. علاوه بر این، مسیرهای خاص و منحصر به فرد یک اپلیکیشن را نیز میتوان یافت. در نهایت، متغیرهای اسکریپتی خاص نیز میتوانند به یک نوع اپلیکیشن خاص اشاره داشته باشند.
از روی تگ زیر، میتوان به نوع و نسخه اپلیکیشن اجرا شده پی برد. کامنتها، مسیرهای خاص و متغیرهای اسکریپتی به ارزیاب امنیتی در شناسایی و تشخیص اپلیکیشن کمک میکنند.
غالباً این اطلاعات بین تگ head، درون تگ meta و یا در انتهای صفحه وب قرار میگیرند. با این اوصاف، توصیه میشود که همه صفحه بررسی شود چرا که میتوان اطلاعات ارزشمند دیگری مانند فیلدهای مخفی را نیز یافت.
فایلها و مسیرهای خاص
جدا از اطلاعات جمع آوری شده از منابع HTML، رویکرد دیگری نیز وجود دارد که به ارزیاب امنیتی کمک میکند تا با دقت بسیار بالا اپلیکیشن را تشخیص دهد. هر اپلیکیشنی ساختار فایلی و مسیری خاص خود را روی سرور دارد. همانطور که ذکر شد، ارزیاب امنیتی میتواند مسیرهای خاص را در سورس کد HTML پیدا کند، اما گاهی اوقات این اطلاعات در سورس کد HTML وجود ندارند.
برای تشخیص آنها روشی به نام dirbusting وجود دارد. Dirbusting هدف را با اسامی فایلها و مسیرهای قابل پیشبینی بروت فورس کرده و جوابهای HTTP را بررسی میکند. از این اطلاعات میتوان برای یافتن فایلهای پیشفرض و حمله به آنها، و جمع آوری اطلاعات از وب اپلیکیشن استفاده کرد.
Dirbusting را میتوان به چند صورت انجام داد. شکل زیر، مثالی از یک dirbusting موفق روی یک هدف وردپرسی با کمک لیست تعریف شده و Burp Suite است.
در این مثال، مسیرهای خاص و منحصر به فرد وردپرس (مانند /wp-admin/) و کدهای HTTP مربوطه مانند 403 و 302 مشهود هستند. این یک سند محکمی برای اثبات وردپرسی بودن سایت است. میتوان فایلهای پلاگین و نسخه اپلیکیشنهای مختلف را نیز همانند مثال فوق، dirbust کرد. در مثال زیر، میتوان فایل CHANGELOG پلاگین Drupal را مشاهده کرد. این فایل، اپلیکیشن استفاده شده و نسخه پلاگینهای آسیب پذیر را مشخص میکند.
نکته: توصیه میشود قبل از شروع dirbusting، فایل robots.txt را چک کنید. گاهی اوقات فایلها و مسیرهای منحصر به فرد اپلیکیشن را میتوان در آنجا نیز یافت. به عنوان مثال، محتوای فایل robots.txt زیر را در نظر بگیرید:
فایلها و فولدرهای خاص هر اپلیکیشن منحصر به فرد است. توصیه میشود حین تست نفوذ، فریم ورک مربوطه را نصب کرده تا درک بهتری از زیرساخت و ساختار فایلهای آن داشته باشید. با این حال، لیستهای فایلی مختلفی در اینترنت وجود دارند و یکی از بهترین مثالها، FuzzDB که لیستی از فولدرها و فایلهای قابل پیشبینی است، میباشد.
شاخصها و علائم اپلیکیشنها
برای اطلاعات بیشتر به آدرس www.owasp.org/index.php/Web-metadata مراجعه کنید.
ابزارها
لیستی از ابزارهای جامع و معروف در زیر آورده شده است. ابزارهای کاربردی دیگر و ابزارهای مختص نوع خاصی از فریم ورک نیز وجود دارند.
WhatWeb
یکی از بهترین ابزارهای جمع آوری اطلاعات در بازار است. به طور پیش فرض در کالی نصب شده است. به زبان Ruby نوشته شده است. به علائم زیر حساس است:
• رشتههای متنی
• الگوهای با قاعده
• کوئریهای دیتابیس Google Hack
• هشهای MD5
• شناسایی و تشخیص URL
• الگوهای تگ HTML
• کد اختصاصی به زبان Ruby برای فعالیتهای passive
خروجی این ابزار به شکل زیر است:
BlindElephant
ابزار جمع آوری اطلاعات با دقت بسیار بالا که بر اساس مقایسه نسخههای چِکسام فایلهای ایستا کار میکند و به زبان پایتون نوشته شده است. خروجی این برنامه به شکل زیر خواهد بود:
Wappalyzer
پلاگین مرورگرهای فایرفاکس و کروم است. این پلاگین بر اساس مقایسه الگوهای با قاعده کار میکند و به چیز دیگری جز بارگذاری کامل صفحه وب در مرورگر ندارد. خروجی این پلاگین به شکل آیکون است. احتمال دارد این پلاگین در مواقعی حدسهای اشتباهی بزند، اما در کل یک پلاگین بسیار کاربردی در یافتن تکنولوژیهای یک سایت، تنها با یک بار بارگذاری، محسوب میشود. خروجی این پلاگین به شکل زیر خواهد بود:
مطالب این بخش توسط جناب آقای امیر ثروتی تهیه شده است.