这篇文章是新OWASP测试指南v4的一部分
返回整篇测试指南的目录:
https://www.owasp.org/index.php/OWASP_Testing_Guide_v4_Table_of_Contents
返回整个测试指南项目:
https://www.owasp.org/index.php/OWASP_Testing_Project
目录:
1 综述
2 测试目标
3 如何测试
3.1 黑盒测试
3.1.1 协议行为推断
4 测试工具
4.1 自动化测试工具
4.2 在线测试工具
5 参考资料
6 整改措施
综述
对于渗透测试人员来说,识别Web服务器是一项十分关键的任务。了解正在运行的服务器类型和版本能让测试者更好去
测试已知漏洞和大概的利用方法。
今天市场上存在着许多不同开发商不同版本的Web服务器。明确被测试的服务器类型能够有效帮助测试过程和决定测试
的流程。这些信息可以通过发送给web服务器测定命令,分析输出结果来推断出,因为不同版本的web服务器软件可能
对这些命令有着不同的响应。通过了解不同服务器对于不同命令的响应,并把这些信息保存在指纹数据库中,测试者可
以发送请求,分析响应,并与数据库中的已知签名相对比。请注意,由于不同版本的服务器对于同一个请求可能有同样
的响应,所以可能需要多个命令请求才能准确识别web服务器。十分罕见的,也有不同版本的服务器响应的请求毫无差
别。因此,通过发送不同的命令请求,测试者能增加猜测的准确度。
测试目标
发现运行的服务器的版本和类型,来决定已知漏洞和利用方式。
如何测试
黑盒测试
最简单也是最基本的方法来鉴别web服务器就是查看HTTP响应头中的"Server"字段。下面实验中我们使用Netcat:
考虑如下HTTP请求响应对:
从 Server 字段,我们可以发现服务器可能是Apache,版本1.3.3,运行在Linux系统上。
下面展示了4个其他服务器响应的例子。
Apache 1.3.23 服务器:
Microsoft IIS 5.0 服务器:
Netscape Enterprise 4.1 服务器:
SunONE 6.1 服务器:
但是,这种测试方法有时候并不准确。网站有多种方法混淆或者改变服务器的标识字段。例如我们可能得到如下结果:
在这个例子中,Server字段已经被混淆,测试者并不能从中得到服务器的信息。
协议行为推断
更好的方法是从web服务器的不同特征上入手。下面是一些推断web服务器类型的方法:
HTTP头字段顺序
第一个方法通过观察响应头的组织顺序。每个服务器都有一个内部的HTTP头排序方法,考虑如下例子:
Apache 1.3.23 响应
IIS 5.0 响应
Netscape Enterprise 4.1 响应
SunONE 6.1 响应
我们注意到 Date 和 Server 字段在Apache、Netscape Enterprise和IIS中有所区别。
畸形的请求测试
另一个有用测试是发送畸形的请求或者不存在的页面请求,考虑如下HTTP响应:
Apache 1.3.23
IIS 5.0
Netscape Enterprise 4.1
SunONE 6.1
我们发现每个服务器都有不同的应答方式,而且不同版本也有所不同响应。类似的结果也能通过构造不存在的HTTP方
法/谓词来获得。考虑如下例子:
Apache 1.3.23
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)