🛡️ wp2shell-Hestia-Scanner
🇬🇧 English
|
🇬🇷 Ελληνικά

Сканер безопасности WordPress в режиме «только чтение» для серверов HestiaCP.
Обнаруживает индикаторы компрометации wp2shell на всех размещённых сайтах — с почтовыми отчётами по каждому клиенту, сравнением файлов ядра, обнаружением веб-шеллов по SHA256, оценкой риска и необязательной ИИ-оценкой.
⚠️ Безопасные версии: WordPress 6.8.6 / 6.9.5 / 7.0.2 или новее.
Эти скрипты никогда ничего не изменяют — режим «только чтение» на всём протяжении работы.
🇬🇧 English
Что такое wp2shell?
wp2shell — это цепочка удалённого выполнения кода (RCE) до аутентификации в ядре WordPress, раскрытая 17 июля 2026 года. Одного анонимного HTTP-запроса к стандартной установке достаточно, чтобы создать поддельного администратора и выполнить произвольный код на сервере.
Цепочка объединяет:
- CVE-2026-60137 — SQL-инъекция в параметре
author__not_in класса WP_Query
- CVE-2026-63030 — путаница маршрутов (route confusion) в REST API, конечная точка
/wp-json/batch/v1
На скомпрометированных сайтах появляется поддельный администратор с префиксом логина wp2_ и адресом @wp2shell.invalid.
Подробнее: https://wp2shell.com
Содержимое репозитория
| Файл | Назначение |
|---|
wp2shell-scan.sh | Быстрый сканер IoC по всему серверу — цветной вывод в терминал, оценка риска для каждого сайта, автоматическое сохранение отчёта в /root/ |
wp2shell-report-per-user.sh |
Что проверяет сканер
Проверки базы данных и пользователей
Целостность файлов ядра
| Проверка | Критичность |
|---|
wp core verify-checksums по сравнению с wp.org | HIGH |
Построчное diff -U5 со скачанным чистым ядром | CRITICAL / HIGH / OK |
| Лишние файлы, отсутствующие в чистом ядре (показываются содержимое и метаданные) | CRITICAL / HIGH |
Анализ файлов
Закрепление (persistence)
| Проверка | Критичность |
|---|
Записи в пользовательском crontab с curl/wget/php/base64 | HIGH |
| Системные cron-файлы, ссылающиеся на путь к сайту | MEDIUM |
Оценка риска
Каждый сайт получает оценку риска от 0 до 100 с разбивкой по каждому фактору, повлиявшему на результат:
+------------------------------------------+
| RISK SCORE: 96/100 COMPROMISED |
+------------------------------------------+
+40 wp2shell fingerprint account
+30 PHP file(s) inside uploads/
+20 Vulnerable WordPress version
+6 Core checksum failure
| Баллы | Метка |
|---|
| 0–20 | Probably Clean |
| 21–40 | Low Risk |
| 41–60 | Medium Risk |
| 61–80 |
Требования
- Linux-сервер под управлением HestiaCP
- bash 4.0+
- WP-CLI, установленный глобально как
wp
- доступ
root
sendmail (для почтовых отчётов)
python3 (для обработки JSON при ИИ-оценке)
curl, sha256sum, file, strings, unzip
Установка WP-CLI (если отсутствует)
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar && sudo mv wp-cli.phar /usr/local/bin/wp
Установка и запуск одной командой
Быстрое сканирование IoC
curl -fsSL https://raw.githubusercontent.com/BytesPulse-OE/wp2shell-Hestia-Scanner/main/wp2shell-scan.sh | sudo bash
Полное сканирование с почтовыми отчётами по каждому клиенту
curl -fsSL https://raw.githubusercontent.com/BytesPulse-OE/wp2shell-Hestia-Scanner/main/wp2shell-report-per-user.sh \
-o wp2shell-report-per-user.sh && sudo bash wp2shell-report-per-user.sh
Примечание: полный сканер при запуске задаёт интерактивные вопросы (ИИ-оценка, сохранение отчёта, порог по дате). Если сначала скачать скрипт, а затем запускать, все подсказки будут работать корректно.
Использование
wp2shell-scan.sh — быстрое сканирование всего сервера
sudo bash wp2shell-scan.sh
Находит все установки WordPress в /home/*/web/*/public_html/, выполняет все проверки, выводит цветной результат в терминал и сохраняет полный отчёт в /root/wp2shell-report-YYYYMMDD-HHMMSS.txt.
При запуске можно указать собственную пороговую дату (по умолчанию: 2026-07-15).
wp2shell-report-per-user.sh — полное сканирование с почтовыми отчётами
sudo bash wp2shell-report-per-user.sh
При запуске задаются три вопроса:
[AI EVALUATION] Use AI evaluation for ambiguous files? [y/N]
[SAVE REPORT] Save a full report file for later review? [y/N]
[DATE THRESHOLD] Use a different date? Leave blank to keep default [YYYY-MM-DD]:
Всегда начинайте с DRY_RUN=1 (значение по умолчанию) — письма показываются на экране в режиме предпросмотра, ничего не отправляется. Переключайтесь на DRY_RUN=0 только после того, как убедитесь, что вывод выглядит корректно.
Конфигурация
wp2shell-scan.sh
wp2shell-report-per-user.sh
ИИ-оценка (необязательно)
Для неоднозначных диффов, которые одними паттернами не классифицировать, сканер отправляет diff в Claude API (claude-sonnet-4-6) и возвращает вердикт: DANGER, SUSPICIOUS, REVIEW или OK с пояснением в одно предложение. ИИ используется только в серой зоне — однозначные случаи классифицируются мгновенно, без обращения к API.
Укажите свой ключ в скрипте или экспортируйте его перед запуском:
export ANTHROPIC_API_KEY='sk-ant-api03-...'
sudo -E bash wp2shell-report-per-user.sh
Ключи API: https://console.anthropic.com — они не входят в подписку claude.ai.
Нет ключа API? Воспользуйтесь анализатором в браузере
Вставьте вывод сканера в артефакт wp2shell Report Analyzer на Claude.ai — он выполнит ту же ИИ-оценку прямо в браузере, без необходимости в собственном ключе.
Формат вывода
Уровни критичности
Пример диффа ядра
┌─ MODIFIED: wp-includes/load.php
│ [CRITICAL] Assessment (patterns): executable/obfuscated pattern in added lines
│ +20 Core file modified with dangerous pattern
│
│ ORIGINAL: /root/wp2shell-cores/7.0.2-el/wp-includes/load.php
│ SITE: /home/user/web/example.gr/public_html/wp-includes/load.php
│ @@ -212,5 +212,6 @@
│ - $loaded = true;
│ + $loaded = true;
│ + eval(base64_decode('aGVsbG8='));
└──────────────────────────────────────
Примечания
- Сканер никогда ничего не изменяет. Безопасно запускать на работающих production-серверах.
- Обновление WordPress до исправленной версии закрывает уязвимость, но не очищает уже скомпрометированный сайт. Если обнаружены индикаторы, восстановите сайт из чистой резервной копии.
- Каталог
CORE_CACHE (/root/wp2shell-cores/) переиспользуется между сканированиями. Удалите его, чтобы принудительно выполнить повторную загрузку.
- База хешей
known_shells.sha256 автоматически обновляется раз в сутки.
Лицензия
GPL-3.0 — см. LICENSE
Авторы
Разработано BytesPulse в ответ на публикацию информации об уязвимости wp2shell (июль 2026).
Информация о CVE: https://wp2shell.com
🇬🇷 Ελληνικά
Что такое wp2shell?
wp2shell — это цепочка удалённого выполнения кода (RCE) в ядре WordPress, раскрытая 17 июля 2026 года. Одного анонимного HTTP-запроса к стандартной установке достаточно, чтобы создать администратора и выполнить произвольный код на сервере.
Цепочка объединяет:
- CVE-2026-60137 — SQL-инъекция в параметре
author__not_in класса WP_Query
- CVE-2026-63030 — путаница маршрутов (route confusion) в REST API
/wp-json/batch/v1
На скомпрометированных сайтах появляется учётная запись администратора с префиксом wp2_ и email @wp2shell.invalid.
Подробнее: https://wp2shell.com
Содержимое
| Файл | Назначение |
|---|
wp2shell-scan.sh | Быстрый сканер IoC — цветной вывод в терминал, оценка риска для каждого сайта, автоматическое сохранение отчёта в /root/ |
wp2shell-report-per-user.sh |
Что проверяет
База данных / пользователи
Целостность файлов ядра
| Проверка | Критичность |
|---|
wp core verify-checksums по сравнению с wp.org | HIGH |
Построчное diff -U5 с чистым ядром | CRITICAL / HIGH / OK |
| Лишние файлы, отсутствующие в чистом ядре | CRITICAL / HIGH |
Анализ файлов
Закрепление (persistence)
| Проверка | Критичность |
|---|
Crontab пользователя с curl/wget/php/base64 | HIGH |
| Системные cron-файлы, ссылающиеся на путь к сайту | MEDIUM |
Оценка риска
Каждый сайт получает оценку от 0 до 100 с разбивкой по каждому обнаруженному фактору:
+------------------------------------------+
| RISK SCORE: 96/100 COMPROMISED |
+------------------------------------------+
+40 wp2shell fingerprint account
+30 PHP file(s) inside uploads/
+20 Vulnerable WordPress version
+6 Core checksum failure
| Баллы | Категория |
|---|
| 0–20 | Probably Clean |
| 21–40 | Low Risk |
| 41–60 | Medium Risk |
|
Требования
- Linux-сервер с HestiaCP
- bash 4.0+
- WP-CLI, установленный как
wp
- Доступ
root
sendmail (для отправки email)
python3 (для ИИ-оценки)
curl, sha256sum, file, strings, unzip
Установка WP-CLI (если отсутствует)
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar && sudo mv wp-cli.phar /usr/local/bin/wp
Установка одной командой
Быстрый сканер IoC
curl -fsSL https://raw.githubusercontent.com/BytesPulse-OE/wp2shell-Hestia-Scanner/main/wp2shell-scan.sh | sudo bash
Полный сканер с email-отчётами
curl -fsSL https://raw.githubusercontent.com/BytesPulse-OE/wp2shell-Hestia-Scanner/main/wp2shell-report-per-user.sh \
-o wp2shell-report-per-user.sh && sudo bash wp2shell-report-per-user.sh
Использование
wp2shell-scan.sh
sudo bash wp2shell-scan.sh
Автоматически находит все установки WordPress в /home/*/web/*/public_html/, выполняет все проверки, выводит цветной результат в терминал и сохраняет полный отчёт в /root/.
wp2shell-report-per-user.sh
sudo bash wp2shell-report-per-user.sh
При запуске задаёт три вопроса:
[AI EVALUATION] Use AI evaluation for ambiguous files? [y/N]
[SAVE REPORT] Save a full report file for later review? [y/N]
[DATE THRESHOLD] Use a different date? Leave blank to keep default [YYYY-MM-DD]:
Всегда начинайте с DRY_RUN=1 (по умолчанию) — письма отображаются на экране и не отправляются. Переключайтесь на DRY_RUN=0 только после того, как убедитесь, что вывод корректен.
Настройки
wp2shell-scan.sh
wp2shell-report-per-user.sh
ИИ-оценка (необязательно)
Для неоднозначных диффов, которые невозможно классифицировать одними паттернами, сканер отправляет diff в Claude API (claude-sonnet-4-6) и возвращает вердикт: DANGER, SUSPICIOUS, REVIEW или OK с пояснением в одно предложение. ИИ используется только в серой зоне.
export ANTHROPIC_API_KEY='sk-ant-api03-...'
sudo -E bash wp2shell-report-per-user.sh
Ключи API: https://console.anthropic.com — отдельно от подписки claude.ai.
Нет ключа API? Используйте анализатор в браузере
Вставьте вывод сканера в артефакт wp2shell Report Analyzer на Claude.ai — он выполнит ту же ИИ-оценку прямо в браузере.
Примечания
- Сканер ничего не изменяет. Безопасен для запуска на работающих production-серверах.
- Обновление WordPress до исправленной версии закрывает уязвимость, но не очищает уже скомпрометированный сайт. Если обнаружены индикаторы, восстановите сайт из чистой резервной копии.
- Каталог
CORE_CACHE (/root/wp2shell-cores/) переиспользуется между сканированиями. Удалите его, чтобы принудительно выполнить повторную загрузку.
- База
known_shells.sha256 автоматически обновляется раз в 24 часа.
Лицензия
GPL-3.0 — см. LICENSE
Авторы
Разработано BytesPulse в ответ на публикацию информации об уязвимости wp2shell (июль 2026).
Информация о CVE: https://wp2shell.com