网站建设行业文章2
当前位置: 首页 -> 企业资讯 -> 行业文章 -> 突破星外asp.net安全模式
鸿大千秋新闻顶部侧栏



突破星外asp.net安全模式



我的这篇关于执行aspx大马时出现的错误信息原理的介绍发表后引来了不少同学的讨论,之后backerhack同学发表了突破asp.net配置文件web.config安全限制执行cmd在他的帖子里,起先我并不认同他的突破方法,因为他写的很模糊,没有具体实例,也没有写到突破的关键点和方法。关于他的观点,驱使我重新去全面的学习并研究ASP.NET 代码访问安全性。我重新去查找翻看了microsoft官方的ASP.NET 的安全配置管理和其他资料,经过在本地虚拟机和星外主机上反复测试,(IIS6.0+2003)然后总结出这篇文章。以后有同学碰到这种的情况可以参考此帖,也欢迎学习ASP.NET的同学回帖发表你们的看法。
学习ASP.NET的同学都知道ASP.NET程序在服务端执行的时会加载配置文件中的配置信息,然后再按照配置文件中各节点的设置去执行这些ASP.NET 程序。当程序要读取某个节点或者节点组信息时,是按照以下方式搜索的
1、如果在当前页面所在目录下存在web.config文件,查看是否存在所要查找的节点名称,如果存在返回结果并停止查找。

2、如果当前页面所在目录下不存在web.config文件或者web.config文件中不存在该节点名,则查找它的上级目录,直到网站的根目录。

3、如果网站根目录下不存在web.config文件或者web.config文件中不存在该节点名则在%windir%Microsoft.NETFrameworkv2.0.50727CONFIGweb.config文件中查找。

4、 如果在%windir%Microsoft.NETFrameworkv2.0.50727CONFIGweb.config文件中不存在相应节点,则在%windir%Microsoft.NETFrameworkv2.0.50727CONFIGmachine.config文件中查找。

5、如果仍然没有找到则返回null。
在microsoft官方《保证 ASP.NET 配置的安全》一文中有以下重要的一点:

配置系统在调用自定义配置节处理程序之前设置权限,而且 .NET Framework 无论如何都不会信任该调用。该调用使用应用程序的信任权限来运行。ASP.NET 配置系统信任 %SystemRoot%Microsoft.NETFrameworkversionCONFIG 目录,但是它不信任位于层次结构中较低级别的目录。

这就说明%SystemRoot%Microsoft.NETFrameworkversionCONFIG中的配置文件才是主要配置文件,其配置节点不会被web目录下的web.config中的影响。
并且microsoft官方提供了锁定 ASP.NET 配置设置的元素 <location allowOverride=”false”>(false为属性) 这个元素主要用于锁定配置设置以阻止应用程序级覆盖,以防止它们被子配置文件重写。如果尝试重写 false 配置节中的配置设置,则将引发配置系统错误.所以allowOverride被定义为false属性时,其他子配置文件对该节点的重写都将无效,并且引发配置系统错误。如下图:


(注意这个错误信息默认不会在客户端显示,只有在服务端执行时才会出现)
下面来说说大家最关心的星外主机asp.net安全模式,我查看了多个星外主机asp.net配置文件,发现其中很多在3月9号被重写并锁定.
注意:系统默认配置文件是可以被重写并且没有锁定关键节点

01 <location allowOverride=”true”> //关键节点可以被重写,没有被锁定。
02         <system.web>
03             <securityPolicy>
04                 <trustLevel name=”Full”policyFile=”internal”/> //无限制的权限。应用程序可访问任何属于操作系统安全范围的资源。支持所有的特权操作
05                 <trustLevel name=”High”policyFile=”web_hightrust.config”/> //不能调用未托管代码,不能调用服务组件。不能写入事件日志,不能访问 Microsoft 消息队列,不能访问 OLE DB 数据源                <trustLevel name=”Medium”policyFile=”web_mediumtrust.config”/> //除上述限制外,还限制访问当前应用程序目录中的文件,不允许访问注册表。
06                 <trustLevel name=”Low”policyFile=”web_lowtrust.config”/>  //除上述限制外,应用程序不能与 SQL Server 连接,代码不能调用 CodeAccessPermission.Assert(无断言安全权限)
07                 <trustLevel name=”Minimal”policyFile=”web_minimaltrust.config”/> //仅有执行权限。
08             </securityPolicy>
09             <trust level=”Full”originUrl=””/>
10         </system.web>
11     </location>

系统默认allowOverride=”true”,这时可以使用web目录中的子配置文件对该节点重写。
以下是星外主机asp.net配置文件关键节点:

01   <location allowOverride=”false”> //关键节点被锁定,其他子配置文件对该节点的重写都将无效
02     <system.web>
03       <securityPolicy>
04         <trustLevel name=”Full”policyFile=”internal”/>
05         <trustLevel name=”High”policyFile=”web_hightrust.config”/>
06         <trustLevel name=”Medium”policyFile=”web_mediumtrust.config”/>
07         <trustLevel name=”Low”policyFile=”web_lowtrust.config”/>
08         <trustLevel name=”Minimal”policyFile=”web_minimaltrust.config”/>
09       </securityPolicy>
10       <trust level=”Full”originUrl=””/>
11         <identity impersonate=”true”/>
12     </system.web>

也就是说对星外的asp.net安全模式暂时没有有效的突破方法,但不排除有其他个例。如allowOverride为”true”时,web目录中的对子配置文件该节点的重写是有效的,我们就可以重写配置来突破。
以下是突破代码。。
如果服务器开启net安全模式,站点结构为asp,allowOverride=为true属性时可在网站根目录写入以下内容的web.config文件。即可赋予web目录下执行的ASP.NET代码无限制的权限

<?xml version=”1.0″ encoding=”utf-8″?>

<configuration>

<location allowOverride=”false”>
        <system.web>
            <securityPolicy>
                <trustLevel name=”Full” policyFile=”internal”/>
            </securityPolicy>
            <trust level=”Full” originUrl=””/>
        </system.web>
    </location>

</configuration>

如果站点结构为ASP.NET,可在根目录下找到web.config文件,加入以下节点。(注意要先备分原文件,留个asp马,防止站点出错崩溃。)
<location allowOverride=”false”>
        <system.web>
            <securityPolicy>
                <trustLevel name=”Full” policyFile=”internal”/>
            </securityPolicy>
            <trust level=”Full” originUrl=””/>
        </system.web>
    </location>

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



鸿大千秋网站建设团队敬上






备案号:粤ICP备15078875号
Copyright © hongdaChiaki. All Rights Reserved. 鸿大千秋 版权所有


联系方式:
全国热线电话:400-6928-163
传真:0755-6165-8483
地址:深圳南山区粤海街道高新科技园中区科苑路科兴科学园B座3单元3B层
邮箱:service@hongdaqianqiu.com