2019测试指南-web应用程序安全测试(二)地图应用架构

互连和异构Web服务器基础架构的复杂性可包括数百个Web应用程序,并使配置管理和审查成为测试和部署每一个应用程序的基本步骤。实际上,只须要一个漏洞就能够破坏整个基础架构的安全性,即便是一些看似不重要的小问题也可能会演变成同一台服务器上另外一个应用程序的严重风险。html


要解决这些问题,最重要的是对配置和已知安全问题进行深刻审查。在进行深刻审查以前,有必要映射网络和应用程序架构。须要肯定构成基础架构的不一样元素,以了解它们如何与Web应用程序交互以及它们如何影响安全性。前端

 

 

如何测试

映射应用程序架构

须要经过一些测试来映射应用程序体系结构,以肯定用于构建Web应用程序的不一样组件。在小型设置中,例如简单的基于CGI的应用程序,可能使用单个服务器来运行执行C,Perl或Shell CGI应用程序的Web服务器,也可能使用身份验证机制。web


在更复杂的设置上,例如在线银行系统,可能涉及多个服务器。这些可能包括反向代理,前端Web服务器,应用程序服务器和数据库服务器或LDAP服务器。这些服务器中的每个都将用于不一样的目的,甚至可能分为不一样的网络,它们之间有防火墙。这将建立不一样的DMZ,以便对Web服务器的访问不会授予远程用户对身份验证机制的访问权限,从而能够隔离对体系结构的不一样元素的妥协,以便它们不会危及整个体系结构。算法


若是应用程序开发人员以文档形式或访谈方式向测试团队提供此类信息,则能够轻松获取应用程序体系结构的知识,但若是进行盲目渗透测试,也可能会很是困难。数据库


在后一种状况下,测试人员首先假设存在简单的设置(单个服务器)。而后,他们将从其余测试中检索信息并导出不一样的元素,质疑这个假设并扩展架构图。测试人员将首先提出简单的问题,例如:“是否存在保护Web服务器的防火墙系统?”。将根据针对Web服务器的网络扫描结果以及是否在网络边缘过滤Web服务器的网络端口(未收到应答或ICMP不可访问)或服务器是否为直接链接到Internet(即返回全部非侦听端口的RST数据包)。能够加强此分析以肯定基于网络数据包测试使用的防火墙类型。它是状态防火墙仍是路由器上的访问列表过滤器?它是如何配置的?能够绕过吗?后端


在Web服务器前检测反向代理须要经过分析Web服务器标题来完成,这可能直接披露反向代理的存在(例如,若是返回'WebSEAL'[1])。它还能够经过获取Web服务器给出的请求并将它们与预期答案进行比较来肯定。例如,一些反向代理经过阻止针对Web服务器的已知攻击来充当“入侵防护系统”(或网络屏蔽)。若是已知Web服务器使用404消息回答针对不可用页面的请求,并针对某些常见Web攻击(如CGI扫描程序所执行的那些)返回不一样的错误消息,它可能表示反向代理(或应用程序级防火墙)正在过滤请求并返回与预期不一样的错误页面。另外一个例子:若是Web服务器返回一组可用的HTTP方法(包括TRACE),但预期的方法返回错误,那么阻塞它们之间可能存在一些问题。缓存

在某些状况下,甚至保护系统都会让本身离开:安全

GET /web-console/ServerInfo.jsp%00 HTTP / 1.0 HTTP / 1.0 200 Pragma:没有缓存 缓存控制:无缓存 内容类型:text / html 内容长度:83 <TITLE>错误</ TITLE> <BODY> <H1>错误</ H1> XXXXXX的FW-1:拒绝访问。</ BODY> 


Check Point Firewall-1 NG AI的安全服务器示例“保护”Web服务器服务器

反向代理也能够做为代理缓存引入,以加速后端应用程序服务器的性能。能够基于服务器头来完成检测这些代理。它们也能够经过服务器应该缓存的计时请求来检测,并将服务第一个请求所花费的时间与后续请求进行比较。cookie


能够检测的另外一个元素是网络负载平衡器。一般,这些系统将基于不一样的算法(循环,Web服务器负载,请求数量等)将给定的TCP / IP端口平衡到多个服务器。所以,须要经过检查多个请求并比较结果以肯定请求是否转到相同或不一样的Web服务器来完成对该体系结构元素的检测。例如,若是服务器时钟未同步,则基于Date标头。在某些状况下,网络负载平衡过程可能会在标题中注入新信息,使其不同凡响,例如Nortel的Alteon WebSystems负载均衡器引入的AlteonP cookie。


应用程序Web服务器一般很容易检测到。对多个资源的请求由应用程序服务器自己(而不是Web服务器)处理,响应头将显着变化(包括答案​​头中的不一样或附加值)。另外一种检测方法是查看Web服务器是否尝试设置指示正在使用的应用程序Web服务器的cookie(例如某些J2EE服务器提供的JSESSIONID),或者自动重写URL以进行会话跟踪。


然而,身份验证后端(例如LDAP目录,关系数据库或RADIUS服务器)不容易从外部角度以直接方式检测,由于它们将被应用程序自己隐藏。


能够经过导航应用程序简单地肯定后端数据库的使用。若是“动态”生成高度动态的内容,则多是应用程序自己从某种数据库中提取的。有时,请求信息的方式可能会让人了解数据库后端的存在。例如,在浏览商店中的不一样文章时使用数字标识符('id')的在线购物应用程序。可是,在进行盲应用程序测试时,一般只有在应用程序中出现漏洞时才能得到底层数据库的知识,例如糟糕的异常处理或对SQL注入的敏感性。

相关文章
相关标签/搜索