这篇文章是新OWASP测试指南v4的一部分
返回整篇测试指南的目录:
2b5K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2G2N6$3q4K6M7q4)9J5k6h3!0J5k6#2)9J5c8X3W2F1k6r3g2^5i4K6u0W2M7r3S2H3i4K6u0r3e0#2N6m8f1#2m8Q4y4h3k6f1k6i4y4@1K9h3&6Y4i4K6g2X3c8%4g2A6k6r3g2Q4y4h3k6$3y4q4)9#2k6W2c8S2j5X3I4W2i4K6g2X3L8$3k6Q4y4h3k6o6L8$3&6@1k6h3&6@1M7H3`.`.
返回整个测试指南项目:
d36K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2G2N6$3q4K6M7q4)9J5k6h3!0J5k6#2)9J5c8X3W2F1k6r3g2^5i4K6u0W2M7r3S2H3i4K6u0r3e0#2N6m8f1#2m8Q4y4h3k6f1k6i4y4@1K9h3&6Y4i4K6g2X3f1s2u0G2K9X3g2U0N6l9`.`.
目录:
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
[培训]科锐逆向工程师培训第53期2025年7月8日开班!