.net脚本安全设置

可能每个同学在日站时都会遇到上传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]” –>
<trust level=”Full” originUrl=””/>
</system.web>
如果将信任级别设置为“完全”,代码访问安全性停用,因为权限要求资源的访问不受阻碍。这是构建于 .NET Framework 1.0 版本之上的 Web 应用程序的唯一选项。参考下面从“完全”到“最低”的权限列表,每个级别都去掉了若干权限。通过逐步限制应用程序的权限,使之只能访问安全的资源并执行特权操作。每个级别都产生更大程度的应用程序隔离。图1显示了预定义信任级别,指出了与上一级别相比的主要限制。
图2 ASP.NET 信任级别的限制

锁定信任级别

如果 Web 服务器管理员希望通过代码访问安全性来确保应用程序隔离,并限制对系统资源的访问,管理员必须能在计算机级别上定义安全策略并阻止个人程序替代它。

应用程序服务提供商(或任何负责运行同一服务器各种 Web 应用程序的人)都必须锁定所有 Web 应用程序的信任级别。为此,请在 web.config文件的 <location> 标记中增加 <trust> 元素,将 allowOverride 属性设置为 false,如下例所示。
<location allowOverride=”false”>
<system.web>
<!– level=”[Full|High|Medium|Low|Minimal]” –>
<trust level=”Medium” originUrl=””/>
</system.web>
</location>
下面说说我自己的理解和我在虚拟机上做的测试。
要做设置的web.config文件存在于C:WINDOWSMicrosoft.NETFrameworkv2.0.50727CONFIG中
其中关键部分默认不修改是这样的
<securityPolicy>
<trustLevel name=”Full” policyFile=”internal” />
<trustLevel name=”High” policyFile=”web_hightrust.config” />
<trustLevel name=”Medium” policyFile=”web_mediumtrust.config” />
<trustLevel name=”Low” policyFile=”web_lowtrust.config” />
<trustLevel name=”Minimal” policyFile=”web_minimaltrust.config” />
</securityPolicy>
<trust level=”Full” originUrl=”” />
请注意trust level=”Full”,这里是关键,
Full即是完全权限,是系统默认设置,没有任何限制的权限,可执行aspx大马,功能没有限制。可使用aspx一句话连接。
High,代码访问权限为高,此时可以执行aspx大马,但功能遭到限制,无法执行命令、查看注册表、系统进程、系统服务 和使用IISSPY,一但执行以上操作,便出现图1这样的错误页面。使用菜刀对aspx一句话进行连接会出现以下错误

如果站点要支持aspx,也要配置权限来防止入侵,我们可以选择High。
Medium,权限配置为中,国内大部分虚拟主机是这样配置的,IIS中的应用程序配置中存在aspx映射,但无法执行任何aspx代码。这样就彻底的断绝了aspx代码的执行。
其他权限解释大家可以参考图1
相对来说,我们只要掌握以上3种权限的配置即可,配置完成后将web.config设置为只读,这样就保证了站点和服务器的网络安全

本文作者康斯坦丁由网络安全攻防研究室(www.91ri.org) 信息安全小组收集整理.