WPScan چیه و چطور با تست نفوذ حفره های امنیتی وردپرس رو پیدا کنیم؟
WPScan یه اسکنر امنیتی تخصصی برای وردپرسه که ازش برای پیدا کردن آسیبپذیری های قالب افزونه ها کاربران و تنظیمات ناامن استفاده میشه این ابزار توسط تیم WPScan نگهداری میشه و دیتابیس آسیب پذیری هاش مدام آپدیت میشه
WPScan دقیقا چیکار میکنه؟
اسکنر سه تا کار اصلی انجام میده:
اول: شناسایی نسخه ها
WPScan اول از همه میره سراغ اینکه بفهمه سایت از چه نسخه ای از وردپرس استفاده میکنه چه قالبی روش نصبه چه افزونه هایی فعال هستن و نسخه هرکدوم چیه این کار رو از طریق بررسی کد منبع صفحه فایل های CSS و JS مسیرهای پیش فرض و response header ها انجام میده
دوم: تطبیق با دیتابیس آسیب پذیری
بعد از شناسایی نسخه ها میره سراغ یه دیتابیس عظیم از آسیب ذیری های شناخته شده اگه قالبت یا افزونت یه باگ امنیتی داشته باشه که توی این دیتابیس ثبت شده باشه WPScan بهت میگه حتی شماره CVE و لینک مرجع رو هم نشون میده
سوم: تستهای عمومی
فارغ از نسخه ها یه سری تست عمومی هم انجام میده مثلا:
فایلهای حساس مثل wp-config.php.bak یا debug.log رو جستجو میکنه
XML-RPC فعاله یا نه
Directory Listing بازه یا نه
کاربران قابل شناسایی هستن یا نه
نصب و راه اندازی
WPScan روی کالی لینوکس به صورت پیشفرض نصبه. روی بقیه توزیعها با Ruby نصب میشه:
sudo apt install ruby ruby-dev libcurl4-openssl-dev make gcc sudo gem install wpscan
یه نکته مهم: WPScan برای استفاده از دیتابیس آسیب پذیری ها نیاز به API Key داره میتونی از سایت wpscan.com یه کلید رایگان بگیری که روزانه ۷۵ تا درخواست بهت میده برای سایت خودت این تعداد کاملا کافیه
wpscan --api-token YOUR_API_KEY --url https://example.com
کار با WPScan در عمل
یه اسکن ساده و پایه ای:
wpscan --url https://example.com
این دستور اطلاعات اولیه رو بهت میده ولی قدرت اصلی WPScan توی آپشن هاش هست
پیدا کردن افزونه های آسیب پذیر:
wpscan --url https://example.com --enumerate p
حرف p یعنی Plugins این دستور همه افزونه های قابل شناسایی رو لیست میکنه و کنار هرکدوم که آسیب پذیری داشته باشه جزئیات رو نشون میده
پیدا کردن قالب آسیب پذیر:
wpscan --url https://example.com --enumerate t
پیدا کردن کاربران:
wpscan --url https://example.com --enumerate u
این دستور username کاربران رو استخراج میکنه معمولا از طریق API وردپرس یا Author Archive این کار انجام میشه وقتی اسم کاربری رو داشته باشی مهاجم فقط یه پسورد لازم داره
اسکن کامل:
wpscan --url https://example.com --enumerate p,t,u --api-token YOUR_KEY
این دستور افزونهها، قالب و کاربران رو همزمان اسکن میکنه
آپشن های کمترشناخته شده ولی مفید
WPScan کلی آپشن داره که توی آموزش های سطحی ازش رد میشن:
Brute Force با WPScan:
wpscan --url https://example.com --passwords wordlist.txt --usernames admin
WPScan میتونه حمله Brute Force هم انجام بده البته برای این کار باید منصفانه بگم که Hydra یا Medusa سرعت بالاتری دارن ولی WPScan این قابلیت رو هم توی خودش داره
بررسی فایلهای حساس:
wpscan --url https://example.com --enumerate vt
حرف vt یعنی Vulnerable Timthumbs. TimThumb یه اسکریپت تغییر سایز عکس بود که توی قالب های قدیمی استفاده میشد و آسیب پذیری خطرناکی داشت
خروجی گرفتن برای گزارش:
wpscan --url https://example.com --enumerate p,t,u --api-token YOUR_KEY --format json --output scan-result.json
اگه برای مشتری یا مدیرت گزارش مینویسی خروجی JSON خیلی به درد میخوره
اسکن غیرفعال (Passive):
wpscan --url https://example.com --detection-mode passive
توی این حالت WPScan فقط از روی کد منبع و response headerها اطلاعات جمع میکنه و هیچ درخواست مخربی نمیفرسته مناسب وقتی که نمیخوای سایت رو اذیت کنی
اسکن تهاجمی (Aggressive):
wpscan --url https://example.com --detection-mode aggressive
همه راه های ممکن رو برای شناسایی امتحان میکنه شامل بررسی فایلهای خاص مسیرهای پیش فرض و حتی حدس زدن backup file ها
خطاهایی که ممکنه ببینی
خطای No API Token:
WPScan بدون API Key هم کار میکنه ولی دیتابیس آسیب پذیری ها رو نداره یعنی فقط میگه چه افزونه ای با چه ورژنی نصبه ولی نمیگه آسیب پذیره یا نه
خطای Timeout:
اگه سایت سنگین باشه یا CDN داشته باشه ممکنه اسکن Timeout بده. با --request-timeout 60 زمان رو بیشتر کن
خطای Access Denied:
بعضی سایت ها WAF دارن و WPScan رو بلاک میکنن. با --random-user-agent میتونی User-Agent رو تغییر بدی
خطای SSL:
اگه SSL سایت مشکل داشته باشه با --disable-tls-checks ادامه بده
WPScan فقط برای هکرها نیست
یه تصور اشتباه اینه که WPScan فقط برای تست نفوذ و هک استفاده میشه واقعیت اینه که مدیرای سایت میتونن ازش برای بررسی امنیت سایت خودشون استفاده کنن خیلی بهتره که خودت حفره های امنیتی رو پیدا کنی تا اینکه یه مهاجم پیداش کنه
چطور WPScan رو با ابزارهای دیگه ترکیب کنی
WPScan به تنهایی عالیه ولی توی یه تست نفوذ کامل معمولا با ابزارهای دیگه ترکیب میشه:
WPScan + sqlmap:
اول با WPScan افزونه های آسیبپذیر رو پیدا کن بعد با sqlmap برو سراغ اونایی که SQL Injection دارن
WPScan + Hydra:
با WPScan کاربران رو enumerate کن بعد با Hydra برو سراغ Brute Force
WPScan + Burp Suite:
WPScan اطلاعات کلی رو میده برای بررسی عمیقتر یه افزونه خاص باهاش توی Burp Suite کار کن
چند نکته که باید بدونید
WPScan نسخه CLI و Web داره نسخه CLI رایگانه نسخه Web روی سایت wpscan.com پولیه و API Key های حرفه ای تر میده
WPScan فقط وردپرس رو اسکن میکنه برای Joomla و Drupal ابزارهای دیگه مثل JoomScan و Droopescan هست
اگه WPScan چیزی پیدا نکرد دلیل نمیشه سایتت کاملا امنه این ابزار فقط آسیب پذیری های شناخته شده توی دیتابیس خودش رو چک میکنه