渗透测试人员必备技能:实施渗透测试的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向服务器发送请求。返回的响应就可以确认服务器所支持方法,连同其它信息,如内容长度、日期,等等。

作者:赵长林

来源:51CTO

时间: 2024-11-03 13:35:37

渗透测试人员必备技能:实施渗透测试的HTTP方法的相关文章

测试人员必备的软技能

测试人员在软件开发生命周期中,除了独立完成测试任务以外,还需要和项目的不同利益相关者进行合作,包括项目经理.开发人员或者用户等.测试人员需要向项目经理/测试经理反馈测试进度.产品质量等信息,同时还需要从项目经理/测试经理处获得项目的进展和状态,例如:项目内容或进度的变更.在测试过程中,无论是提交缺陷还是文档评审,测试人员都离不开和开发人员的合作和沟通.测试人员还可能需要从客户那里了解用户是如何使用产品的,或者因为产品的质量问题,从用户那里得到反馈甚至抱怨.因此,在复杂的测试工作环境中,测试人员除

做一名安静的Web渗透测试人员必备的8种素质和技能

无疑,Web安全测试工程师或Web渗透测试工程师的任务就是审计公司的Web应用程序.Web服务.Web服务器的安全性.那么,公司如何才能请到优秀的Web应用安全专家而不是纸上谈兵的"赵括"?下面的这八项素质或技能可以为公司选聘Web渗透测试人员提供参考: 1. Web渗透测试人员拥有一定的开发背景(知道如何编码) 公司不可能聘用一位连编写代码都不懂人成为渗透测试人员.公司的Web渗透测试者应首先是开发者,在此基础上才考虑对Web漏洞扫描器的掌握技能,其好处有五个方面: · 了解所开发W

使用IBM Rational测试人员资源工具包进行Flex测试

IBM® Rational® Functional Tester 使您能够在多个领域自动化应用程序的回归测试,这些领域中包括 Java.HTML..NET.Microsoft Silverlight.Adobe Flex 和 Dojo Toolkit.版本 8.2.1 增加了对测试 Flex Spark 应用程序的支持,以及其他一些新特性.本文将介绍用于测试 Flex Spark 应用程序的设置和脚本创建.您将学习如何启用 Spark 应用程序,让 Rational Functional Tes

Macbook Safari 常用的快捷键------测试人员必备

1. Manage Tabs and Windows ⌘+t Open new tab ⌘+Shift+[/⌘+Shift+] Jump to next / jump to previous tab ⌘+w Close current tab ⌘+z Re-open closed tab (undo command) ⌘+Option+w Close all tabs except active tab ⌘+n Open New Safari Window ⌘+m Minimize curren

测试人员除必备的专业知识还需要那些软技能

在测试过程中,无论是提交缺陷还是文档评审,测试人员都离不开和开发人员的合作和沟通.测试人员还可能需要从客户那里了解用户是如何使用产品的,或者因为产品的质量问题,从用户那里得到反馈甚至抱怨.因此,在复杂的测试工作环境中,测试人员除了必备的专业知识和测试技能以外,还需要具备一定的软技能. 软技能实际上是指那些"不易看见的技能",是一个人"激发自己潜能和通过赢得他人认可和合作放大自己的资源,以获得超越自身独立能力的更大成功的技能"的总和. 软技能其实是情商 EQ(Emot

51Testing专访史亮:测试人员在国外

版权声明:51Testing软件测试网原创出品,转载时请务必以超链接形式标明文章原始出处.作者信息和本声明,否则将追究法律责任. 史亮,东南大学计算机软件与理论专业博士,研究领域为软件分析与测试.2006年加入微软(中国)有限公司,任职软件开发测试工程师,负责微软在线业务与商业智能产品的测试工作.2011年调至微软总部,从事Microsoft Office 2013的测试工作.2012年与淘宝测试工程师高翔合著了<探索式软件测试实践之路>一书.2014年,独自出版了<软件测试实战:微软技

如何在面试时选择合适的测试人员?

各位,大家好!今天分享一下我在面试测试人员时常问的一些问题及为什么,仅供各位参考,谢谢! 1.你最近3-5年的职业规划是什么? 重点考察测试人员的职业发展方向是否与当前职位招聘相符? 从其中可以侧面看出来其员工稳定性. 2.一个项目测试结束,有没什么经验总结?如果有,具体是如何开展的? 重点考察测试人员对自己能力提升方面,有没有提高总结的地方,从项目中吸取的经验与教训.从中可以看出来,测试人员是否属行自我驱动型人才! 3.为什么会选择做测试这份工作? 重点考察测试人员对待测试工作的态度及是否有发

一名优秀的测试人员应该具备哪些素质

对于软件测试人员来说需要具备的素质,我觉得首先最重要的是要有一定的理论知识和测试技能,这是测试工作的基础.那么我们测试人员还应该具备哪些素质才能在工作当中被不断的认可呢? 一名优秀的测试人员应该具有的素质包括: 一. 踏实细心和积极主动 我觉得作为一名测试人员首先要踏实细心.细心:这个不用多解释了吧.粗枝大叶的人是没法做好软件测试的.软件测试,特别是当前国内主流的手动黑盒功能测试.基本上软件测试的工作就是一项重复劳动,需要有一定的耐心来保证不在枯燥的重复劳动中放过那些细小的缺陷.测试人员每天都要

浅谈如何做个有思想的测试人员

由于测试和开发各自所站角度的不同导致了,大家对同一个问题看法的不同,继而导致做法上存在各自的差异,有的时候会因为一个或者两个有争议的问题吵得不可开交,其实都是没有必要的. 在现实的工作中却是会存在的,如果真的遇到了这些问题,在流程正规的公司里解决起来是比较容易的,在流程混乱的公司里则比较难办.区别在于:一旦遇到了有争议的地方,通常的做法都是选择将相关有争议的人员召集起来大家一起开个会,然后各种阐述自己的主张,这时候大家通常会在会议上商量一个解决争议问题的机制.例如,开发将问题转交给需求设计人员,