.NET Web配置解析WebShell (含工具视频)

2024-05-11 11:12

本文主要是介绍.NET Web配置解析WebShell (含工具视频),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

01WebPages配置项

在 .NET 应用程序中,"webpages:Enabled" 是一个用于启用或禁用 Web 页面功能的配置项。当它的值为 "true" 时,表示启用了 Web 页面功能,允许在应用程序中使用 .cshtml 或 .vbhtml 文件。而当它的值为 "false" 时,表示禁用了 Web 页面功能,应用程序将不支持直接解析.NET Web 页面。

<?xml version="1.0"?><configuration>  <appSettings>    <add key="webpages:Enabled" value="true"/>  </appSettings>
  <system.web>    <compilation debug="true" targetFramework="4.8"/>    <httpRuntime targetFramework="4.8"/>  </system.web></configuration>

这段配置通常出现在 .NET Web 应用程序的 Web.config 文件中.此文件中包含了 <appSettings> 节点,其中定义了一个名为 "webpages:Enabled" 的键,并将其值设置为 "true"。这样,.NET Web 应用在任意目录下均可以直接解析运行cshtml扩展名。

而.NET MVC 框架主流的模板文件cshtml基于Razor 视图引擎,Razor 视图是 MVC 框架中用于呈现 HTML 内容的一种方式,它具有灵活的语法和强大的功能,使开发者能够轻松地将 .NET 代码嵌入到 HTML 中,实现动态生成内容。

另外这段代码还包含了一些其他常见的配置,例如 <compilation> 和 <httpRuntime>,用于指定编译选项和运行时选项。这些配置项在 ASP.NET Web 应用程序中通常也会出现,并且可能会根据应用程序的需求进行调整。

因此在一些实战攻防的场景下有的站点开启了配置,也可以尝试上传cshtml获取webshell。

02相关阅读

到了.NET MVC 3.0时代,微软MVC框架为忠实的粉丝们提供了两种共存的视图引擎,WebForm Engine(.aspx)和 Razor Engine(.cshtml),默认情况下框架从现有 .NET Page页面、Master母版页 和ascx用户控件类型中继承的自定义类型作为视图,引擎的变化直接导致语法发生变化,aspx 中经常使用 <% %>这种代码样例,如果写这段代码的人没有良好的缩进和对齐习惯的话,一段逻辑较为复杂的代码就会堆砌着杂乱无章的<% %>匹配它们就是一件头疼的事情,会让读者望而生畏。而在cshtml中则改为@{ } 这种更为简洁的写法,"@"来标记一段C#代码,并帮我们进行了内部的闭合,并且支持与HTML混写,这种代码编程的风格让人感觉回到了经典的ASP时代, 它们之间的关系如下图

图片

目前只能在 MVC3 或更高版本等支持 Razor 的框架里使用 cshtml,@是Razor中的一个重要符号,它被定义为Razor服务器代码块的开始符号。例如视图中直接写C#代码输出日期

<p>@DateTime.Now.ToString()</p>

而且在Razor视图引擎中我们还可以使用@{code}来定义一段代码块,由于Razor支持代码混写,在代码块中插入HTML、在HTML中插入Razor语句都是可以的,代码如下

@{ var myMessage = "dotnet安全矩阵"; }<html><body>    <p>欢迎关注: @myMessage</p></body></html>

图片

03实战WebShell

cshtml视图引擎获取外部参数的方式主要有3种,第一种使用传统WebForm窗体的System.Web.HttpContext对象Request方法获取

System.Web.HttpContext.Current.Request["content"]

第二种使用System.Web.Mvc.WebViewPage类的属性HttpContextBase获取

@Context.Request["content"]

第三种还可以直接使用WebPageRenderingBase类定义的虚方法Request获取

Request["content"]

实现Webshell的代码不多,只是在@{}代码块里加上启动进程的功能即可,值传递的方式依旧采用base64编码,访问/ViewPage1.cshtml?content=dGFza2xpc3Q= 即可返回tasklist执行后的结果数据,demo如下

图片

有关工具已发表于星球,师傅们可自行查阅资料。

04视频深度讲解

为了更清晰的说明该配置项开启后带来的风险和危害,我们单独录制一个高清视频深度还原开启和关闭后不同的解析状态,这样更加便于学习和掌握。

图片

05.NET安全知识库学习

为了更清晰的说明该配置项开启后带来的风险和危害,我们为了更好地应对基于.NET技术栈的风险识别和未知威胁,dotNet安全矩阵星球从创建以来一直聚焦于.NET领域的安全攻防技术,定位于高质量安全攻防星球社区,也得到了许多师傅们的支持和信任,通过星球深度连接入圈的师傅们,一起推动.NET安全高质量的向前发展。只需199元就可以加入我们。

    目前dot.Net安全矩阵星球已成为中国.NET安全领域最知名、最活跃的技术知识库之一,从.NET Framework到.NET Core,从Web应用到PC端软件应用,无论您是初学者还是经验丰富的开发人员,都能在这里找到对应的安全指南和最佳实践。

    星球汇聚了各行业安全攻防技术大咖,并且每日分享.NET安全技术干货以及交流解答各类技术等问题,社区中发布很多高质量的.NET安全资源,可以说市面上很少见,都是干货。

图片

图片

图片

星球文化始终认为授人以鱼不如授人以渔!加入星球后可以跟星主和嘉宾们一对一提问交流,20+个专题栏目涵盖了点、线、面、体等知识面,助力师傅们快速成长!其中主题包括.NET Tricks、漏洞分析、内存马、代码审计、预编译、反序列化、webshell免杀、命令执行、C#工具库等等。

图片

    我们倾力打造专刊、视频等配套学习资源,循序渐进的方式引导加深安全攻防技术提高以及岗位内推等等服务。

图片

    我们还有一个会员专属的星球陪伴群,加入的成员可以通过在群里提出问题或参与论的方式来与其他成员交流思想和经验。此外还可以通过星球或者微信群私聊向我们进行提问,以获取帮助迅速解决问题。

图片

图片

这篇关于.NET Web配置解析WebShell (含工具视频)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/979368

相关文章

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

一文解析C#中的StringSplitOptions枚举

《一文解析C#中的StringSplitOptions枚举》StringSplitOptions是C#中的一个枚举类型,用于控制string.Split()方法分割字符串时的行为,核心作用是处理分割后... 目录C#的StringSplitOptions枚举1.StringSplitOptions枚举的常用

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

MyBatis延迟加载与多级缓存全解析

《MyBatis延迟加载与多级缓存全解析》文章介绍MyBatis的延迟加载与多级缓存机制,延迟加载按需加载关联数据提升性能,一级缓存会话级默认开启,二级缓存工厂级支持跨会话共享,增删改操作会清空对应缓... 目录MyBATis延迟加载策略一对多示例一对多示例MyBatis框架的缓存一级缓存二级缓存MyBat

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

mysql8.0.43使用InnoDB Cluster配置主从复制

《mysql8.0.43使用InnoDBCluster配置主从复制》本文主要介绍了mysql8.0.43使用InnoDBCluster配置主从复制,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录1、配置Hosts解析(所有服务器都要执行)2、安装mysql shell(所有服务器都要执行)3、

前端缓存策略的自解方案全解析

《前端缓存策略的自解方案全解析》缓存从来都是前端的一个痛点,很多前端搞不清楚缓存到底是何物,:本文主要介绍前端缓存的自解方案,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、为什么“清缓存”成了技术圈的梗二、先给缓存“把个脉”:浏览器到底缓存了谁?三、设计思路:把“发版”做成“自愈”四、代码

Vue3视频播放组件 vue3-video-play使用方式

《Vue3视频播放组件vue3-video-play使用方式》vue3-video-play是Vue3的视频播放组件,基于原生video标签开发,支持MP4和HLS流,提供全局/局部引入方式,可监听... 目录一、安装二、全局引入三、局部引入四、基本使用五、事件监听六、播放 HLS 流七、更多功能总结在 v