TGViewer
Четыре луча Четыре луча @four_rays · 4.03K subscribers
Post #237 486
💣 Click2Shell

Click2Shell — это цепочка уязвимостей в WordPress, которая может привести к удаленному выполнению кода (RCE). Для успешной атаки злоумышленнику необходимо, чтобы авторизованный администратор открыл специально подготовленную ссылку.

1️⃣ Шаг первый: XSS
В ядре WordPress существует уязвимый участок кода:
self.view.collection.once( 'query:success', function() {
$( 'div[data-slug="' + slug + '"]' ).trigger( 'click' );
});

Этот код позволяет злоумышленнику инициировать установку произвольной темы. Важно, что тема устанавливается без активации и остается неактивной.
Параметр slug контролируется злоумышленником. Он получается из аргумента theme в запросе /wp-admin/theme-install.php?theme=THEME_SLUG.

Атакующий формирует ссылку вида:
/wp-admin/theme-install.php?theme=something_theme"]>>>*/*
Вставленная кавычка закрывает селектор атрибута. Дочерние комбинаторы переходят к возвращаемой карточке темы. Завершающий CSS-комментарий нейтрализует фрагмент селектора, который добавляет WordPress.
Затем злоумышленник передает эту ссылку администратору. После перехода по ссылке администратором селектор вместо выбора только карточки темы переходит к элементам управления действиями, включая настоящую кнопку «Установить». В результате срабатывает JavaScript-код WordPress, и тема устанавливается автоматически.

2️⃣ Шаг второй: установка произвольной темы
Важно, чтобы WordPress мог загрузить functions.php темы во время подготовки предварительного просмотра. Это дает коду темы возможность регистрировать хуки и обработчики, даже если база данных все еще идентифицирует другую тему как активную.
Далее нужно выбрать тему, имеющую уязвимость, которую можно поэксплуатировать, например через хуки. Чтобы код темы выполнился, злоумышленнику нужно заставить админа активировать или запустить предпросмотр установленной темы, например через CSRF, фишинг или другую XSS-уязвимость. В обнаруженных эксплойтах фигурирует тема Mobile Repair Zone 2.5.4.

Пример RCE можно наблюдать на скриншоте.

👀 Лаба
В лабораторной эмуляции есть небольшие сложности. Активная версия Mobile Repair Zone на сегодняшний момент 2.5.5. 
поэтому скачиваем:
wget https://downloads.wordpress.org/theme/mobile-repair-zone.2.5.4.zip
редактируем файл functions.php, так как даже в 2.5.4 есть защита от SSRF-атак, которая помешает сделать локальный запрос. 

Меняем:
function mobile_repair_zone_plugin_download($url, $path) {
    $response = wp_safe_remote_get( $url );

на:
function mobile_repair_zone_plugin_download($url, $path) {
    $response = wp_remote_get ( $url );

Загружаем плагин руками через webui или через консоль. Далее можно поднимать локальный HTTP и загружать zip-файл с shell-кодом.

✅ Как защищаться:
1. Обновление ядра WordPress.
2. Проверка недавно загруженных тем.
3. Проверка директорий на предмет появления подозрительных файлов.
4. Правила на IDS/WAF, блокирующие запросы с нетипичным slug-значением [^a-zA-Z0-9_-]+
  • 🔥 8
  • 🤔 2
  • ❤ 1
  • 😱 1
  • 👀 1
More from @four_rays
  1. Sep 14, 2026💣 Ржавый код: почему все переходят на Rust и когда аналитику можно его не реверсить Rust…
  2. Sep 11, 2026😳 DFIR diggin’ deeper: неочевидные источники артефактов при расследовании атак Когда стан…
  3. Sep 7, 2026😀 Call for Papers на технострим SOC Forum 2026 еще открыт! Темы: 1️⃣ Offense: актуальные…
  4. Aug 31, 2026☀️ Zimbra, все еще скрывающая боль Ранее мы уже рассказывали о расследовании «Zimbra, скры…
  5. Aug 19, 2026💡 Разберемся с непопулярными артефактами на OffZone 2026 Выбираете, какие выступления пос…
  6. Aug 17, 2026😀 Admin may cry CVE-2026-41452 — уязвимость, позволяющая перезаписать данные администрато…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →