目录
(通过各种线索和指标确定服务器所采用的技术)
1.1、提取版本信息
许多Web服务器公开与Web服务器软件本身和所安装组件有关的详细版本信息。
eg:HTTP Server消息头揭示大量与安装软件有关的信息
1.2、HTTP指纹识别
1、理论上,服务器返回的任何信息都可加以定制或进行有意伪造。
2、大多数应用程序服务器软件采取了防御措施,允许管理员配置在Server HTTP消息头中返回的旗标。
3、蓄意破坏的攻击者仍然可以利用Web服务器的其他行为确定其所使用的软件,或者至少缩小搜索范围。HTTP规范中包含许多可选或由执行者自行决定是否使用的内容。另外,许多Web服务器还以各种不同的方式违背或扩展该规范。因此, 除通过Server消息头判断外, 还可以使用其他方法来识别Web服务器(如工具Httprecon等)
1.3、文件扩展名
1、URL中使用的文件扩展名往往能够揭示应用程序执行相关功能所使用的平台或编程语言
asp——Microsoft Active Server Pages
aspx——Microsoft ASP.NET
jsp——Java Server Pages
cfm——Cold Fusion
php——PHP语言
d2w——WebSphere
pl——Pcrl语言
py——Python语言
dll——编译型本地代码(C或C++),
nsf或ntf——Lotus Domino
2、许多Web服务器将特殊的文件扩展名映射到特定的服务器端组件中。不同的组件处理错误的方式(包括请求不存在的内容)也各不相同
3、若公布的内容中不使用特定的文件扩展名, 能够确定服务器是否执行支持该扩展名的技术
eg:应用程序上安装有ASP.NET, 请求一个不存在的aspx文件将返回一个由ASP.NET框架生成的错误页面。但是, 请求一个扩展名不同的不存在的文件将返回一个由Web服务器生成的常规错误消息。
自动化内容查找,请求大量常见的文件扩展名,并迅速确定服务器是否执行了相关技术。
4、分析请求文件扩展名时生成的各种错误消息可以确定该文件扩展名映射是否存在。在某些情况下, 发现一个特殊的映射可能表示存在一个Web服务器漏洞。
eg:
IIS中的printer和.ida/.idq处理程序易于遭受缓冲区溢出攻击。
/0,, 1-1101,11.html
URL末尾用逗号分隔的数字通常由Vignette内容管理平台生成
1.4、目录名称
子目录名称常常表示应用程序使用了相关技术
servlet——Java servlet
pls——Oracle Application ServerPL/SQL网关
cfdocs或cfide——Cold Fusion
SilverStream——silverStream Web服务器
WebObjects或{function).woa——Apple WebObjects
rails——Ruby on Rails
1.5、会话令牌
许多Web服务器和Web应用程序平台默认生成的会话令牌名称也揭示其所使用技术的信息
JSESSIONID——java平台
ASPSESSIONID——Microsoft llS服务器
ASP.NET_sessionId——Microsoft ASP.NET
CFID/CFTOKEN——Cold Fusion
PHPSESSID——PHP
1.6、第三方代码组件
许多Web应用程序整合第三方代码组件执行常见的功能
eg:购物车、登录机制和公告牌等
1、这些组件可能为开源代码,或者从外部软件开发者购买而来,那么相同的组件会出现在因特网上的其他Web应用程序中,可以根据这些组件了解应用程序的功能。其他应用程序会利用相同组件的不同特性,确保攻击者能够确定目标应用程序的其他隐藏的行为和功能。
2、软件中可能包含其他地方已经揭示的某些已知漏洞,攻击者也可以下载并安装该组件, 对它的源代码进行分析或以受控的方式探查其中存在的缺陷