文档章节

2019测试指南-web应用程序安全测试(二)识别应用程序入口点

猪鼻子插葱
 猪鼻子插葱
发布于 03/04 09:57
字数 1947
阅读 33
收藏 0

在进行任何全面测试之前,枚举应用程序及其攻击面是一个关键的前提,因为它允许测试人员识别可能的弱点区域。本节旨在帮助识别和绘制应用程序中应在枚举和映射完成后应进行调查的区域。

 

测试目标

了解请求的形成方式以及应用程序的典型响应

 

如何测试

在开始任何测试之前,测试人员应该始终充分了解应用程序以及用户和浏览器如何与之通信。当测试人员遍历应用程序时,他们应该特别注意所有HTTP请求(GET和POST方法,也称为Verbs),以及传递给应用程序的每个参数和表单字段。此外,他们应该注意何时使用GET请求以及何时使用POST请求将参数传递给应用程序。使用GET请求是很常见的,但是当传递敏感信息时,它通常在POST请求的主体内完成。


请注意,要查看POST请求中发送的参数,测试人员需要使用拦截代理(例如,OWASP:Zed攻击代理(ZAP))或浏览器插件等工具。在POST请求中,测试人员还应特别注意传递给应用程序的任何隐藏表单字段,因为这些字段通常包含敏感信息,例如状态信息,项目数量,项目价格,开发人员从不供您查看或更改。


根据作者的经验,在此阶段的测试中使用拦截代理和电子表格非常有用。代理将跟踪测试人员和应用程序之间的每个请求和响应。此外,此时,测试人员通常会捕获每个请求和响应,以便他们可以准确地查看传递给应用程序的每个标头,参数等以及返回的内容。这有时可能非常繁琐,特别是在大型互动网站上(想想银行应用程序)。但是,经验将显示要查找的内容,并且可以显着减少此阶段。


当测试人员遍历应用程序时,他们应该记录URL,自定义标题或请求/响应正文中的任何有趣参数,并将它们保存在电子表格中。电子表格应包括所请求的页面(也可以从代理添加请求编号,以备将来参考),有趣的参数,请求类型(POST / GET),访问是否经过身份验证/未经身份验证,如果是SSL如果它是多步骤过程的一部分,则使用,以及任何其他相关注释。一旦他们将应用程序的每个区域都映射出来,他们就可以浏览应用程序并测试他们已识别的每个区域,并记录哪些有效,哪些无效。本指南的其余部分将确定如何测试每个感兴趣的领域,


以下是所有请求和响应的一些兴趣点。在请求部分中,关注GET和POST方法,因为这些方法出现在大多数请求中。请注意,可以使用其他方法,例如PUT和DELETE。通常,这些更罕见的请求(如果允许)可能会暴露漏洞。本指南中有一个专门用于测试这些HTTP方法的部分。


要求:

  • 确定使用GET的位置以及使用POST的位置。
  • 识别POST请求中使用的所有参数(这些参数位于请求正文中)。
  • 在POST请求中,要特别注意任何隐藏的参数。发送POST时,所有表单字段(包括隐藏参数)都将在HTTP消息正文中发送给应用程序。除非使用代理或查看HTML源代码,否则通常不会看到这些内容。此外,显示的下一页,其数据和访问级别都可以根据隐藏参数的值而不同。
  • 识别GET请求中使用的所有参数(即URL),特别是查询字符串(通常在?标记之后)。
  • 识别查询字符串的所有参数。这些通常是对形式,例如foo = bar。另请注意,许多参数可以在一个查询字符串中,例如由&,〜,:或任何其他特殊字符或编码分隔。
  • 在识别一个字符串或POST请求中的多个参数时,需要注意的是执行攻击需要部分或全部参数。测试人员需要识别所有参数(即使编码或加密),并确定应用程序处理哪些参数。本指南的后面部分将确定如何测试这些参数。此时,只需确保识别出其中的每一个。
  • 还要注意通常看不到的任何其他或自定义类型的标头(例如debug = False)。


对策:

  • 确定新Cookie的设置位置(Set-Cookie标头),修改或添加。
  • 确定在正常响应期间(即未修改的请求)中存在任何重定向(3xx HTTP状态代码),400状态代码,特别是403 Forbidden和500内部服务器错误的位置。
  • 另请注意使用任何有趣的标头的位置。例如,“服务器:BIG-IP”表示站点是负载平衡的。因此,如果站点负载平衡且一个服务器配置不正确,则测试人员可能必须发出多个请求才能访问易受攻击的服务器,具体取决于所使用的负载平衡类型。

 

黑盒测试

测试应用程序入口点: 
以下是有关如何检查应用程序入口点的两个示例。

 

例1

此示例显示了将从在线购物应用程序购买商品的GET请求。

获取https://xxxx/shoppingApp/buyme.asp?CUSTOMERID = 100&ITEM = z101a&PRICE = 62.50&IP = xxxx 
主持人:xxxx
Cookie:SESSIONID = Z29vZCBqb2IgcGFkYXdhIG15IHVzZXJuYW1lIGlzIGZvbyBhbmQgcGFzc3dvcmQgaXMgYmFy


结果预期:

在这里,测试人员会记录请求的所有参数,例如CUSTOMERID,ITEM,PRICE,IP和Cookie(可能只是编码参数或用于会话状态)。

 

例2

此示例显示了一个POST请求,该请求将使您登录到应用程序。

POST https://xxxx/KevinNotSoGoodApp/authenticate.asp?service = login
主持人:xxxx
Cookie:SESSIONID = dGhpcyBpcyBhIGJhZCBhcHAgdGhhdCBzZXRzIHByZWRpY3RhYmxlignvb2tpZXMgYW5kIG1pbmUgaXMgMTIzNA ==
CustomCookie = 00my00trusted00ip00is00x.xxx00

POST消息的正文:

用户管理=&传= pass123&调试=真fromtrustIP =真

结果预期:

在此示例中,测试人员会记录之前的所有参数,但请注意参数是在消息正文中传递而不是在URL中传递。此外,请注意正在使用的自定义cookie。

 

灰盒测试

通过Gray Box方法测试应用程序入口点将包括上面已经识别的所有内容,并添加一个。如果存在应用程序从中接收数据并对其进行处理的外部源(例如SNMP陷阱,系统日志消息,SMTP或来自其他服务器的SOAP消息),则与应用程序开发人员的会议可以识别将接受或期望用户的任何功能输入以及它们的格式。例如,开发人员可以帮助理解如何制定应用程序可以接受的正确SOAP请求以及Web服务所在的位置(如果在黑盒测试期间尚未识别Web服务或任何其他功能)。

© 著作权归作者所有

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

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

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

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

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

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

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

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

猪鼻子插葱
02/27
91
0
小型网站渗透常规思路之抛砖引玉

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

首席安全砖家
2015/04/13
2.5K
6

没有更多内容

加载失败,请刷新页面

加载更多

前端技术之:Prisma Demo服务部署过程记录

安装前提条件: 1、已经安装了docker运行环境 2、以下命令执行记录发生在MackBook环境 3、已经安装了PostgreSQL(我使用的是11版本) 4、Node开发运行环境可以正常工作 首先需要通过Node包管...

popgis
今天
5
0
数组和链表

数组 链表 技巧一:掌握链表,想轻松写出正确的链表代码,需要理解指针获引用的含义: 对指针的理解,记住下面的这句话就可以了: 将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指...

code-ortaerc
今天
4
0
栈-链式(c/c++实现)

上次说“栈是在线性表演变而来的,线性表很自由,想往哪里插数据就往哪里插数据,想删哪数据就删哪数据...。但给线性表一些限制呢,就没那么自由了,把线性表的三边封起来就变成了栈,栈只能...

白客C
今天
42
0
Mybatis Plus service

/** * @author beth * @data 2019-10-20 23:34 */@RunWith(SpringRunner.class)@SpringBootTestpublic class ServiceTest { @Autowired private IUserInfoService iUserInfoS......

一个yuanbeth
今天
5
0
php7-internal 7 zval的操作

## 7.7 zval的操作 扩展中经常会用到各种类型的zval,PHP提供了很多宏用于不同类型zval的操作,尽管我们也可以自己操作zval,但这并不是一个好习惯,因为zval有很多其它用途的标识,如果自己...

冻结not
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部