常用的HTTP请求方法
GET:一个说明 HTTP 方法的动词。最常用的方法为 GET,它的主要作用是从 Web 服务器获取一个资源。GET 请求并没有消息主体,因此在消息头后的空白行中没有其他数据。所请求的 URL,通常由所请求的资源名称,以及一个包含客户端向该资源提交的参数的可选查询字符串组成。在该 URL 中,查询字符串以?字符标识,上面的示例中有一个名为 uid、值为 129 的参数。使用的 HTTP 版本。因特网上常用的 HTTP 版本为 1.0 和 1.1,多数浏览器默认使用 1.1 版本。这两个版本的规范之间存在一些差异;然而,当攻击 Web 应用程序时,渗透测试员可能遇到的唯一差异是 1.1 版本必须使用 Host 请求头。(GET请求头后面接的是其请求网页的url链接和其请求的参数)。
所有 HTTP 消息(请求与响应)中都包含一个或几个单行显示的消息头(header),然后是一个强制空白行,最后是消息主体(可选)。以下是一个典型的 HTTP 请求:
GET /auth/488/YourDetails.ashx?uid=129 HTTP/l.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: https://mdsec.net/auth/488/Home.ashx
Accept-Language: zh-cn,zh;q=0.5
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WDW64;
Trident/4.0; SLCC2;. NET CLR 2.0.50727;. NET CLR 3.5.30729; .NET CLR
3.0.30729; .NET4.OC; InfoPath.3; .NET4.OE; FDM;。 NET CLR 1.1.4322)
Accept-Encoding: gzip, deflate
Host: mdsec.net
Connection: Keep-Alive
Cookie: SessionId=5870C7lF3FD4968935CDB6682E545476
POST:方法的主要作用是执行操作。使用这个方法可以在 URL 查询字符申与消息主体中发送请求参数。尽管仍然可以将 URL 标注为书签,但书签中并不包含消息主体发送的任何参数。许多维护 URL日志的位置及 Referer 消息头也将这些参数排除在外。因为 POST 方法旨在执行操作,如果用户单击浏览器上的“后退”按钮,返回一个使用这种方法访问的页面,那么浏览器不会自动重新发送请求,而是就即将发生的操作向用户发出带告.如图 3-1 所示。这样做可防止用户无意中多次执行同一个操作。因此.在执行某一操作时必须使用 POST 请求。(请求后面会接请求的URL地址,但是不会显示请求参数)
图 3-1 浏览器不会自动重新发送用户提出的 POST 请求,因为这样做会导致多次执行某一操作
HEAD:这个方法的功能与 GET 方法相似,不同之处在于服务器不会在其响应中返回消息主体。服务器返回的消息头应与对应 GET 请求返回的消息头相同。因此,这种方法可用于检查某一资源在向其提交 GET 请求前是否存在。(只会返回消息头,不会返回消息主体,适用于爬虫等需要大规模批量请求的场景)
OPTIONS:这种方法要求服务器报告对某一特殊资源有效的 HTTP 方法。服务器通常返回一个包含 Allow 消息头的响应,并在其中列出所有有效的方法。
1、获取服务器支持的HTTP请求方法;
2、用来检查服务器的性能。
PUT:这个方法试图使用包含在请求主体中的内容,向服务器上传指定的资源。如果激活这个方法,渗透测试员就可以利用它来攻击应用程序。(如果网站支持该请求头,那么就可以上传文件)
例如:通过上传任意一段脚本并在服务器上执行该脚本来攻击应用程序。
DELETE:请求服务器删除Request-URL所标识的资源(删除指定的页面)
MOVE:移动文件