文档章节

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

猪鼻子插葱
 猪鼻子插葱
发布于 03/04 10:02
字数 1868
阅读 25
收藏 0

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


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

 

 

如何测试

映射应用程序架构

需要通过一些测试来映射应用程序体系结构,以确定用于构建Web应用程序的不同组件。在小型设置中,例如简单的基于CGI的应用程序,可能使用单个服务器来运行执行C,Perl或Shell CGI应用程序的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服务器

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


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


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


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


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

© 著作权归作者所有

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

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

猪鼻子插葱
03/04
54
0
2019测试指南-测试&测试原理

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

猪鼻子插葱
02/27
89
0
MyEclipse移动Web模拟器指南(二)

在移动Web模拟器指南(一)一文中,小编为大家介绍了如何启动Web模拟器、如何设置模拟器配置以及如何设置操作系统版本等内容。接下来,我们将介绍有关MyEclipse移动Web模拟器的更多内容,欢迎...

Miss_Hello_World
2015/06/18
160
0
2019测试指南-推导安全测试要求

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

猪鼻子插葱
03/04
12
0
2019测试指南-安全测试集成在开发和测试工作流程中

开发工作流程中的安全测试 SDLC开发阶段的安全测试代表了开发人员第一次有机会确保他们开发的各个软件组件在与其他组件集成并内置到应用程序之前进行了安全测试。软件组件可能包含软件工件,...

猪鼻子插葱
03/04
19
0

没有更多内容

加载失败,请刷新页面

加载更多

【TencentOS tiny】深度源码分析(4)——消息队列

消息队列 在前一篇文章中【TencentOS tiny学习】源码分析(3)——队列 我们描述了TencentOS tiny的队列实现,同时也点出了TencentOS tiny的队列是依赖于消息队列的,那么我们今天来看看消息...

杰杰1号
19分钟前
6
0
Hive

这就是那个 JAVA 类 package cn.itcast.bigdata;import java.util.HashMap;import org.apache.hadoop.hive.ql.exec.UDF;public class PhoneNbrToArea extends UDF{privat......

Garphy
19分钟前
6
0
Springboot开发,第二天

SpringBoot学习,第二天 目录:1、Springboot整合Listener 2、Springboot访问静态资源 3、异常处理 4、热部署 一、SpringBoot整合Listener 两种方式完成组件的注册 1、通过注解扫描完成组件的...

有一个小阿飞
23分钟前
7
0
BeginnersBook Perl 教程

来源:ApacheCN BeginnersBook 翻译项目 译者:飞龙 协议:CC BY-NC-SA 4.0 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 请您勇敢地去翻译和改进翻译。虽然我们追求卓越,但我们并...

ApacheCN_飞龙
35分钟前
5
0
我的Java秋招面经大合集

阿里面经 阿里中间件研发面经 蚂蚁金服研发面经 岗位是研发工程师,直接找蚂蚁金服的大佬进行内推。 我参与了阿里巴巴中间件部门的提前批面试,一共经历了四次面试,拿到了口头offer。 然后我...

Java技术江湖
40分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部