В українському сегменті Інтернету близько 80% сайтів створено на базі WordPress. Вона займає друге місце за популярністю серед усіх CMS. Поряд з цим це одна з найбільш атакованих систем. Щорічно зламуються сотні, а то й тисячі сайтів. Тому захисту WordPress необхідно приділяти якомога більше уваги. У цій статті я розкажу, як ефективно використовувати WPScan — один з найпотужніших інструментів для пошуку вразливостей у WordPress, та як з його допомогою забезпечити безпеку вашого сайту.
WPScan — це багатофункціональний кросплатформний інструмент безпеки, який включає консольний BlackBox-сканер вразливостей (WPScan CLI), плагін для CMS WordPress, базу даних вразливостей і API для інтеграції (безкоштовне / платне).
WPScan розроблений у 2011 році на мові програмування Ruby дослідником кібербезпеки Ryan Dewhurst, відомим під псевдонімом @ethicalhack3r. Йому також допомагали Erwan LR (@erwan_lr) та Christian Mehlmauer (@firefart).
Сьогодні проєкт підтримується та розвивається однойменною компанією “WPScan”, яка є частиною команди Automattic, що стоїть за розробкою WordPress.
Існує також форк WPScan – WPSeku, який має деякі додаткові можливості. Наприклад, з його допомогою можна аналізувати параметри URL і виявляти SQL/XSS/LFI вразливості. Фактично, ця утиліта є доповненням до існуючого функціоналу WPScan й може допомогти у пентестах.
Список функціональних можливостей WPScan:
Встановлення WPScan в ОС Ubuntu/Debian Linux:
sudo apt update && sudo apt upgrade sudo apt install git curl ruby ruby-dev build-essential libcurl4-openssl-dev libssl-dev zlib1g-dev sudo gem install wpscan wpscan --help
Встановлення WPScan в MacOS:
brew install wpscanteam/tap/wpscan sudo gem install wpscan wpscan --help
Встановлення WPScan в ОС Windows:
wsl --install wpscan --help
Встановлення WPScan через Docker:
docker pull wpscanteam/wpscan docker run -it --rm wpscanteam/wpscan --url http://example.com docker run -it --rm wpscanteam/wpscan --help
☝ WPScan попередньо встановлений в ряді пентестерських ОС, таких як: Kali Linux, SamuraiWTF, Pentoo, BlackArch.
Щоб WPScan міг отримувати дані про вразливості, необхідно вказати API-ключ через --api-token
або через файл конфігурації ~/.wpscan/scan.yml
. Якщо його немає, створіть вручну з наступним вмістом:
cli_options: api_token: 'YOUR_API_TOKEN'
Маркер API можна отримати, зареєструвавши обліковий запис на WPScan.com. Користувачу надається 25 безкоштовних лімітів API на день. Коли їх буде вичерпано, WPScan продовжить працювати, але тільки у звичайному режимі, без жодних даних про вразливості.
База даних WPScan знаходиться в ~/.wpscan/db
Перед початком роботи рекомендується оновити базу даних вразливостей WPScan, щоб інструмент працював із найсвіжішими даними: wpscan --update
wpscan --url https://example.com --enumerate u,ap,vt,tt,cb,dbe,m --random-user-agent
— комплексне сканування з режимом випадкового User-Agent браузера та енумерацією користувачів (u), плагінів (ap), тем (vt), timthumbs (tt), файлів конфігурації бекапів (cb), дампів баз даних (dbe), медіафайлів (m);wpscan --url http://example.com --enumerate u,ap,vt,tt,cb,dbe,m --random-user-agent | tee wpscan_log.txt
— комплексне сканування зі збереженням результатів виводу у файл;wpscan --stealthy --url https://example.com
— режим прихованого сканування;wpscan --url https://example.com --enumerate u --random-user-agent
— енумерація імен користувачів WordPress;wpscan --url http://example.com -e u --passwords /path/to/password_file.txt
— енумерація імен користувачів і брутфорс атака на них з підбором паролів, використовуючи словник;wpscan --url https://example.com --passwords ~/passwords.txt --usernames administrator --max-threads 50
— брутфорс атака на користувачів WordPress;wpscan --url https://example.com/ -U user.txt -P /usr/share/wordlists/rockyou.txt
— брутфорс атака на облікові записи користувачів WordPress, використовуючи список імен користувачів та паролів;wpscan --url https://example.com --plugins-detected agressive --random-user-agent
— агресивна енумерація плагінів WordPress;wpscan --url https://example.com --max-threads 1 --throttle 3000 -f cli-no-color --proxy socks5://127.0.0.1:8085
— сканування по одному потоку, затримка між кожним запитом буде 3 секунди, виведення результатів буде в текстовому форматі без кольорових елементів, усі запити проходитимуть через проксі-сервер SOCKS5;wpscan --url https://example.com --disable-tls-checks
— сканування без перевірки SSL/TLS;wpscan --url https://example.com/ --http-auth user:pass
— сканування сайту з увімкненою HTTP-преавторизацією, вказавши дані входу;wpscan --url http://example.com --force
— сканування сайту у примусовому режимі, навіть якщо WPScan не може визначити, що сайт працює на WordPress;wpscan --url http://example.com --wp-content-dir /custom-content/
— сканування вказаної директорії WordPress, якщо вона відрізняється від стандартної.Незалежні дослідники розробили та виклали на GitHub скрипт mass-wpscan, який дозволяє проводити масове сканування сайтів WordPress з допомогою WPScan.
Встановлення:
git clone https://github.com/l50/mass-wpscan cd mass-wpscan go mod init mass-wpscan go mod tidy go mod vendor make build make test
Запуск:
./mass-wpscan -i domains.txt -p "--enumerate u,ap,vt,cb,dbe,m --api-token *** --random-user-agent" -o outputmasscan.txt
WPWatcher — це інструмент командного рядка, створений сторонніми розробниками, який працює у зв’язці з WPScan. Він автоматизує процес сканування WordPress-сайтів на вразливості. Це дозволяє адміністраторам постійно стежити за безпекою багатьох сайтів одночасно без необхідності вручну запускати WPScan.
WPWatcher можна встановити як на локальній системі Linux, так і на VPS-сервері. Його особливістю є те, що сканування можна запланувати з допомогою планувальника cronjob, а також доставка email-сповіщень, яку можна налаштувати через сторонній SMTP-сервер (напр., скориставшись Mailgun). В якості бази даних вразливостей використовується WPVulnDB API.
Встановлення:
pip install -U 'wpwatcher'
Конфігурація:
cd ~/.wpwatcher nano wpwatcher.conf
Приклад конфігурації можна знайти тут.
Запуск:
wpwatcher --url example1.com example2.com
wpwatcher --url example1.com example2.com \
--wpscan_args "--force --stealthy --api-token <TOKEN>" \
--follow_redirect --api_limit_wait \
--send --infos --email_to you@office.ca me@office.ca
Запуск за рокладом:
# Will run at 00:00 on Mondays: 0 0 * * 1 wpwatcher --conf /path/to/wpwatcher.conf --wait > /dev/null
Чимало хакерів використовують WPScan не тільки для аудиту і тестування на проникнення, а й зловмисних цілей. Щоб захистити свій сайт на WordPress від сканування та потенційного злому з використанням цього інструмента слід впровадити усі необхідні заходи кібербезпеки.
WPScan використовує відкриті бази вразливості та інформацію, доступну через публічнодоступні файли та конфігурації, тому основна мета — обмежити доступ та приховати дані.
До прикладу, сканер WPScan дуже часто визначає плагіни WordPress та їх версії через загальнодоступні файли readme.txt. Ось скрипт, який вилучає всі readme файли з директоріїї вашого сайту:
sudo find /home/example.com/public_html -name "readme*" -exec rm -f {} \;
Ще поради:
Читайте чек-ліст: 20 порад як захистити сайт на WordPress
ПОДІЛИТИСЬ У СОЦМЕРЕЖАХ:
Заповніть, будь ласка, форму й наш спеціаліст зв’яжеться з Вами та надасть безкоштовну консультацію!
Вкажіть, будь ласка, контактний номер телефону. Наш менеджер миттєво зв’яжеться з Вами!