ASP.NET 安全策略

author:papaya@80sec.com
首先肯定的是ms有一套完整的“Code Access Security”如下。

默认情况下,.net的web application都继承“C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config” 配置文件,其中安全相关的有

[php]

<location allowOverride="true">
<system.web>
<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=""/>
</system.web>
</location>

[/php]

这里配置了策略可以被重写 allowOverride=true;
自带的几个策略级别及文件,
默认为FullTrust,而MS对fulltrust的说明是:“Therefore, the Full trust level is mapped to an internal handler andASP.NET does not add additional policy to the application domain for full-trust applications.”
也就是说在full模式下将不会使用任何额外的安全策略。附一张默认的权限列表,当然被重写后就另当别论。

到这里已经了解asp.net的shell危险性,防护工作也就简单了。在不伤害业务的情况下应当禁止重写安全策略,或者在适当的节点禁止下级重写安全策略。最终的工作是要配置安全策略,MS有详细的配置方法和文档在这里http://technet.microsoft.com/zh-cn/library/aa302424.aspx,如果你是个懒人可以直接设置为“<trust level=”High” originUrl=”"/>”或者更低,同时可以配合NT系统本身的FSO权限设置站点根目录的web.config为只读。

有几点要记住
0.FullTrust 是绝对危险的
1.切记要设置逻辑正确的策略,不要被攻击者用shell来重写策略文件。
2.从webshell里执行起来的exe不受asp.net的策略限制。
3.反射是个危险的方法
4.花点时间配置安全策略是一劳永逸的事情

还没有评论,快来抢沙发!

发表评论

  • 😉
  • 😐
  • 😡
  • 😈
  • 🙂
  • 😯
  • 🙁
  • 🙄
  • 😛
  • 😳
  • 😮
  • emoji-mrgree
  • 😆
  • 💡
  • 😀
  • 👿
  • 😥
  • 😎
  • ➡
  • 😕
  • ❓
  • ❗
  • 69 queries in 0.431 seconds