Web服务环境这个问题十分复杂,即使是很多拥有雄厚技术实力团队的企业也会马失前蹄,成为网络攻击的牺牲品。国内极为知名的某家电商企业在创立之初,就曾经受到黑客的攻击。不过这起事件背面的黑客并没有对“猎物”赶尽杀绝,只是在页面留下了“某某商城网管是个大傻瓜”的内容。其实这种事件并不少见,由于Web服务环境十分复杂,而且涉及大量的硬件和软件,其中任何一个环节出现问题,都有可能导致整个系统沦陷,因此想要保证Web服务环境的安全,必须树立十分全面的安全观,并在各个生产环节实施。
如果单从网络维护的角度来看待安全问题,难免会陷入“不识庐山真面目,只缘身在此山中”的境地,所以,在本章中,我们不妨切换到网络攻击者的视角,从这个角度来看看Web服务环境中都存在哪些容易遭受攻击的因素。
在大多数人眼中,Web服务是一个既复杂又简单的事物,说它复杂,是因为很少有人会了解其中运行的原理,说它简单,是因为在大多数人眼中,它就是如图1-1所示的一个过程。
图1-1 用户眼中的Web服务过程
在用户的眼中,一切都很简单,在整个网络中只有用户计算机和Web服务器存在。但是在一个技术娴熟的网络攻击者眼中,却并非如此,网络是由极其复杂和精细的海量设备共同组成,当用户通过计算机对Web服务器发起一次请求时,会有很多软件和硬件参与其中,它们都有可能成为攻击目标。例如,图1-2给出了网络攻击者眼中的Web服务器的组成部分。
图1-2 网络攻击者眼中的Web服务器组成部分
其中,可以将Web服务器分成四部分,分别是Web应用程序、语言解释器、Web服务器应用程序和操作系统。绝大多数情况下,没有Web服务建设者会自行开发操作系统、Web服务器应用程序这两部分,只能采用厂商提供的产品(例如操作系统选择CentOS,服务器选择Apache等)。Web服务建设者只是安装和部署这两部分,既不能详细获悉它们的内部机制,也无法对其进行本质改变,所以这里将它们归纳为外部环境因素。而Web应用程序则不同,大多数情况下,它要么是厂商定制开发,要么是单位自行开发,Web服务建设者除了部署之外,可以接触到代码,甚至可以对其进行改动,这里将语言解释器和Web应用程序归纳为内部代码因素。
但是,无论是外部环境因素还是内部代码因素都有可能带来极为严重的后果,例如获取了对Web应用程序的无限制访问权限、盗取了关键数据、中断了Web应用程序服务等。遗憾的是,大多数的Web应用程序在网络攻击者的眼中都是不安全的。接下来我们将了解如何使用Metasploit对Web服务环境进行渗透测试。