文档章节

2019测试指南-web应用程序安全测试(二)指纹Web服务器

猪鼻子插葱
 猪鼻子插葱
发布于 03/04 09:52
字数 2586
阅读 13
收藏 1

Web服务器指纹识别是渗透测试仪的关键任务。了解正在运行的Web服务器的版本和类型允许测试人员确定已知的漏洞以及在测试期间使用的相应漏洞。


目前市场上有几种不同的供应商和Web服务器版本。了解正在测试的Web服务器的类型对测试过程有很大帮​​助,也可以改变测试过程。可以通过发送web服务器特定命令并分析输出来导出该信息,因为每个版本的web服务器软件可以对这些命令作出不同的响应。通过了解每种类型的Web服务器如何响应特定命令并将此信息保存在Web服务器指纹数据库中,渗透测试人员可以将这些命令发送到Web服务器,分析响应,并将其与已知签名的数据库进行比较。请注意,通常需要几个不同的命令来准确识别Web服务器,因为不同的版本可能会对同一命令做出类似的反应。很少有不同版本对所有HTTP命令作出相同的反应。因此,通过发送几个不同的命令,测试人员可以提高猜测的准确性。

 

测试目标

查找正在运行的Web服务器的版本和类型,以确定已知漏洞以及在测试期间使用的相应漏洞。

 

如何测试

黑盒测试

识别Web服务器的最简单和最基本的形式是查看HTTP响应头中的Server字段。Netcat用于此实验。


请考虑以下HTTP请求 - 响应:

$ nc 202.41.76.251 80
HEAD / HTTP / 1.0

HTTP / 1.1 200好的
日期:2003年6月16日星期一02:53:29 GMT
服务器:Apache / 1.3.3(Unix)(Red Hat / Linux)
最后修改时间:1998年10月7日星期三,格林威治标准时间11:18:14
ETag:“1813-49b-361b4df6”
Accept-Ranges:字节
内容长度:1179
连接:关闭
内容类型:text / html


Server字段中,可以理解服务器可能是Apache,版本1.3.3,在Linux操作系统上运行。

HTTP响应头的四个示例如下所示。

Apache 1.3.23服务器:

HTTP / 1.1 200好的 
日期:2003年6月15日星期日17:10:49 GMT 
服务器:Apache / 1.3.23 
最后修改:2003年2月27日星期四03:48:19 GMT 
ETag:32417-c4-3e5d8a83 
Accept-Ranges:字节 
内容长度:196 
连接:关闭 
内容类型:文本/ HTML 

Microsoft IIS 5.0服务器:

HTTP / 1.1 200好的 
服务器:Microsoft-IIS / 5.0 
到期:你的,2003年6月17日01:41:33 GMT 
日期:2003年6月16日星期一01:41:33格林尼治标准时间 
内容类型:文本/ HTML 
Accept-Ranges:字节 
最后修改时间:2003年5月28日星期三格林尼治标准时间15:32:21 
ETag:b0aac0542e25c31:89d 
内容长度:7369 

Netscape Enterprise 4.1服务器:

HTTP / 1.1 200好的 
服务器:Netscape-Enterprise / 4.1 
日期:星期一,2003年6月16日06:19:04 GMT 
内容类型:文本/ HTML 
最后修改日期:2002年7月31日星期三15:37:56 GMT 
内容长度:57 
接受范围:字节 
连接:关闭 

SunONE 6.1服务器:

HTTP / 1.1 200好的
服务器:Sun-ONE-Web-Server / 6.1
日期:2007年1月16日星期二14:53:45 GMT
内容长度:1186
内容类型:text / html
日期:2007年1月16日星期二14:50:31格林尼治标准时间
最后修改时间:2007年1月10日星期三09:58:26 GMT
Accept-Ranges:字节
连接:关闭


但是,这种测试方法的准确性有限。有几种技术允许网站对服务器横幅字符串进行模糊处理或修改。例如,可以获得以下答案:

403 HTTP / 1.1禁止 
日期:星期一,2003年6月16日02:41:27 GMT 
服务器:未知 -  Webserver / 1.0 
连接:关闭 
内容类型:文本/ HTML; 字符集= ISO-8859-1


在这种情况下,该响应的服务器字段被混淆。测试人员无法根据这些信息知道正在运行的Web服务器类型。

 

协议行为

更精细的技术考虑了市场上可用的几种网络服务器的各种特征。下面是一些允许测试人员推断出正在使用的Web服务器类型的方法列表。

HTTP头字段排序

第一种方法包括观察响应中几个头​​的排序。每个Web服务器都有标头的内部排序。以下面的答案为例:

来自Apache 1.3.23的回应

$ nc apache.example.com 80 
HEAD / HTTP / 1.0 

HTTP / 1.1 200好的 
日期:2003年6月15日星期日17:10:49 GMT 
服务器:Apache / 1.3.23 
最后修改:2003年2月27日星期四03:48:19 GMT 
ETag:32417-c4-3e5d8a83 
Accept-Ranges:字节 
内容长度:196 
连接:关闭 
内容类型:文本/ HTML 

来自IIS 5.0的响应

$ nc iis.example.com 80 
HEAD / HTTP / 1.0 

HTTP / 1.1 200好的 
服务器:Microsoft-IIS / 5.0 
内容位置:http://iis.example.com/Default.htm 
日期:1999年1月1日星期五20:13:52 GMT 
内容类型:文本/ HTML 
Accept-Ranges:字节 
最后修改时间:1999年1月1日星期五20:13:55 GMT 
ETag:W / e0d362a4c335be1:ae1 
内容长度:133 

来自Netscape Enterprise 4.1的回复

$ nc netscape.example.com 80 
HEAD / HTTP / 1.0 

HTTP / 1.1 200好的 
服务器:Netscape-Enterprise / 4.1 
日期:星期一,2003年6月16日06:01:40 GMT 
内容类型:文本/ HTML 
最后修改日期:2002年7月31日星期三15:37:56 GMT 
内容长度:57 
接受范围:字节 
连接:关闭 

响应来自SunONE 6.1

$ nc sunone.example.com 80 
HEAD / HTTP / 1.0

HTTP / 1.1 200好的
服务器:Sun-ONE-Web-Server / 6.1
日期:2007年1月16日星期二15:23:37 GMT
内容长度:0
内容类型:text / html
日期:2007年1月16日星期二,格林尼治标准时间15:20:26
最后修改时间:2007年1月10日星期三09:58:26 GMT
连接:关闭

我们可以注意到,Date,Netscape Enterprise和IIS之间的Date字段和Server字段的顺序不同。


格式错误的请求测试

另一个有用的执行测试包括将错误的请求或不存在的页面请求发送到服务器。请考虑以下HTTP响应。

来自Apache 1.3.23的回应

$ nc apache.example.com 80 
GET / HTTP / 3.0 

HTTP / 1.1 400错误请求 
日期:2003年6月15日星期日17:12:37 GMT 
服务器:Apache / 1.3.23 
连接:关闭 
转移:分块 
内容类型:文本/ HTML; 字符集= ISO-8859-1

来自IIS 5.0的响应

$ nc iis.example.com 80 
GET / HTTP / 3.0 

HTTP / 1.1 200好的 
服务器:Microsoft-IIS / 5.0 
内容位置:http://iis.example.com/Default.htm 
日期:1999年1月1日星期五20:14:02 GMT 
内容类型:文本/ HTML 
Accept-Ranges:字节 
最后修改时间:1999年1月1日星期五20:14:02 GMT 
ETag:W / e0d362a4c335be1:ae1 
内容长度:133 

来自Netscape Enterprise 4.1的回复

$ nc netscape.example.com 80 
GET / HTTP / 3.0 

不支持HTTP / 1.1 505 HTTP版本 
服务器:Netscape-Enterprise / 4.1 
日期:星期一,2003年6月16日06:04:04 GMT 
内容长度:140 
内容类型:文本/ HTML 
连接:关闭 

响应来自SunONE 6.1

$ nc sunone.example.com 80 
GET / HTTP / 3.0

HTTP / 1.1 400错误请求
服务器:Sun-ONE-Web-Server / 6.1
日期:2007年1月16日星期二15:25:00 GMT
内容长度:0
内容类型:text / html
连接:关闭


我们注意到每个服务器都以不同的方式回答。答案在服务器版本上也有所不同。我们可以使用不存在的HTTP方法/动词创建请求,从而可以进行类似的观察。请考虑以下回复:

来自Apache 1.3.23的回应

$ nc apache.example.com 80 
GET / JUNK / 1.0 

HTTP / 1.1 200好的 
日期:2003年6月15日星期日17:17:47 GMT 
服务器:Apache / 1.3.23 
最后修改:2003年2月27日星期四03:48:19 GMT 
ETag:32417-c4-3e5d8a83 
Accept-Ranges:字节 
内容长度:196 
连接:关闭 
内容类型:文本/ HTML 

来自IIS 5.0的响应

$ nc iis.example.com 80 
GET / JUNK / 1.0 

HTTP / 1.1 400错误请求 
服务器:Microsoft-IIS / 5.0 
日期:1999年1月1日星期五20:14:34 GMT 
内容类型:文本/ HTML 
内容长度:87 

来自Netscape Enterprise 4.1的回复

$ nc netscape.example.com 80 
GET / JUNK / 1.0 

<HTML> <HEAD> <TITLE>错误请求</ TITLE> </ HEAD> 
<BODY> <H1>错误请求</ H1> 
您的浏览器发送到查询此服务器无法理解。 
</ BODY> </ HTML> 

响应来自SunONE 6.1

$ nc sunone.example.com 80 
GET / JUNK / 1.0

<HTML> <HEAD> <TITLE>错误请求</ TITLE> </ HEAD>
<BODY> <H1>错误请求</ H1>
您的浏览器发送了此服务器无法理解的查询。
</ BODY> </ HTML>

 

工具

 

自动化测试

测试人员可以使用自动化工具来获得相同的结果,而不是依靠手动横幅抓取和分析Web服务器头。为了准确地指纹Web服务器,需要执行许多测试。幸运的是,有一些工具可以自动完成这些测试。“ httprint ”就是这样的工具之一。httprint使用签名字典,允许它识别正在使用的Web服务器的类型和版本。

运行httprint的示例如下所示:
 

Httprint.jpg

 

在线测试

如果测试人员希望更隐蔽地测试并且不希望直接连接到目标网站,则可以使用在线工具。Netcraft是一个在线工具的例子,它经常提供有关目标Web服务器的大量信息。使用此工具,我们可以检索有关操作系统,使用的Web服务器,服务器正常运行时间,Netblock所有者,与Web服务器和OS相关的更改历史记录
的信息示例如下所示: 

 

Netcraft2.png


OWASP Unmaskme项目有望成为另一个在线工具,可对任何网站进行指纹识别,并对所提取的所有Web元数据进行全面解释。这个项目背后的想法是,任何负责网站的人都可以测试网站向全世界展示的元数据,并从安全的角度对其进行评估。

 

© 著作权归作者所有

猪鼻子插葱
粉丝 1
博文 44
码字总数 172746
作品 0
崇明
高级程序员
私信 提问
2019测试指南-web应用程序安全测试(一)

什么是Web应用程序安全测试? 安全测试是通过有条不紊地验证和验证应用程序安全控制的有效性来评估计算机系统或网络的安全性的方法。Web应用程序安全性测试仅侧重于评估Web应用程序的安全性。...

猪鼻子插葱
03/04
54
0
2019测试指南-web应用程序安全测试(二)地图应用架构

互连和异构Web服务器基础架构的复杂性可包括数百个Web应用程序,并使配置管理和审查成为测试和部署每个应用程序的基本步骤。实际上,只需要一个漏洞就可以破坏整个基础架构的安全性,即使是一...

猪鼻子插葱
03/04
25
0
2019测试指南-推导安全测试要求

获得安全测试要求 要获得成功的测试程序,必须知道测试目标是什么。这些目标由安全要求指定。本节详细讨论了如何通过从适用的标准和法规以及正面和负面的应用程序要求中获取安全测试的要求来...

猪鼻子插葱
03/04
12
0
小型网站渗透常规思路之抛砖引玉

首先,我们知道 。当我们得到一个目标后,当然目标只是针对小型网站的一个思路,大型网站又是另外一个思路了。 信息收集 首先要做的就是信息收集,正所谓磨刀不误砍柴功。 以下引用owasp 渗透...

首席安全砖家
2015/04/13
2.5K
6
2019测试指南-测试&测试原理

什么是测试? 在Web应用程序的开发生命周期中,需要测试许多东西,但测试实际上意味着什么?Merriam-Webster Dictionary将测试描述为: 进行测试或证明。 进行测试。 根据测试分配站立或评估...

猪鼻子插葱
02/27
91
0

没有更多内容

加载失败,请刷新页面

加载更多

Centos6.6 安装ffmpeg视频工具

1.安装前置工具 yum -y install gcc cc cl libmpc*//后续失败的话,自己补充自己的缺少的包 2.安装yasm 1)下载wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz...

小海bug
20分钟前
4
0
电商的支付风控怎么玩?

qwfys
25分钟前
6
0
用什么来做用户行为分析?七个实用工具推荐给你

当企业进入数据化管理阶段之后,就不得不对用户进行行为数据分析,当然其他的包括用户画像、趋势分析等等,都是现在企业经常要进行的营销分析,因此选一个好的数据分析工具是很重要的。 而现...

朕想上头条
25分钟前
5
0
Java mysql连接

import java.sql.DriverManager; import java.sql.SQLException; import com.mysql.jdbc.Connection; public class T { public static void main(String[] args) throws SQLException, Insta......

林词
26分钟前
4
0
Select 选择器 的一些官网没有的用法

一、拼接字符串 <el-option v-for="(item, index) in reagentOptions" :key="index" :label="item.sjlxmc+' '+item.sjbm" :va......

沉迷代码我爱学习
27分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部