可能每个同学在日站时都会遇到上传aspx大马后无法执行或者在大马内执行cmd命令,和IISSPY时会出现错误信息。如:
图1]
相信很多人还不理解里面的原理。下面我来科普一下吧。
首先帖一些microsoft官方关于在ASP.NET中配置代码访问安全性的说明。
在默认情况下,Web应用程序按完全信任级别运行,且权限无限制。要修改ASP.NET中代码访问安全性的信任级别,必须在Machine.config或Web.config中设置一项参数,然后将应用程序配置为部分信任应用程序
配置信任级别
web.config中的<trust>元素控制了是否启用Web应用程序的代码访问安全性。打开web.config,搜索<trust>,您可看到下列内容。
<system.web>
<!–level=”[Full|High|Medium|Low|Minimal]”–>
<trustlevel=”Full”originUrl=””/>
</system.web>
如果将信任级别设置为“完全”,代码访问安全性停用,因为权限要求资源的访问不受阻碍。这是构建于.NETFramework1.0版本之上的Web应用程序的唯一选项。参考下面从“完全”到“最低”的权限列表,每个级别都去掉了若干权限。通过逐步限制应用程序的权限,使之只能访问安全的资源并执行特权操作。每个级别都产生更大程度的应用程序隔离。图1显示了预定义信任级别,指出了与上一级别相比的主要限制。
图2ASP.NET信任级别的限制
锁定信任级别
如果Web服务器管理员希望通过代码访问安全性来确保应用程序隔离,并限制对系统资源的访问,管理员必须能在计算机级别上定义安全策略并阻止个人程序替代它。
应用程序服务提供商(或任何负责运行同一服务器各种Web应用程序的人)都必须锁定所有Web应用程序的信任级别。为此,请在web.config文件的<location>标记中增加<trust>元素,将allowOverride属性设置为false,如下例所示。
<locationallowOverride=”false”>
<system.web>
<!–level=”[Full|High|Medium|Low|Minimal]”–>
<trustlevel=”Medium”originUrl=””/>
</system.web>
</location>
下面说说我自己的理解和我在虚拟机上做的测试。
要做设置的web.config文件存在于C:WINDOWSMicrosoft.NETFrameworkv2.0.50727CONFIG中
其中关键部分默认不修改是这样的
<securityPolicy>
<trustLevelname=”Full”policyFile=”internal”/>
<trustLevelname=”High”policyFile=”web_hightrust.config”/>
<trustLevelname=”Medium”policyFile=”web_mediumtrust.config”/>
<trustLevelname=”Low”policyFile=”web_lowtrust.config”/>
<trustLevelname=”Minimal”policyFile=”web_minimaltrust.config”/>
</securityPolicy>
<trustlevel=”Full”originUrl=””/>
请注意trustlevel=”Full”,这里是关键,
Full即是完全权限,是系统默认设置,没有任何限制的权限,可执行aspx大马,功能没有限制。可使用aspx一句话连接。
High,代码访问权限为高,此时可以执行aspx大马,但功能遭到限制,无法执行命令、查看注册表、系统进程、系统服务和使用IISSPY,一但执行以上操作,便出现图1这样的错误页面。使用菜刀对aspx一句话进行连接会出现以下错误
如果站点要支持aspx,也要配置权限来防止入侵,我们可以选择High。
Medium,权限配置为中,国内大部分虚拟主机是这样配置的,IIS中的应用程序配置中存在aspx映射,但无法执行任何aspx代码。这样就彻底的断绝了aspx代码的执行。
其他权限解释大家可以参考图1
相对来说,我们只要掌握以上3种权限的配置即可,配置完成后将web.config设置为只读,这样就保证了站点和服务器的网络安全。