
PoC-эксплойт для CVE-2025-68999 - SQL-инъекция второго порядка в Happy Addons for Elementor <= 3.20.4
| CVSS | 8.5 HIGH |
| Затронуто | <= 3.20.4 |
| Исправлено | 3.20.6 |
| Мин. роль | Contributor (edit_posts) |
| Вектор | Сеть / Низкая сложность / Низкие привилегии |
duplicate_meta_entries() в classes/clone-handler.php копирует строки метаданных записи в клонированную запись с помощью собственной массовой вставки INSERT. Она безопасно получает строки через $wpdb->prepare(), но затем подставляет $entry->meta_key прямо в SQL-запрос без экранирования:
$_records[] = "( $duplicated_post_id, '{$entry->meta_key}', '{$_value}' )";
// ...
$wpdb->query( $query );
Поскольку meta_key приходит из базы данных, код считает его доверенным. Но пользователи с ролью Contributor могут задавать произвольные имена полей через панель «Произвольные поля» — так что они контролируют содержимое этого столбца.
Атака состоит из двух шагов:
add_post_meta() делает это безопасно — полезная нагрузка попадает в БД без выполнения каких-либо действий.duplicate_meta_entries() считывает ключ и конкатенирует его в необработанный INSERT. MySQL выполняет внедрённый подзапрос.Статический анализ пропускает это, потому что источник опасных данных — чтение из БД ($wpdb->get_results()), которое движки анализа потока данных (taint engines) помечают как очищенное. Граница хранилища разрывает цепочку заражения (taint chain).
Любой пользователь с ролью Contributor может извлечь:
wp_options (API-ключи, платёжные данные)На момент раскрытия уязвимости было затронуто более 400 000 активных установок.
pip install requests
python3 poc.py https://target.com contributor p4ss
Скрипт аутентифицируется по HTTP, сохраняет внедряемую полезную нагрузку как имя произвольного поля, запускает действие Happy Clone и считывает утёкший хэш из мета-полей клонированной записи. Результат сохраняется в hash.txt.
hashcat -m 400 hash.txt rockyou.txt
| Дата | Событие |
|---|---|
| Декабрь 2025 | Обнаружено через SVN diff. PoC подтверждён. |
| Декабрь 2025 | Сообщено в Patchstack Alliance вместе с полным разбором и PoC. |
| Январь 2026 | weDevs выпустили исправление в v3.20.6. |
| 23 января 2026 | Опубликован CVE-2025-68999. Назначен CVSS 8.5 HIGH. |
weDevs заменили всю самодельную INSERT-вставку на:
foreach ( $entries as $entry ) {
update_post_meta( $duplicated_post_id, $entry->meta_key, $entry->meta_value );
}
update_post_meta() внутри вызывает $wpdb->update() с подготовленными выражениями (prepared statements) как для ключа, так и для значения.