VulnCity

Nuclei در عمل: اسکن هوشمند آسیب‌پذیری

نویسنده: یاسین عابدینی · دسته: Tools · تاریخ انتشار: ۱۴۰۵/۱/۳۱

شکارچی آسیب‌پذیری‌ها: آموزش جامع نصب و دستورات Nuclei (بخش اول)

مقدمه

ابزار Nuclei برای ارسال درخواست‌ها به سمت اهداف مختلف بر پایه یک «الگو» یا «تمپلیت» استفاده می‌شود. این رویکرد منجر به فراهم شدن امکان اسکن بسیار سریع روی تعداد وسیعی از هاست‌ها می‌گردد. Nuclei از اسکن پروتکل‌های متنوعی شامل TCP, DNS, HTTP, SSL, File, Whois, Websocket و Headless پشتیبانی می‌کند. با بهره‌گیری از سیستم تمپلیت‌نویسی قدرتمند و انعطاف‌پذیر، می‌توان انواع بررسی‌های امنیتی را با این ابزار مدل‌سازی کرد.

سوالات متداول (FAQ)

  • Nuclei چیست؟ یک اسکنر آسیب‌پذیری سریع و با قابلیت شخصی‌سازی بالا است که بر اساس تمپلیت‌های ساده‌ی مبتنی بر YAML کار می‌کند.
  • چه نوع اسکن‌هایی را می‌توان با Nuclei انجام داد؟ از این ابزار می‌توان برای شناسایی آسیب‌پذیری در برنامه‌های تحت وب، شبکه‌ها، پیکربندی‌های اشتباه مبتنی بر DNS و همچنین اسکن و یافتن Secretها در سورس‌کدها یا فایل‌های سیستم محلی استفاده کرد.

آموزش نصب Nuclei در لینوکس

برای نصب این ابزار، ابتدا باید زبان Go را نصب کنید و سپس پکیج Nuclei را دریافت نمایید. دستورات زیر را به ترتیب در ترمینال اجرا کنید:

۱. دانلود و استخراج Go

wget https://go.dev/dl/go1.20.7.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.20.7.linux-amd64.tar.gz

۲. تنظیم متغیرهای محیطی

echo 'export GOROOT=/usr/local/go' >> ~/.bashrc
echo 'export GOPATH=$HOME/go' >> ~/.bashrc
echo 'export PATH=$GOPATH/bin:$GOROOT/bin:$HOME/.local/bin:$PATH' >> ~/.bashrc

۳. اعمال تغییرات و نصب Nuclei

source ~/.bashrc # یا source ~/.zshrc
go install -v github.com/projectdiscovery/nuclei/v2/cmd/nuclei@latest

سینتکس و سوییچ‌های خط فرمان

برای استفاده حرفه‌ای از Nuclei، آشنایی با سوییچ‌های آن الزامی است. سوییچ‌های فیلتر می‌توانند با کاما جدا شوند (مثال: -tags cve,http):

  • -u : مشخص کردن یک دامنه هدف.
  • -l : دریافت لیستی از دامنه‌ها.
  • -t : مشخص کردن تمپلیت خاص.
  • -j : خروجی به فرمت JSON.
  • -o : ذخیره خروجی در یک فایل.
  • -rl : محدودیت نرخ درخواست (حداکثر درخواست در ثانیه).
  • -retries : تعداد دفعات تلاش مجدد برای یک درخواست ناموفق.
  • -as : اسکن خودکار وب با استفاده از تکنولوژی Wappalyzer برای مپ کردن تگ‌ها.
  • -validate : اعتبارسنجی تمپلیت‌های ارسال شده به Nuclei.
  • -silent : نمایش صرفاً یافته‌ها و آسیب‌پذیری‌ها.
  • -vv : نمایش تمپلیت‌های بارگذاری شده برای اسکن (حالت Verbose).
  • -H : افزودن هدر دلخواه (مانند User-Agent).
  • -tags : اسکن با تمپلیت‌های دارای یک تگ خاص.
  • -itags : شامل کردن تمپلیت‌ها بر اساس تگ (تنظیمات پیش‌فرض را بازنویسی می‌کند).
  • -etags : مستثنی کردن تمپلیت‌ها بر اساس تگ.
  • -author : اسکن با تمپلیت‌های یک نویسنده خاص.
  • -severity : اسکن بر اساس سطح خطر (info, low, medium, high, critical).
  • -pt : فیلتر بر اساس نوع پروتکل.
  • -nt : استفاده از تمپلیت‌های جدید.

مثال کاربردی از اجرای دستور Nuclei

nuclei -l domains.txt -t nuclei.yaml -vv -H "User-Agent: Mozilla/5.0 - CVD" -j -rl 1000 -o $(date --iso-8601)-nucleiscan.json

تحلیل دستور: این دستور دامنه‌ها را از فایل domains.txt می‌خواند، از تمپلیت nuclei.yaml استفاده کرده و تمپلیت‌های لود شده را نمایش می‌دهد. هدر User-Agent اختصاصی تنظیم شده و سرعت اسکن روی $1000$ درخواست در ثانیه محدود شده است. خروجی به فرمت JSON و با نام تاریخ روز (مثلاً $2023-07-21$-nucleiscan.json) ذخیره می‌شود.