实施渗透测试的重要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(转载)

相关文章
|
10天前
|
Java
IDEA快捷测试方法可用性
IDEA快捷测试方法可用性
16 0
|
13天前
|
数据可视化 测试技术
深入理解软件测试中的风险评估方法
【4月更文挑战第19天】 在软件开发的生命周期中,风险评估是确保产品质量和项目成功的关键步骤。本文将探讨几种常用的软件测试风险评估方法,包括定性分析和定量分析,并讨论它们在不同类型的测试环境中的应用。通过案例研究和最佳实践,我们将展示如何有效识别、评估和管理测试过程中可能遇到的风险,以及如何制定相应的缓解策略,以优化资源分配和提高测试效率。
|
2月前
|
人工智能 测试技术 持续交付
现代软件测试方法探析及应用前景展望
随着信息技术的迅猛发展,软件在我们日常生活和工作中扮演着愈发重要的角色。而为了保证软件质量和稳定性,软件测试显得尤为重要。本文将探讨现代软件测试方法的演变和应用前景,并分析其在不断变化的技术环境下的发展趋势。
|
2月前
|
设计模式 安全 测试技术
【软件设计师备考 专题 】系统实施:程序设计和系统测试
【软件设计师备考 专题 】系统实施:程序设计和系统测试
65 0
|
2月前
|
Java Spring
使用JDBCTemplate实现与Spring结合,方法公用 ——测试(EmpDaoImplTest)
使用JDBCTemplate实现与Spring结合,方法公用 ——测试(EmpDaoImplTest)
9 0
|
7天前
|
测试技术 API Python
Appium控件交互策略:优化自动化测试效率的关键方法
该文介绍了如何使用Selenium与APP进行交互,包括点击、输入和状态判断等操作。例如,通过element.click()点击控件,element.send_keys()输入文本,以及element.is_displayed()检查元素是否可见。还展示了如何获取元素属性,如resource-id、text和class,并提供了Python代码示例来定位并操作APP元素,如滑动条的显示、可点击性检测及点击滑动条中心位置。在编写测试脚本时,应注意元素定位和状态验证以确保测试稳定性。
16 1
|
2天前
|
存储 大数据 测试技术
矢量数据库的性能测试与评估方法
【4月更文挑战第30天】本文探讨了矢量数据库的性能测试与评估方法,强调其在大数据和AI时代的重要性。文中介绍了负载测试、压力测试、容量测试、功能测试和稳定性测试五大评估方法,以及实施步骤,包括确定测试目标、设计用例、准备环境、执行测试和分析结果。这些方法有助于确保数据库的稳定性和高效性,推动技术发展。
|
4天前
|
弹性计算 运维 监控
|
7天前
|
网络架构 Python
在Flask中,如何定义路由并处理HTTP请求的不同方法(GET、POST等)?
【4月更文挑战第25天】在Flask中,使用`@app.route()`装饰器定义路由,如`/hello`,处理GET请求返回'Hello, World!'。通过添加`methods`参数,可处理不同HTTP方法,如POST请求。单一函数可处理多种方法,通过检查`request.method`区分。动态路由使用 `<variable_name>` 传递URL变量到视图函数。这些基础构成处理HTTP请求的Flask应用。
16 1
|
8天前
|
API 开发者
免费邮箱API发送邮件测试调试的方法和步骤
本文介绍了使用免费邮箱API如aoksend、Mailgun、SMTP2GO发送邮件的测试调试步骤:选择合适的API,获取访问密钥,配置邮件参数,编写测试代码,调试和测试,查看发送日志,以及优化改进邮件发送功能,确保其稳定运行。