实施渗透测试的重要HTTP方法
如果你没有积极地参与Web应用程序开发,几乎就不可能了解HTTP协议的内部工作机理,也几乎没有机会知道Web应用程序与数据库进行交互的不同方法,也无法真正知道,当用户点击了一个链接或在浏览器的URL中键入字符时会发生什么。
如果你以前并没有编程技能,也没有积极地参与Web应用程序的开发,就不可能有效地执行渗透测试。作为渗透测试人员,你需要Web应用程序和HTTP协议的基础知识。
作为渗透测试人员,理解信息流是如何从客户端达到服务器,再返回服务器是非常重要的。举个例子,一位给你修电视的技术人员在接触电视的任何零件之前,必须理解电视的内部工作原理。本文将讨论一些实施渗透测试时的重要HTTP方法,旨在帮助没有Web应用渗透测试知识的渗透测试人员能够充分利用已有工具,成功地实施端到端的Web渗透测试。
实施渗透测试的重要HTTP方法
在客户端将请求发送给服务器时,它还应当通知服务器对目标源采取的行动。例如,如果一个用户仅希望查看一个网页的内容,就会激发GET方法,通知服务器将网页上的内容发送给客户端的Web浏览器。
本文将讨论几种方法,其宗旨就是要使渗透测试人员明确,在两端之间发生了哪些类型的数据交换。
GET/POST方法
GET方法通过URL将参数传递给Web应用程序。它取得表单中的所有输入并将其附加到URL。这种方法有些局限性;你在URL中通过GET方法最多只能传递255个字符,如果超过了这个数字,多数服务器就会在不发出警告的情况下截下超过限制的字符,或者会返回一个HTTP 414错误。使用GET方法的另一个重要问题是,输入的内容成为URL的一部分而易于被嗅探。如果用户键入了用户名和口令,而这些值都通过GET方法被传递给服务器,那么Web服务器上的任何人都可以从Apache或IIS的日志文件中找到用户名和口令。如果你收藏了URL,传递的值也会连同URL以明文的形式被保存。GET方法最初仅用于从服务器来恢复数据,但是许多开发人员用它向服务器发送数据。
POST方法类似于GET方法,它用于从服务器上检索数据,但它是通过请求主体来传递内容的。因为数据是在请求主体中传送的,所以攻击者就很难检测并攻击底层操作。
HEAD方法
攻击者使用HEAD方法来确认服务器的类型,因为服务器仅通过HTTP头来响应而无需发送任何负载。这是一种快速发现服务器版本和日期的方法。
TRACE方法
在使用TRACE方法时,检索服务器会通过响应主体中的原始请求消息,返回TRACE响应。TRACE方法用于确认中间设备(例如,代理服务器和防火墙)对请求做出的任何修改。有些代理服务器会在数据包经过时编辑HTTP头部,而这可以通过使用TRACE方法来确认。TRACE方法用于测试目的,你可以跟踪另一端接收了什么。微软的IIS服务器有一个与TRACE方法相同的TRACK命令。有一种更加高级的攻击称为XST(跨站跟踪),它利用跨站脚本攻击(XSS)和TRACE方法来窃取用户的cookies。
PUT和DELETE方法
PUT和DELETE方法是WebDAV(HTTP协议的一个扩展)的一部分,它支持对Web服务器上的文档和文件进行管理。开发者用WebDAV将制作完成的网页上传到web服务器。PUT用于上传数据到服务器,而DELETE用于删除数据。
OPTIONS方法
OPTIONS方法用于查询服务器所支持的方法。有一种方法可以很容易查询服务器支持什么:使用所有Linux发行版都内置的Netcat(nc)实用程序。我们可以在80端口上连接网站,然后使用OPTIONS方法查询服务器所支持的方法。我们可以使用HTTP/1.1向服务器发送请求。返回的响应就可以确认服务器所支持方法,连同其它信息,如内容长度、日期,等等。
本文转自d1net(转载)
相关文章
- Selenium自动化测试框架常见异常分析及解决方法
- 测试右移的实践方法
- 测试周期被压缩?教你9个方法去应对
- 腾讯测试高人分享4个关于 Python 函数(方法)的冷知识
- 电子电气架构——测试:使用CANoe做DoIP通信实现方法
- 【学习笔记24】JavaScript数组遍历方法习题
- web自动化测试:Selenium+Python基础方法封装
- 从此使用linux系统,但是QQ是必不可少的!!该篇文章方法成功!!!已验证!!!!!
- 高数 | 常用求极限方法总结
- 测试 Java 类的非公有成员变量和方法
- jquery的onclick(this)方法
- C# FTP常规方法
- python常用时间处理方法
- 基于缺陷的测试过程有效性评价方法研究
- 百万连接测试之方法篇
- python接口测试:在一个用例文件中调用另一个用例文件中定义的方法
- 模板引擎基本概念及实现原理、art-template模板引擎的使用方法
- JNLP文件的打开方法
- svn“Previous operation has not finished; run 'cleanup' if it was interrupted“报错的解决方法
- [pytest]测试类中引入__init__(self)方法问题,有坑莫入
- C# 监测每个方法的执行次数和占用时间(测试4)
- C# 监测每个方法的执行次数和占用时间(测试2)