科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道ASP.NET木马及Webshell安全解决方案

ASP.NET木马及Webshell安全解决方案

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文介绍在MicrosoftWin系列的2003 SERVERIIS6.0中如何简单快速解决ASP.NET中的危险漏洞与隐患对WEB服务器系统的安全威胁之详细防范设置步骤;希望可以使您的网站服务器免去ASP.NET木马、Webshell所面对的提升权限、跨站攻击、甚至危害到系统安全的威胁。

作者:论坛整理 来源:zdnet网络安全 2008年2月26日

关键字: 杀毒软件 木马 反病毒 病毒防范 防病毒 病毒

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)

引子:大家都知道网上出现过诸如《asp.net虚拟主机的重大隐患》等类似介绍Asp.Net的漏洞以及相应的黑客攻击办法的文章,以及诸如Webadmin.aspx类Asp.Net的Webshell,如果您拿去到您的asp.net虚拟主机上测试时您就知道,这东东对C盘有读取权限,以及对整个硬盘都有 修改、删除权限;那这样的话,我们的网站、我的服务器还有什么安全可言?在黑客频频攻击的今天,我们不能不为我们的服务器而担忧...

漏洞原因:大家知道ASP中常用的标准组件:FileSystemObject,这个组件为ASP提供了强大的文件系统访问能力,可以对服务器硬盘上的任何有权限的目录 和文件进行读写、删除、改名等操作。FSO对象来自微软提供的脚本运行库scrrun.dll中。而在Asp.Net中这个问题仍然存在,并且更加难以解决;因为.Net中对系统IO操作功能更加强大,如:组件不再需要用Regsvr32来注册,而是直接在bin目录下就可以直接用了,所以这些功能对开发Asp.Net程序有很大方便是,但却使安全变得更为复杂了...

解决方案:

大家都知道,Asp类木马可以通过对IIS中的虚拟主机采用独立匿名用户来控制FSO组件的安全,让其只能在站类活动,而不能跨站或者危害到其它硬盘的数据,Asp的安全问题与设置这里不再作讨论,下面我们开始着手Asp.Net木马/WebShell防范方法的讲解:

一、在IIS6.0中,WEB应用程序的工作进程为以进程标识“Network Service”运行。而在IIS5.0中,进程外WEB应用程序则是以“IWAM_服务器名”用户运行行,这个User是普通的本地Guests用户。网上有部份人提出针对此问题用Microsoft .NET FrameworkConfigration设置System.io的对目录读取的权限,但很遗憾经过我们测试没有成功,可能是.net framework1.1机制改了?

Network Service 是Windows Server 2003中的内置帐户。了解IIS5.0上的本地用户帐户(IUSR和IWAM)与这个内置帐户之间的区别是非常重要的。Windows操作系统中的所有帐户都分配了一个SID(安全标识:Security ID)。服务器是根据 SID,而不是与SID相关的名称来识别服务器上所有帐户的,而我们在与用户界面进行交互时,则是使用名称进行交互的。服务器上创建的绝大部分帐户都是本地帐户,都具有一个唯一的 SID,用于标识此帐户隶属于该服务器用户数据库的成员。由于SID只是相对于服务器是唯一的,因此它在任何其他系统上无效。所以,如果您为本地帐户分配了针对某文件或文件夹的 NTFS 权限,然后将该文件及其权限复制到另一台计算机上时,目标计算机上并没有针对这个迁移SID的用户帐户,即使其上有一个同名帐户也是如此。这使得包含NTFS权限的内容复制可能出现问题。内置帐户是由操作系统创建的、一类较为特别的帐户 或组,例如System帐户、Network Service和Everyone 组。这些对象的重要特征之一就是,它们在所有系统上都拥有一个相同的、众所周知的SID。当将分配了NTFS权限的文件复制到内置帐户时,权限在服务器之间是有效的,因为内置帐户的SID在所有服务器上都是相同的。Windows Server 2003 服务中的 Network Service 帐户是特别设计的,专用于为应用程序提供访问网络的足够权限,而且在IIS 6.0中,无需提升权限即可运行Web 应用程序。这对于IIS安全性来说,是一个特大的消息,因为不存在缓冲溢出,怀有恶意的应用程序无法破译进程标识,或是对应用程序的攻击不能进入System用户环境。更为重要的一点是,再也不能形成针对System帐户的“后门”,例如,再也无法通InProcessIsapiApps元数据库项利用加载到Inetinfo的应用程序。我们已经简单的介绍了一下ASP.NET中关于文件IO系统的漏洞的防治方法,这一方法有些繁琐,但是却可以从根本上杜绝一些漏洞,我们讨论的只是很少的一部分,更多的解决放法需要大家共同来探索、学习。

Network Service帐户在创建时不仅仅考虑了在IIS6.0中的应用。它还具有进程标识W3WP.exe的绝大部分(并不是全部)权限。如同ASPNET用户为了运行ASP.net应用程序,需要具有IIS6.0服务器上某些位置的访问权限,进程标识 W3WP.exe 也需要具有类似位置的访问权限,而且还需要一些默认情况下没有指派给内置组的权限。

二、为了管理的方便,在安装IIS6.0时创建了"IIS_WPG"组(也称为IIS工作进程组,IIS Worker Process Group),而且它的成员包括Local System (本地系统)、Local Service(本地服务)、Network Service(网络服务)和IWAM帐户。IIS_WPG 的成员具有适当的NTFS的Acls权限和必要的用户权限,可以充当IIS 6.0中工作进程的进程标识。

三、因此,Network Service帐户提供了访问上述位置的权限,具有充当 IIS 6 工作进程的进程标识的充足权限,以及具有访问网络的权限。Msdn上说:在Windows Server 2003中,用户上下文称为NETWORK SERVICE。这些用户帐户是在 .NET Framework安装过程中创建的,它具有唯一的不易破解的密码,并仅被授予有限的权限。ASPNET或NETWORK SERVICE用户只能访问运行Web应用程序所需的特定文件夹,如Web应用程序存储 已编译文件的\bin 目录。要将进程标识设置为特定用户名,以取代ASPNET或NETWORK SERVICE用户标识,您提供的用户名和密码都必须存储在machine.config 文件中。但是根据实际情况,asp.net的system.io可以无限制访问不设防的服务器路径。不知道这算不算一个ms的重大漏洞。而且根本不能使iis以machine.config的用户执行asp.net程序。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章