چگونه ابزارهای ProjectDiscovery ازجمله Nuclei را در Docker اجرا کنیم؟

از جمله محبوب ترین ابزارهای ProjectDiscovery می توان به Nuclei (اسکنر آسیب پذیری مبتنی بر قالب)، HTTPx (تولکیت HTTP چند منظوره) و Subfinder (ابزار کشف و پیمایش ساب دامین) اشاره کرد. اگر چه روند نصب ابزارهای ProjectDiscovery معمولاً بسیار سرراست است، با این حال برخی افراد ممکن است هنگام تنظیم یک محیط مناسب برای اجرای ابزار مربوطه، با دشواری مواجه شوند، به خصوص زمانی که قرار باشد ارزیابی بر روی VPS موقت یا سیستم مشتری انجام گیرد.

در چنین مواقعی است که اجرای ابزار در Docker معنی می یابد. Docker پلتفرم محبوبی است که از طریق متمرکز کردن همه موارد، روند توسعه، استقرار و مدیریت اپلیکیشن را ساده می کند. با اجرای ابزار ProjectDiscovery در Docker، روند راه اندازی ساده تر شده و قابلیت حمل ابزار افزایش می یابد.

پس از مطالعۀ این مقاله، قادر خواهید بود ابزار ProjectDiscovey را در Docker اجرا نمایید.

قبل از شیرجه زدن در بحث، ابتدا می بایست Docker را راه اندازی نماییم. بزن بریم!

راه اندازی Docker:

Docker، مشکل معروف «این ابزار فقط بر روی سیستم من کار می کند» را کاهش می دهد. Docker از طریق دسته بندی یک اپلیکیشن با محیط اجرایی خودش، رفتار ثابتی را در سیستم های مختلف تضمین می نماید. این مسئله به خصوص برای هانترهایی کاربردی است که می خواهند ابزارها را بدون درگیری با محیط محلی آن اجرا نمایند.

Docker بر روی تمامی سیستم عامل های مهم نظیر ویندوز، مک و لینوکس قابل استفاده است. افراد بر اساس ترجیح خود می توانند نسخۀ دسکتاپ یا خط فرمان Docker را نصب نمایند. راهنمای دقیق نصب Docker را می توانید در این لینک مشاهده نمایید.

پس از نصب Docker، با استفاده از دستور docker –version می توانید از راه اندازی و اجرای موفقیت آمیز Docker اطمینان حاصل نمایید.

اجرای Nuclei در Docker

راهنمای دقیقی از دستورات خط فرمان Docker و کاربرد آن ها را می توانید در این لینک مشاهده نمایید. حال که Docker را راه اندازی و اجرا نمودیم، بیایید ابزار ProjectDiscovery را اجرا نماییم.

نصب و اجرای ابزار ProjectDiscovery با استفاده از Docker

کانتینر Docker برای اکثر ابزارهای ProjectDiscovery از قبل برایتان ایجاد شده است. این مقاله، نگاهی به برخی از محبوب ترین ابزارها نظیر Nuclei، Subfinder و HTTPX خواهد داشت.

Nuclei:

نصب Nuclei با استفاده از Docker
  1. به منظور نصب Nuclei با استفاده از Docker، دستور docker pull projectdiscovery/nuclei:latest را اجرا نمایید:

  1. همانطور که مشاهده می کنید تصویر Nuclei با موفقیت دانلود شده است.
  2. به منظور مشاهدۀ تصویر، دستور docker image ls را اجرا نمایید.

اجرای Nuclei با استفاده از Docker:
  1. گام بعدی پس از دانلود تصویر، اجرای ابزار با استفاده از دستور docker run projectdiscovery/nuclei:latest –version است.
  2. همانطور که مشاهده می نمایید ابزار نسخه ای معتبر را برمی گرداند.

  1. حال از طریق دستور docker run projectdiscovery/nuclei:latest -u <target_url>، اسکنی را با استفاده از Nuclei اجرا نمایید.
  2. همانطور که مشاهده می کنید، Nuclei با موفقیت بر روی URL هدف روند اسکن را شروع نمود.

به همین طریق، هر شخصی می تواند تمامی دستورات Nuclei را اجرا نماید. راهنمای کامل دستورات مختلف Nuclei را می توانید از طریق این لینک مشاهده نمایید.

Subfinder

نصب Subfinder با استفاده از Docker
  1. به منظور نصب Subfinder با استفاده از Docker، دستور docker pull projectdiscovery/subfinder:latest را اجرا نمایید.
  2. همانطور که مشاهده می کنید تصویر Subfinder با موفقیت دانلود شده است.

  1. دستور docker image ls را به منظور مشاهدۀ تصویر اجرا نمایید.

اجرای Subfinder با استفاده از Docker
  1. پس از دانلود تصویر، به عنوان گام بعدی این ابزار را با استفاده از دستور docker run projectdiscovery/subfinder:latest –version اجرا نمایید.
  2. مشاهده می کنید که ابزار با موفقیت نسخۀ معتبری را در جواب برمی گرداند.

  1. حال برای اجرای یک اسکن با استفاده از Subfinder، دستور docker run projectdiscovery/subfinder:latest -d <target_url> را اجرا نمایید.
  2. همانطور که مشاهده می کنید اسکن Subfinder با موفقیت بر روی URL هدف آغاز گردید.

به همین روش هر شخصی می تواند تمامی دستورات Subfinder را اجرا نماید. راهنمای کامل دستورات مختلف Subfinder را می توانید از طریق این لینک مشاهده نمایید.

HTTPX

نصب HTTPX با استفاده از Docker
  1. به منظور نصب HTTPX با استفاده از Docker، دستور docker pull projectdiscovery/httpx:latest را اجرا نمایید.
  2. همانطور که مشاهده می کنید تصویر HTTPX با موفقیت دانلود شده است.

  1. دستور docker image ls را به منظور مشاهدۀ تصویر اجرا نمایید.

اجرای HTTPX با استفاده از Docker
  1. پس از دانلود تصویر، به عنوان گام بعدی این ابزار را با استفاده از دستور docker run projectdiscovery/httpx:latest –version اجرا نمایید.
  2. مشاهده می کنید که این ابزار با موفقیت نسخۀ معتبری را در جواب برمی گرداند.

  1. حال برای اجرای یک اسکن با استفاده از HTTPX، دستور cat subdomains.txt | docker run -i projectdiscovery/httpx:latest را اجرا نمایید.
  2. همانطور که مشاهده می کنید اسکن HTTPX با موفقیت بر روی URL هدف آغاز گردید.

به همین روش هر شخصی می تواند تمامی دستورات HTTPX را اجرا نماید. راهنمای کامل دستورات مختلف HTTPX را می توانید از طریق این لینک مشاهده نمایید.

ورودی و خروجی مابین Docker و سیستم میزبان

یکی از چالش های اساسی در حین اجرای Docker، وارد کردن فایل از سیستم میزبان به کانتینر Docker و به طور مشابه، خروجی گرفتن نتایج از کانتینر برای ذخیره سازی بر روی سیستم میزبان است. برای غلبه بر این چالش از mounting volumeهای مورد پشتیبانی Docker استفاده خواهیم کرد و به کانتینر اجازه می دهیم تا به صورت دو طرفه به دایرکتوری مشخص شده دسترسی داشته باشد، یعنی شما قادر باشید بین سیستم و کانتینر Docker، عملیات خواندن (ورودی) و نوشتن (خروجی) انجام دهید.

بیایید با دنبال کردن مراحل ذکر شدۀ زیر برای کانتینر Nuclei، نگاهی به فرآیند داشته باشیم.

  1. یک دایرکتوری در سیستم میزبان ایجاد نمایید (می توانید از دایرکتوری های موجود استفاده نمایید) تا برای ورودی و خروجی از آن استفاده کنید.
  2. یک لیست هدف یا فایل قالب Nuclei در دایرکتوری ایجاد کنید.
  3. در ادامه، دایرکتوری مذکور را با استفاده از دستور docker run -v /path/to/dir:/<container_dir> <image_name> <command> در کانتینر Docker قرار دهید.

مثال:

docker run -v $(pwd):/app/template projectdiscovery/nuclei:latest -u http://testphp.vulnweb.com/ -t /app/template/custom.yaml -v
  1. مشاهده می کنید که قالب ایجاد شده در دایرکتوری سیستم میزبان استفاده شده است.

  1. حال، دستور docker run -v /path/to/output:<container_dir> <image_name> را برای ذخیرۀ فایل خروجی روی دایرکتوری میزبان اجرا نمایید.

مثال:

docker run -v $(pwd):/app/template projectdiscovery/nuclei:latest -u http://testphp.vulnweb.com/ -t /app/template/custom.yaml -v -o /app/template/scan.txt
  1. مشاهده می کنید که فایل txt، در دایرکتوری docker_demo سیستم میزبان ایجاد شده است.

ساخت محلی با Dockerfile

Dockerfile یک سند متنی است که به Docker اجازه می دهد تا با خواندن دستورالعمل های موجود در فایل، تصاویر را به صورت اتوماتیک ایجاد نماید. این سند متنی حاوی تمامی دستوراتی است که کاربر عموماً برای کار کردن تصویر از آن استفاده می نماید. برای کسب اطلاعات کلی بیشتر در خصوص Dockerfile، بر روی این لینک کلیک نمایید.

در ادامه خواهیم دید که چگونه می توانید از Dockerfile ارائه شده توسط هر یک از ابزار ProjectDiscovery، به طور موثر برای اجرای محلی پروسۀ ساخت (build) استفاده نمایید.

بیایید با استفاده از مثالی از Subfinder، روند مربوطه را بهتر درک نماییم:

  1. ریپازیتوری گیت هاب Subfinder را بر روی سیستم محلی خود دانلود یا کلون نمایید.
  2. به دایرکتوری ریشۀ Subfinder رفته و از وجود Dockerfile با محتوای زیر در این مسیر اطمینان یابید:

  1. دستور docker build -t “<image_name>:Dockerfile” را برای ساخت تصویر با استفاده از Dockerfile اجرا نمایید.
  2. مشاهده می کنید که روند ساخت با موفقیت آغاز شده است.

  1. پس از تکمیل روند ساخت، دستور docker image ls را برای تایید وجود تصویر اجرا نمایید.

  1. برای استفاده از تصویری که جدیداً ایجاد شده، دستور docker run <image_name>:<tag> <command> را اجرا نمایید.

روند اجرای سایر ابزار ProjectDiscovery نیز تا حد زیادی به همین شکل است. استفاده از این ابزار در Docker، شما را از عذاب پیکربندی محیط محلی خود نجات خواهد داد. برای مثال، این مسئله به ویژه زمانی کارساز خواهد بود که بخواهید یک ارزیابی امنیتی روی ماشین راه دور یک مشتری انجام دهید یا ماشین های خود را در فواصل زمانی مختلف تغییر دهید.

نتیجه گیری:

اگر تاکنون از آزمایش Docker خودداری کرده اید – اکنون بهترین زمان برای کشیدن ماشه است. اگر اغلب روی سیستم های ناآشنا ابزار نصب می کنید، قطعاً عاشق جداسازی محیط و جریان کاری بهبود یافتۀ این محصول خواهید شد. Docker روند راه اندازی و استقرار شما را بهبود بخشیده و در نتیجه باعث می شود بر روی هانتینگ متمرکز شوید.

اگر علاقمند بودید تا فراتر از مطالب این وبلاگ از Docker استفاده کنید، بهترین نکتۀ شروع، بخش «شروع کار» مستندات Docker خواهد بود.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *