随著网际网路的不断发展,人们对网路的使用越来越频繁,通过网路进行购物、支付等其他业务操作。而一个潜在的问题是网路的安全性如何保证,一些黑客利用站点安全性的漏洞来窃取用户的信息,使用户的个人信息泄漏,所以站点的安全性变得很重要。

Web 系统的安全性测试包括以下内容:

(1)Web 漏洞扫描

(2)伺服器端信息测试

(3)文件和目录测试

(4)认证测试

(5)会话管理测试

(6)许可权管理测试

(7)文件上传下载测试

(8)信息泄漏测试

(9)输入数据测试

(10)跨站脚本攻击测试

(11)逻辑测试

(12)搜索引擎信息测试

(13)Web Service 测试

(14)其他测试

本章节先主要给大家介绍(1),(2)点

第一点:Web 漏洞扫描

由于开发和设计的原因,可能导致Web 系统存在漏洞,在测试过程中可以使用一些自动化扫描工具对Web 系统的漏洞进行扫描。但自动化扫描工具只能检测到部分常见的漏洞(如跨站脚本、SQL 注入等),不是针对用户代码的,也不能扫描业务逻辑,无法对这些漏洞做进一步业务上的判断。而往往最严重的安全问题并不是常见的漏洞,而是通过这些漏洞针对业务逻辑和应用的攻击。

Web 目前分为Application 和Web Service 两部分。Application 指通常意义上的Web 应用;而Web Service 是一种面向服务的架构技术,通过标准的Web 协议(如HTTP、XML、SOAP、WSDL)提供服务。

现在市场上Web 漏洞扫描的工具比较多,如WebInspect、N-Stalker、Acunetix Web Vulnerability Scanner、Rational AppScan 等。下面简单介绍Rational AppScan 工具的使用。

Rational AppScan 是专门面向Web 应用安全检测的自动化工具,是对Web 应用和Web Service进行自动化安全扫描的黑盒工具。它不但可以简化企业发现和修复Web 应用安全隐患的过程(这些工作以往都是由人工进行,成本相对较高,效率低下),还可以根据发现的安全隐患,提出针对性的修复建议,并能形成多种符合法规、行业标准的报告,方便相关人员全面了解企业应用的安全状况。

应用程序开发团队在项目交付前,可以利用Rational AppScan 对所开发的应用程序与服务进行安全缺陷的扫描,自动化检测Web 应用的安全漏洞,从网站开发的起始阶段就扫除Web 应用安全漏洞。

Rational AppScan 的工作流程如图12-5 所示

第二点:伺服器端信息测试

伺服器端信息测试主要是从伺服器对客户端开发的信息角度来测试伺服器被攻击的可能性,以及被攻击的难易程度。主要需要测试以下几方面的信息:

1、伺服器允许运行账号许可权测试

2、Web 伺服器埠测试

3、Web 伺服器版本信息测试

4、HTTP 方法测试

5、HTTP DELETE 方法测试

6、HTTP PUT 方法测试

7、HTTP TRACE 方法测试

8、HTTP MOVE 方法测试

9、HTTP COPY 方法测试

(1)伺服器允许运行账号许可权测试

一般地,运行Web 伺服器所在的操作系统所开放的账号许可权越高,那么Web 伺服器遭到攻击的可能性越大,并且产生的危害也越大。因此,不应使用Root、Administrator 等特权账号或高级别许可权的操作系统账号来运行Web 系统,应该尽可能地使用低级别许可权的操作系统账号,以此降低Web 伺服器被攻击的风险。

测试时登录Web 伺服器操作系统,查看运行Web 伺服器的操作系统账号,确定操作系统的账号是否为Root、Administrator 等特权账号或高级别许可权账号,如果是,则存在漏洞。

对于Windows 操作系统:打开Windows 任务管理器,选择「进程」选项卡,选中「显示所有用户的进程」复选框,检查运行Web 伺服器的账号。

对UNIX 或Linux 系统:运行「ps–ef|grep java」命令,返回结果第一列的操作系统用户就是运行Web 伺服器的账号。例如以下运行信息:

root 4035 4010 0 17:13 pts/2 00:00:00 grep java

(2)Web 伺服器埠测试

有时Web 伺服器除业务埠外还会开放一些默认埠(如JBoss 开放的8083),这些默认埠对最终用户是不需要开放的,而且也不会维护,容易被攻击,本测试的目的在于发现伺服器上未使用的Web 埠。

可以使用埠扫描工具对Web 伺服器域名或IP 地址(如IP 地址为192.168.1.103)进行扫描,检查未开放业务不需要使用的Web 服务埠。常用的埠扫描工具有NetScanTools、WinScan、SuperScan、NTOScanner、WUPS、NmapNT 和Winfingerprint。

以扫描工具SuperScan 3.00 为例,SuperScan 是一款基于TCP 协议的埠扫描器、Pinger 和主机名解析器。可以针对任意的IP 地址范围的Ping 和埠扫描,并且能同时扫描多个任意埠;解析和反向解析任意IP 地址或范围;使用内建编辑器修改埠列表及埠定义;使用用户自定义的应用程序与任何被发现打开的埠进行连接;查看被连接主机的回应;保存扫描列表到文本文件中。

在主界面中的IP 组的Start 文本框中输入开始的IP,在Stop 文本框中输入结束的IP,在Scantype 组中选择All list ports from 单选项,并指定扫描埠范围(1~65535),如图12-6 所示

单击Scan 组中的Start 按钮,就可以在选择的IP 地址段内扫描不同主机开放的埠。扫描完成后,选中扫描到的主机IP,单击Expand all 按钮会展开每台主机的详细扫描结果,如图12-7所示

(3)Web 伺服器版本信息测试

为了防止黑客攻击,在很多情况下,通过获取Banner 的信息可以获取HTTP 指纹识别方法。通常会将Web 伺服器的信息进行隐藏或者通过配置、增加插件来更改或模糊伺服器的Banner 信息。

HTTP 指纹识别现在已经成为应用程序安全中一个新兴的话题,指纹识别可以分为两步:一是对指纹进行收集和分类;二是将未知的指纹同被存储在资料库中的指纹进行比较,从而找出最符合的指纹。

操作系统指纹识别在网路评估中是一件常见的工作,现在已有很多操作系统指纹识别技术,操作系统指纹识别为什么能成功呢?因为每个操作系统实现TCP/IP 协议时有微小的差别,当前比较流行的是利用TCP/IP 堆栈进行操作系统识别。

HTTP 指纹识别的原理大致也是如此,记录不同伺服器对HTTP 协议执行中的微小差别进行识别,HTTP 指纹识别比TCP/IP 堆栈指纹识别复杂许多,因为定制HTTP 伺服器的配置文件、增加插件或组件使得更改HTTP 的响应信息变得更复杂。

在测试过程中可以使用一些工具进行渗透测试,来获取Web 伺服器的相关版本信息。Httprint就是一个Web 伺服器指纹工具,通过该工具可以对Web 伺服器进行渗透测试。尽管可以通过改变伺服器的旗帜字元串(server bannerstrings),或通过类似mod_security或servermask的插件混淆事实,但Httprint 工具依然可以依赖Web 伺服器的特点去准确地识别Web 伺服器。Httprint 也可用于检测没有伺服器旗帜字元串的网路功能设备,如无线接入点、路由器、交换机、电缆数据机等。

运行Httprint_gui.exe,在Host 列中输入主机域名(如果没有域名则输入IP 地址),在埠列中输入埠号。如果为HTTPS,则要选择锁图标列的复选框,如图12-8 所示

单击程序下方的运行按钮,查看相关报告,确定报告中是否存在Web 伺服器准确的版本信息,如图12-9 所示

(4)HTTP 方法测试

HTTP 方法测试主要是测试HTTP 开发的方法,有些Web 伺服器默认情况下开放了一些不必要的HTTP 方法(如DELETE、PUT、TRACE、MOVE、COPY),这样就增加了受攻击面。

HTTP 请求常见的方法有(所有的方法必须为大写):GET、POST、HEAD、PUT、DELETE、TRACE、CONNECT 和OPTIONS,详细见表12-7

HTTP 方法测试的步骤如下:

第一步:单击「开始」→「运行」命令,输入cmd 命令后按Enter 键,运行cmd.exe。

第二步:输入命令「telnet IP 埠」(其中IP 和埠按实际情况填写,用空格隔开,如telnet 192.168.1.3 80)。

第三步:按Enter 键。

第四步:在新行中输入命令OPTIONS /HTTP/1.1,然后按Enter 键。

第五步:观察返回结果中Allow 的方法列表。

返回结果样例:

http/1.1 200 OK

server: Apache-Coyote/1.1

X-Powered-By: Servlet 2.4; JBoss-4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)/Tomcat-5.5

Allow: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS

Content-Length: 0

Date: Mon, 29 Jun 2009 08:02:47 GMT

Connection: close

如果返回结果中包含不安全的HTTP 方法(如DELETE、PUT、TRACE、MOVE、COPY),

则验证对这些方法的防范措施是否可用,如果方法可用则说明存在漏洞,测试无法通过。

备注:由于不同的Web 伺服器支持的HTTP 协议版本不同,如果系统不支持HTTP/1.0,那么第四步返回「HTTP/1.0 400 Bad Request」,这种情况下,应该更改第四步的输入行为OPTIONS / HTTP/1.0。

(5)HTTP DELETE 方法测试

如果Web 伺服器开放了DELETE 方法,那么攻击者能够通过该方法删除Web 伺服器上的文件,所以需要测试通过DELETE 方法是否能将伺服器上的文件删除。DELETE 方法测试步骤如下:

在测试前先在Web 网站上创建一个文件(如test.txt)。

第一步:单击「开始」→「运行」命令,输入cmd 命令后按Enter 键,运行cmd.exe。

第二步:输入命令「telnet IP 埠」(其中IP 和埠按实际情况填写,用空格隔开,如telnet 192.168.1.3 80),并按Enter 键。

第三步:在新行中输入命令DELETE /test.txt HTTP/1.0,然后按Enter 键。

第四步:查看伺服器上的test.txt 文件是否被删除。

该文件不能被删除,如果被删除,说明Web 服务存在风险.

说明:由于不同的Web 伺服器支持的HTTP 协议版本不同,如果系统不支持HTTP/1.0,

那么第三步返回「HTTP/1.0 400 Bad Request」,这种情况下,应该更改第三步的输

入行为DELETE /index.jsp HTTP/1.1。

(6)HTTP PUT 方法测试

如果Web 伺服器开放了PUT 方法,那么攻击者能够通过该方法上传任意文件到Web 伺服器的一些目录中,包括一些Web 木马程序。测试时可以使用测试工具来模拟上传文件,对伺服器可写许可权进行测试。IIS PUT Scaner 为一款检测伺服器可写漏洞的工具,通过IIS PUT Scaner 工具检测的步骤如下:

第一步:运行IIS PUT Scaner 程序(假设已经安装该工具)。

第二步:在Start IP 和End IP 输入框中输入Web 伺服器的IP 地址,在Port 输入框中输入对应

的埠,选中复选框Try to upload file 和Try on other systems,如图12-10 所示

第三步:查看结果,PUT 栏中的值不能为YES,如果是且Update File 栏中的值为ok,说明文件可以被上传到伺服器。同时查看Web 伺服器中没有新创建的文件(如上传test.txt 文件),并且通过IP/test.txt请求不到该文件。

(7)HTTP TRACE 方法测试

如果Web 伺服器开放了TRACE 方法(主要用于客户端通过向Web 伺服器提交TRACE 请求来进行测试或获得诊断信息),攻击者能够通过该方法进行跨站攻击。

跨站脚本攻击(Cross Site Script Execution,XSS)是指入侵者在远程Web 页面的HTML 代码中插入具有恶意目的的数据,用户认为该页面是可信赖的,但是当浏览器下载该页面时,嵌入其中的脚本将被解释执行。由于HTML 语言允许使用脚本进行简单交互,入侵者便通过技术手段在某个页面里插入一个恶意HTML 代码,例如记录论坛保存的用户信息(Cookie),由于Cookie 保存了完整的用户名和密码资料,用户就会遭受安全损失。如JavaScript脚本语句aler(t document.cookie)就能轻易获取用户信息,它会弹出一个包含用户信息的消息框,入侵者运用脚本就能把用户信息发送到他们自己的记录页面中,稍作分析便可以获取用户的敏感信息。

HTTP TRACE 方法测试的步骤如下:

第一步:单击「开始」→「运行」命令,输入cmd 命令后Enter 车键,运行cmd.exe。

第二步:输入命令「telnet IP 埠」(其中IP 和埠按实际情况填写,用空格隔开,如telnet 192.168.1.3 80),然后按Enter 键。

第三步:在新行中输入TRACE/HTTP/1.0 命令,然后按Enter 键。

第四步:观察返回的结果信息,Web 伺服器返回的信息提示TRACE 方法「not allowed」。

备注:由于不同的Web 伺服器支持的HTTP 协议版本不同,如果系统不支持HTTP/1.0,

那么第三步返回「HTTP/1.0 400 Bad Request」,这种情况下,应该更改第三步的输

入行为TRACE / HTTP/1.1。

(8)HTTP MOVE 方法测试

如果Web 伺服器开放了MOVE 方法,用于请求伺服器将指定的页面移到另一个网路地址,该方法不安全,容易被利用。

HTTP MOVE 方法测试的步骤如下:

第一步:单击「开始」→「运行」命令,输入cmd 命令然后按Enter 键,运行cmd.exe。

第二步:输入命令「telnet IP 埠」(其中IP 和埠按实际情况填写,用空格隔开,如telnet 192.168.1.3 80),然后按Enter 键。

第三步:在新行中输入MOVE /info/b.html /b.html HTTP/1.0 命令,并按Enter 键。

第四步:观察返回的结果信息,Web 伺服器返回的信息提示MOVE 方法「not supported」。

备注:由于不同的Web 伺服器支持的HTTP 协议版本不同,如果系统不支持HTTP/1.0,那么第三步返回「HTTP/1.0 400 Bad Request」,这种情况下,应该更改第三步的输入行为MOVE /info/b.html /b.html HTTP/1.1。

(9)HTTP COPY 方法测试

如果Web 伺服器开放了COPY 方法,用于请求伺服器将指定的页面拷贝到另一个网路地址,该方法不安全,容易被利用。

HTTP COPY 方法测试的步骤如下:

第一步:单击「开始」→「运行」命令,输入cmd 命令后按Enter 键,运行cmd.exe。

第二步:输入命令「telnet IP 埠」(其中IP 和埠按实际情况填写,用空格隔开,如telnet 192.168.1.3 80),然后按Enter 键。

第三步:在新行中输入COPY /info/b.html /b.html HTTP/1.0 命令,然后按Enter 键。

第四步:观察返回的结果信息,Web 伺服器返回的信息提示COPY 方法「not supported」

备注:由于不同的Web 伺服器支持的HTTP 协议版本不同,如果系统不支持HTTP/1.0,那么第三步返回「HTTP/1.0 400 Bad Request」;这种情况下,应该更改第三步的输入行为COPY /info/b.html /b.html HTTP/1.1。


推荐阅读:
相关文章