在最近一次渗透测试中,我发现了一个容易受到CVE-2020-1147 影响的SharePoint实例。我被要求在不运行任何命令的情况下构建Web Shell,以避免任何可能部署在主机上的EDR解决方案。由于目标SharePoint服务器以最小的特权在IUSR用户下运行,因此我们不能简单地通过利用反序列化漏洞(CVE-2020-1147)在Web目录中创建Web Shell。我记得以前在运行PowerShell命令时,攻击很容易被发现,所以需要更隐蔽的方法!
这篇文章说明了当我们存在代码执行漏洞但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和其他自定义标头都应以某种方式封装