سرویس Burp Collaborator
مقاله
  • ۳۰ بهمن ۱۴۰۲
  • Learning Road Map
  • ۷ دقیقه خواندن

سرویس Burp Collaborator

Burp Collaborator چیست؟

Collaborator یک سرویس تحت شبکه است که Burp Suite‌ برای شناسایی بسیاری از انواع آسیب‌پذیری‌ها از آن کمک می‌گیرد. برای مثال:
  • شناسایی برخی از آسیب‌پذیری‌های مبتنی بر تزریق (Injection) زمانی‌که با موفقیت انجام شوند، تنها با Trigger‌شدن برنامه‌ی تحت ارزیابی جهت ارسال یک بازخورد به یک سامانه‌ی بیرونی امکان‌پذیر است. به‌عنوان مثال برخی از آسیب‌پذیری‌های از نوع Blind SQL Injection، سبب هیچ‌گونه تغییری در محتوای وب یا زمان پاسخ‌دهی سرور نمی‌شوند و همین امر شناسایی آن‌ها را مشکل‌تر می‌کند. اما این آسیب‌پذیری‌ها را می‌توان با استفاده از ارسال Paylodهایی که در زمان تزریق یک SQL Query‌ موجب بازخورد بیرونی می‌شوند، شناسایی کرد. منظور از بازخورد بیرونی، ارسال یک یا چند بسته توسط برنامه‌ی تحت ارزیابی به یک سامانه‌ی دیگر است.
  • بعضی از آسیب‌پذیری‌های مربوط به سرویس‌ها را ‌می‌توان با ارسال Payloadهایی به سرور آسیب‌پذیر، و تحلیل بازخوردهایی که نتیجه‌ی آن هستند شناسایی کرد. برای مثال آسیب‌پذیری Mail Header Injection‌با این روش شناسایی می‌شود.
  • برخی آسیب‌پذیری‌ها زمانی به وجود می‌آیند که با ارسال یک‌سری Payload بتوان برنامه‌ی تحت ارزیابی را به دریافت محتوا از یک سیستم بیرونی و پردازش آن، وادار کرد. برای مثال یک برنامه‌ی تحت وب ممکن است محتوا را از یک آدرس URL که برای آن ارسال شده است، دریافت کرده و آن را در پاسخ خود بگنجاند.
در هنگام استفاده از سرویس Burp Collaborator، ابزار Burp اقدام به ارسال Payloadهایی به سمت برنامه‌ی در حال ارزیابی می‌کند و این Payloadها به‌گونه‌ای طراحی شده‌اند تا برنامه‌ی مذکور در صورت وجود آسیب‌پذیری، بازخورد مشخصی را به سمت سرور Collaborator‌ ارسال کند. به عبارت دیگر سرور Collaborator‌ نقش آن سامانه‌های بیرونی در مثال‌های بالا را به عهده دارد که دریافت کننده‌ی بازخورد از برنامه‌های آسیب‌پذیر خواهد بود. در این زمان ابزار Burp به‌صورت مرتب با سرور Collaborator‌ ارتباط برقرار می‌کند تا ببیند آیا هیچ‌کدام از Payloadهای ارسال شده، سبب ارسال بازخوردی از سمت برنامه‌ی در حال ارزیابی به Collaborator‌ شده‌ است یا خیر. این فرآیند در شکل زیر  نمایش داده شده است.

به‌طور کلی از سرویس Burp Collaborator می‌توان توسط Burp Scanner، Manual Burp Collaborator Client‌ یا Burp Extender API بهره‌برداری کرد.

سرویس Burp Collaborator چگونه کار می‌کند؟

همان‌گونه که در شکل بالا مشاهده می‌شود، Burp Collaborator به عنوان یک سرور مستقل اجرا می‌شود و پیاده‌سازی‌های دلخواهی از انواع سرویس‌های تحت شبکه را ارایه می‌دهد. برخی از این پیاده‌سازی‌ها عبارتند از:
  • Collaborator از نام دامنه‌ی مخصوص به خود استفاده کرده و به‌عنوان Authoritative DNS Server‌ برای این دامنه خاص، رجیستر می‌شود.
  • یک سرویس DNS‌ را اجرا کرده و به تمام درخواست‌های مربوط به دامنه یا زیردامنه‌های ثبت شده، با آدرس IP خود پاسخ می‌دهد.
  • سرویس HTTP/HTTPS‌ را اجرا کرده و از یک گواهینامه‌ی امضا شده‌ی معتبر یا گواهینامه‌ی Wildcard TLS نیز برای نام دامنه‌ی خود استفاده می‌کند.
  • سرویس SMTP/SMTPS را نیز ارایه دهد.
در ادامه چند مثال عملی از آسیب‌پذیری‌هایی که برای شناسایی آن‌ها به سرویس Burp Collaborator نیاز  می‌باشد، شرح داده شده است.

شناسایی بازخورد (Interaction) خارجی یک سرویس

مشکلات بازخورد خارجی یک سرویس متداول می‌تواند با فرآیند زیر شناسایی شود:
  • ابزار Burp یک Payload به برنامه‌ی در حال ارزیابی ارسال می‌کند و این Payload شامل یک آدرس URL از یک زیردامنه‌ی تصادفی از دامنه‌ی مورد استفاده‌ی سرور Burp Collaborator‌ است. برای مثال:

param=https://f294gchg2la...r9gf.burpcollaborator.net/

  • برنامه‌ی مورد نظر بر اساس رفتار برنامه‌ریزی شده‌ی خود، محتوای مورد درخواست را از آدرس URL‌ موجود در Payload دریافت می‌کند. برای این‌کار نیاز است تا ابتدا یک جستجوی DNS‌ برای زیردامنه‌ی تصادفی انجام داده و سپس درخواست HTTP‌ به سمت سرور بیرونی (یا همان Collaborator) ارسال کند.
  • از آن‌جایی که خود سرور Collaborator سرویس DNS‌ را ارایه می‌دهد لذا بسته‌ها‌ی جستجوی DNS‌ و به دنبال آن درخواست HTTP، هر دو به دست سرور Burp Collaborator می‌رسد. توجه داشته باشید که هر دو تعامل حاوی داده‌های تصادفی هستند که Burp آن را در زیردامنه‌ی Collaborator قرار داده بوده است و این داده‌ی تصادفی در واقع نقش شناسه (ID) را بازی می‌کند.
  • در این مرحله Burp از Collaborator می‌پرسد: «آیا هیچ تعاملی برای Payload من دریافت کرده‌ای؟» و Collaborator در پاسخ، جزییات بازخوردهای مربوط به آن Payload‌ را برای Burp ارسال می‌کند.
  • در نهایت Burp جزییات بازخورد دریافت شده (شامل تمام پیام‌های بازخوردی که توسط سرور Collaborator دریافت شده است) را به کاربر خود نمایش می‌دهد.

شناسایی آسیب‌پذیری Out-of-Band Resource Load

این آسیب‌پذیری زمانی رخ می‌دهد که با ارسال Payload به یک برنامه‌ی آسیب‌پذیر، بتوان آن را وادار کرد تا محتوایی را از یک منبع خارجی دلخواه دریافت کرده و آن را در پاسخ خود قرار دهد. نرم‌افزار Burp می‌تواند این آسیب‌پذیری را با وادار کردن سرور Collaborator‌ به ارایه‌ی یک داده‌ی خاص در پاسخ به تعاملات خارجی خود، شناسایی و همچنین پاسخ in-band‌ آن برنامه را برای همان داده‌ی مشابه دریافت و تحلیل کند. مثالی از این فرآیند در شکل زیر نمایش داده شده است.

شناسایی آسیب‌پذیری Blind SQL Injection

ابزار Burp این قابلیت را دارد که Payloadهایی بر پایه‌ی Injection برای یک برنامه‌ی تحت ارزیابی ارسال کند، به‌گونه‌ای که در صورت موفقیت‌آمیز بودن Injection، یک بازخورد خارجی  (ارسال بازخورد به Collaborator) در برنامه‌ی آسیب‌پذیر رخ دهد. به‌این ترتیب می‌توان آسیب‌پذیری‌های از نوع Blind Injection را به‌طور کامل شناسایی کرد. به عنوان مثال در شکل زیر از یک API‌ مربوط به Oracle استفاده شده است تا اگر Injection در یک عبارت SQL به صورت موفقیت آمیز رخ داد، برنامه را به یک بازخورد مشخص وادار کند و ادامه‌ی فرآیند نیز مشابه مثال‌های قبل خواهد بود.

شناسایی آسیب‌پذیری Blind Cross-Site Scripting

Collaborator‌ می‌تواند Burp را از بازخوردهای به تعویق افتاده (Deferred) که به صورت غیر هم‌زمان و به دنبال ارسال یک Payload مرتبط به هدف رخ می‌دهد، آگاه کند. به این‌ترتیب Burp قابلیت شناسایی انواع آسیب‌پذیری‌های از نوع ذخیره شده (Stored) مانند Second-Order SQL و Blind XSS را خواهد داشت. در مثال زیر، Burp یک Payload Stored XSS را به برنامه‌ی تحت ارزیابی ارسال می‌کند به‌گونه‌ای‌که اگر این XSS در سمت کاربر نهایی اجرا شود، یک بازخورد به سمت سرور Collaborator ارسال خواهد شد. همان‌گونه که در شکل زیر مشاهده می‌کنید، کمی بعد کاربر Admin صفحه‌ی حاوی XSS را می‌بیند و Browser‌ آن به‌صورت خودکار بازخوردی را به سرور Collaborator می‌فرستد. در ادامه‌ی این فرآیند، Burp از سرور Collaborator پرس‌وجو کرده و جزییات بازخورد را دریافت و در نهایت آسیب‌پذیری Stored XSS را گزارش می‌کند.

روش‌های بهره‌برداری از Burp Collaborator

کاربران از بین سه گزینه‌ی زیر، می‌توانند یک روش را برای استفاده از Burp Collaborator انتخاب کنند:
  • سرور عمومی Collaborator: سروری است که توسط شرکت PortSwigger ارایه شده و تمام کاربران Burp می‌توانند از آن استفاده کنند. از آن‌جایی که این سرور ممکن است خراب شده یا سرویس آن با اختلال ایجاد شود، شرکت PortSwigger هیچ ضمانتی در خصوص سطح دسترس‌پذیری یا کارایی آن به کاربران ارایه نمی‌دهد.
  • سرور خصوصی Collaborator: هر شخصی که لایسنس Burp Suite Professional را داشته باشد می‌تواند یک سرور Collaborator اختصاصی برای خود راه‌اندازی کند. برای این‌کار شما به یک سرور میزبان، یک دامنه اختصاصی و یک گواهینامه‌ی معتبر TLS‌ از نوع Wildcard نیاز دارید. بدون نام دامنه و گواهینامه‌ی TLS مناسب نیز می‌توانید از برخی قابلیت‌های Collaborator استفاده کنید اما تمام قابلیت‌های مرتبط با Collaborator در Burp قابل بهره‌برداری نخواهند بود. با راه‌اندازی سرور اختصاصی، با توجه به محل اهداف و کارشناسان تست نفوذ خود (به منظور امکان دریافت بازخوردها از سرور هدف و پرس‌وجوهای Burp) می‌توانید چندین کارت شبکه در آن تعریف کرده و انواع تنظیمات امنیتی و محدودیت‌های IP را در آن انجام دهید. گزینه‌ی سرور اختصاصی Collaborator برای شرکت‌های تست نفوذ، تیم‌های امنیت داخل سازمان و یا ارزیاب‌های امنیتی که در یک شبکه‌ی بسته بدون دسترسی به اینترنت کار می‌کنند گزینه مناسبی است.
  • بدون سرور Collaborator: شما می‌توانید Burp را به‌گونه‌ای پیکربندی کنید که از سرور Collaborator استفاده نکند. در این‌صورت هیچ‌کدام از امکانات مربوط به Collaborator در Burp قابل دسترس نخواهد بود.
در پایان یک نکته‌ی مهم این‌که استفاده از Collaborator‌ ممکن است مشکلاتی را به دنبال داشته باشد که کاربران Burp باید به آن توجه داشته باشند. کاربران باید اطمینان داشته باشند که از فرآیند عملکرد Collaborator و روش‌های جایگزین آن به خوبی آگاهی دارند و قبل از تصمیم‌گیری، مشکلات استفاده از Collaborator‌ را در نظر گرفته‌اند. پیکربندی مربوط به این سرویس در Burp Suite Professional را می‌توانید در بخش Burp Collaborator server options انجام دهید. منبع مقاله:

portswigger.net/burp/documentation/collaborator