.NET HTTP代理隐蔽行为可能致 RCE 漏洞,微软拒绝修复
.NET应用存在非预期文件写入风险,HTTP客户端代理类处理非HTTP URL导致恶意代码写入任意文件,引发远程代码执行攻击。此漏洞影响多个产品如Barracuda、Ivanti等,微软不修复,需开发者防范。 2025-12-10 16:37:26 Author: www.freebuf.com(查看原文) 阅读量:1 收藏

漏洞概述:非预期文件写入风险潜伏于.NET应用

研究人员警告称,由于.NET的HTTP客户端代理类同时接受非HTTP URL,许多.NET应用程序可能面临任意文件写入风险。这种非预期行为需要开发者自行防范,但往往超出常规认知范畴。

微软雷德蒙德园区图片来源:微软

研究人员发现,当在.NET代码中创建HTTP客户端代理时,存在非预期行为,可能允许攻击者将恶意代码写入任意文件。这进而可在众多.NET应用程序(包括商业产品)中,通过Web Shell和恶意PowerShell脚本开辟远程代码执行(RCE)攻击路径。

微软表示不会在.NET Framework层面修复此问题,强调应用程序开发者应负责避免将不受信任及用户可控的URL传递给初始化HTTP客户端代理的代码类。

"具体影响取决于各应用程序如何使用代理类,但实际测试中我们几乎在所有调查产品中都实现了RCE。"安全公司watchTowr研究员Piotr Bazydło在报告中指出。他还在本周三的Black Hat Europe大会上发表了技术白皮书。

利用此.NET非预期行为,研究人员在Barracuda Service Center、Ivanti Endpoint Manager、Umbraco 8 CMS、Microsoft PowerShell和Microsoft SQL Server Integration Services中发现了RCE问题。但他认为更多产品和企业私有应用可能同样存在风险。

"当应用程序使用ServiceDescriptionImporter类从攻击者提供的WSDL文件生成HTTP客户端代理时,会产生最强大的利用路径。"他解释道,"仅此机制就成功利用了Barracuda、Ivanti、微软和Umbraco的产品,且仅需数日审查就能找到有效案例。"

技术原理:HTTP代理类竟能处理非HTTP协议

作为企业级应用最流行的编程框架之一,.NET Framework和ASP.NET中,当开发者需要应用程序通过HTTP与XML Web服务通信时,必须创建继承自内置HttpWebClientProtocol类的代理类。

该框架还提供三种代理类——SoapHttpClientProtocolHttpGetClientProtocolHttpPostClientProtocol,分别支持SOAP、HTTP-GET和HTTP-POST协议。其中允许在.NET应用中执行SOAP请求的SoapHttpClientProtocol尤为常用,因为SOAP是Web服务间通过HTTP交换XML格式消息的通用协议。

问题核心在于:虽然这些类名及其官方文档暗示它们仅用于HTTP通信,但Bazydło发现向这些代理类传递file://协议的URL时,系统会调用FileWebRequest处理器而非预期的HttpWebRequest

"等等,为什么SOAP代理需要能向本地文件'发送'SOAP请求?地球上没人会期待从文件系统获得有效SOAP响应。"他质疑道。

由于文档未提及这些类也支持FILE或FTP协议,且这不符合常规预期,多数开发者可能不知晓此行为,也未采取额外防范措施。

漏洞利用路径分析

虽然这种异常行为为利用创造条件,但并非必然导致漏洞。首先,攻击者需要能控制应用程序代码中传递给这些类的URL。尽管微软暗示这不应发生,但实际上许多应用开发者会在应用中暴露SOAP API端点,有时甚至不设身份验证。

Bazydło在流行企业远程监控管理(RMM)平台Barracuda Service Center中发现案例(现编号CVE-2025-34392,已在2025.1.1热修复中修补)。通过向受影响.NET应用的SOAP API端点传递任意URL,攻击者可触发NTLM质询泄漏。例如,指向攻击者控制SMB服务器的file://URL将导致系统以加密形式发送NTLM凭据,攻击者可尝试破解或用于NTLM中继攻击。

要实现更危险的本地任意文件写入,攻击者还需能控制发送给SOAP方法的参数,从而在写入磁盘控制路径的XML输出中插入任意字符串。这通常足以在漏洞应用服务器上写入CSHTML格式的Web Shell。

利用方式还包括Web服务描述语言(WSDL)导入。WSDL是Web服务用XML描述其功能和接口的语言,客户端应用解析WSDL文件可自动构建有效SOAP请求。.NET应用中通过ServiceDescriptionImporter类解析WSDL生成客户端SOAP代理是常见功能,但Bazydło发现该类不验证WSDL中的服务定义是否使用HTTP/HTTPS协议。

"总结而言,WSDL导入为HttpWebClientProtocol中的非法转换问题创造了极强利用路径。"他解释道,"若攻击者控制导入的WSDL,则同时掌控:允许代理与文件系统交互的目标URL、SOAP方法名、方法参数名及类型。"

这种情况不仅存在于Barracuda Service Center漏洞,也影响最流行的.NET内容管理系统之一Umbraco 8 CMS(已于2月停止支持)和Ivanti EPM。

"简而言之,.NET Framework允许其HTTP客户端代理被诱骗与文件系统交互。"watchTowr研究员总结道,"条件适当时,它们会愉快地将SOAP请求写入本地路径而非通过HTTP发送。最佳情况下导致NTLM中继或质询捕获,最坏情况下则通过Web Shell上传或PowerShell脚本投放实现远程代码执行。"

参考来源:

Hidden .NET HTTP proxy behavior can open RCE flaws in apps — a security issue Microsoft won’t fix


文章来源: https://www.freebuf.com/articles/461502.html
如有侵权请联系:admin#unsafe.sh