加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 服务器 > 安全 > 正文

在.NET中隐藏带有只读Web途径的Web shell

发布时间:2022-08-25 15:54:10 所属栏目:安全 来源:互联网
导读:在最近一次渗透测试中,我发现了一个容易受到CVE-2020-1147 影响的SharePoint实例。我被要求在不运行任何命令的情况下构建Web Shell,以避免任何可能部署在主机上的EDR解决方案。 这篇文章说明了当我们存在代码执行漏洞但Web目录不可写时如何创建Web Shell,
  在最近一次渗透测试中,我发现了一个容易受到CVE-2020-1147 影响的SharePoint实例。我被要求在不运行任何命令的情况下构建Web Shell,以避免任何可能部署在主机上的EDR解决方案。 
 
  这篇文章说明了当我们存在代码执行漏洞但Web目录不可写时如何创建Web Shell,从理论上讲,我们应该能够执行此操作,因为我们的代码正在Web应用程序中执行,因此我想出了以下两种解决方案:
 
  使用C#创建功能全面的Web Shell
 
  尽管我很喜欢使用Web Shell,但是大多数功能强大的.NET都是HTML和C#代码的混合体。因此,清理它们以将其作为纯C#代码运行非常困难且耗时。我的解决方案是使用aspnet_compiler命令,以便从其临时编译文件中获取ASPX Web Shell的C#代码。
 
  另一个问题是,当我们想与嵌入式Web Shell进行交互时,当易受攻击的页面和Web Shell期望完全不同的HTTP请求时,我们可能需要利用我们的易受攻击的功能,这可能会导致冲突或根本不适用。因此,URL和正文中所有与Web Shell相关的参数以及HTTP动词,内容类型,Cookie和其他自定义标头都应以某种方式封装,以便在利用代码执行之后在服务器端重新创建。尽管自定义JavaScript代码可能能够处理某些封装任务,但是捕获HTTP请求的所有必需方面可能并不容易。因此,使用代理处理请求似乎是一种更好,更轻松的方法。例如,可以通过编写Burp Suite扩展程序来完成此操作,该扩展程序可以捕获对Web Shell的所有请求,这些请求最初是通过利用代码执行问题加载的。此扩展可以将Web Shell参数封装在HTTP请求的标头中,发送该HTTP请求以利用代码执行问题。使用标头可能会受到限制,尤其是当Web Shell请求包含较大的参数(例如正在上传文件时)时。但是,使用代理替换字符串可以保证可以在服务器端重新创建带有适当参数(例如HTTP正文、内容类型、HTTP动词和URL参数)的预期HTTP请求,以使Web Shell正常工作。应该注意的是,使HTTP请求中的只读参数(例如表单参数)可使用反射写入是相当容易的。另一件需要注意的重要事情是清除任何可能在运行web shell代码之前创建的HTTP响应,响应还需要在web shell执行后结束,以防止任何意外数据干扰来自web shell的预期响应。
 
  尽管这种技术看起来可行,但我还是没有使用它,因为它很复杂,而且每次操作都需要向服务器发送大量web请求,以减少潜在的检测风险。
 
  通过滥用.NET中的虚拟路径提供程序来创建虚拟文件(ghost文件)
 
  使用.NET,可以定义虚拟路径,以便为文件系统以外的其他存储源提供虚拟文件。此功能非常强大,因为它甚至可以用于替换尚未缓存或编译的现有文件。这意味着通过替换现有的.NET文件(例如.aspx,.svc,.ashx,.asmx等)来显示攻击者的预期内容,即使对于网络钓鱼或其他系统攻击也可以派上用场。 SharePoint本身使用类似的方法来创建ghost页面和未托管的页面!
 
  该解决方案对测试人员而言具有最小的复杂性,因为可以将Web Shell直接嵌入初始漏洞利用代码中。 YSoSerial.Net项目中的GhostWebShell.cs文件显示了我们创建的用于在易受攻击的Web应用程序上运行Web Shell的代码。
 
  为了使用此代码,可以对Web Shell文件的内容进行base-64编码并将其存储在webshellContentsBase64参数中。 webshellType参数包含Web Shell扩展,而targetVirtualPath参数包含将在服务器上创建的虚拟路径。除了这些参数外,其他参数可以保持不变,如果需要更多的自定义,代码中的注释就足够了。
 
  从.NET 4.5开始,Web应用程序可以使用友好的URL在指向ASPX页面时不使用URL中的“.aspx”,这可以阻止我们创建ghost web shell的方法。下面的解决方案可以为使用此功能的Web应用程序覆盖此设置。

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读