zoukankan      html  css  js  c++  java
  • ASP.NET木马及Webshell安全解决方案(二)

    易破解的密码,并仅被授予有限的权限。ASPNET或NETWORK SERVICE用户只能访问运行Web应用程序所需的特定文件夹,如Web应用程序存储 已编译文件的\bin 目录。要将进程标识设置为特定用户名,以取代ASPNET或NETWORK SERVICE用户标识,您提供的用户名和密码都必须存储在machine.config 文件中。但是根据实际情况,asp.net的system.io可以无限制访问不设防的服务器路径。不知道这算不算一个ms的重大漏洞。而且根本不能使iis以machine.config的用户执行asp.net程序。

      四、如何解决呢?答案就是—应用程序池。

      IIS 6.0在被称为应用程序隔离模式(隔离模式)的两种不同操作模式下运行,它们是:工作进程隔离模式和IIS 5.0隔离模式。这两种模式都要依赖于HTTP.sys作为超文本传输协议(HTTP)侦听程序;然而,它们内部的工作原理是截然不同的。

      工作进程隔离模式利用IIS 6.0的重新设计的体系结构并且使用工作进程的核心组件。IIS 5.0隔离模式用于依赖IIS 5.0的特定功能和行为的应 用程序。该隔离模式由IIs5Isolation ModeEnabled配置数据库属性指定。

      您所选择的IIS应用程序隔离模式对性能、可*性、安全性和功能可用性都会产生影响。工作进程隔离模式是IIS 6.0操作的推荐模式,因为它为 应用程序提供了更可*的平台。工作进程隔离模式也提供了更高级别的安全性,因为运行在工作进程中的应用程序的默认标识为NetworkService。 以IIS 5.0隔离模式运行的应用程序的默认标识为LocalSystem,该标识允许访问并具有更改计算机上几乎所有资源的能力。

      IIS 功能 IIS 5.0隔离模式宿主/组件 工作进程隔离模式宿主/组件

      工作进程管理 N/A Svchost.exe/WWW 服务

      工作进程 N/A W3wp.exe/工作进程

      运行进程内ISAPI 扩展 Inetinfo.exe W3wp.exe

      运行进程外ISAPI 扩展 DLLHost.exe N/A(所有的 ISAPI 扩展都在进程内)

      运行ISAPI筛选器 Inetinfo.exe W3wp.exe

      HTTP.sys 配置 Svchost.exe/WWW 服务 Svchost.exe/WWW 服务

      HTTP 协议支持 Windows内核/HTTP.sys Windows 内核/HTTP.sys

      IIS配置数据库 Inetinfo.exe Inetinfo.exe

      FTP Inetinfo.exe Inetinfo.exe

      NNTP Inetinfo.exe Inetinfo.exe

      SMTP Inetinfo.exe Inetinfo.exe

      由此可见,我们只能使用工作进程隔离模式解决.net的安全问题。默认情况下,IIS 6.0在工作进程隔离模式下运行,在这种模式中,对于每一个Web应用,IIS 6.0都用一个独立的w3wp.exe的实例来运行它。w3wp.exe也称为工作进程(Worker Process),或W3Core。

      可*性和安全性。可*性的提高是因为一个Web应用的故障不会影响到其他Web应用,也不会影响http.sys,每一个Web应用由W3SVC单独地监视 其健康状况。安全性的提高是由于应用程序不再象IIS 5.0和IIS 4.0的进程内应用那样用System帐户运行,默认情况下,w3wp.exe的所有实例都在一个权限有限的“网络服务”帐户下运行,必要时,还可以将工作进程配置成用其他用户帐户运行。
    五、解决办法操作步骤:

      1、我们将每一个Asp.Net虚拟主机站点都分配一个独立的应用程序池,并赋予不同的权限。下面我就针对此来做一个示例:首先,我们为网站创建两个用户(一个是App_31896.net_User、密码为App_31896.net,一个是IUSR_31896.net_User、密码为IUSR_31896.net)

      2、依次打开"计算机管理器"→"系统管理工具"→"本地用户和组"→"用户",然后新增两个用App_31896.net_User与IUSR_31896.net_User密码分别为:App_31896.net与IUSR_31896.net。选择“用户不能更改密码”与“密码永不过期”,然后分别把App_31896.net_User添加到iis_wpg组,把IUSR_31896.net_User添加到Guests组。将用户赶出其它组成员。

      3、然后,打开IIS管理员器新建相应的应用程序池。依次打开Internet 信息服务→本地计算机→应用程序池→新建→应用程序池,新建一个名字为App_31896.net的应用程序池。

      4、编辑App_31896.net应用程序池的属性→标示→配置→用户名→浏览→把用户名改为我们刚才建立的App_31896.net_Use并输入相应的密码App_31896.net。

      5、然后再建立相应的网站。依次打开Internet 信息服务→本地计算机→网站→新建→31896.net的网站,目录为E:\Vhost\31896.net^_^→编辑31896.net网站的属性→主目录→应用程序池→App_31896.net →目录安全性→身份验证和访问控制→编辑,选择我们刚才建立的IUSR_31896.net_User,并输入相应的密码IUSR_31896.netr→保存并退出。

      6、最后设定IIS的站点目录权限Acls以及整个服务器系统的安全,这里就不再详细讨论,关于服务器的整体系统安全可以参考下本人的Win Server 2003服务器整体安全技术白皮书。(IIS站点权限参考《FSO安全隐患解决办法》与《ASP木马Webshell之安全防范解决办法》这两篇进行;关于IIS的运行权限请参考《IIS 6.0所需要的默认ACLs权限[即NTFS的硬盘权限]》此文进行)

      好了,我们已经简单的介绍了一下ASP.NET中关于文件IO系统的漏洞的防治方法,这一方法虽然有些繁琐,但是却可以从根本上杜绝一些漏洞,这里我们讨论的只是很少的一部分,更多的解决放法需要大家共同来探索、学习。当然如果你发现了更好的办法可别忘了告诉我哟^_^

      笔者后记:这里为大家介绍的仅仅是本人在处理ASP.NET木马、Webshell上的一些心得体会。在下一篇中将为大家介绍如何简简单单的对系统某些相应的服务进行降权处理,以防止溢出、提权等攻击、加强服务器系统的安全。其实服务器、系统的安全是个整体的概念;远远不止这些,可能你其中有一小点的疏忽就可以让你的网站、甚至服务器沦陷。因此安全策略必需走防患未然的道路,任何一个小地方都不能马虎、今天关于防Asp.Net安全隐患小技巧就为大家介绍到这里...
  • 相关阅读:
    使用EF进行简单的增删改查
    观察者模式(委托事件的小应用)
    lambda表达式和表达式树
    socket知识总结
    xml读写Demo
    winfrom DataGridView Demo
    6月26号.NET面试题(程序题部分)只要做懂这3道题肯定能脱离菜鸟称号!
    多线程与异步编程知识简单总结
    15年6月14号面试中没有回答出来的问题
    2020.5.15记一次阿里电话面试经历
  • 原文地址:https://www.cnblogs.com/xryyforver/p/1508856.html
Copyright © 2011-2022 走看看