HTTP方法以及测试方式

1. HTTP1.1 支持的八种方法

根据RFC 2616 ,HTTP1.1共支持八种方法:

  1. OPTIONS:允许客户端查看服务器支持的方法。
  2. GET:请求指定的页面信息,并返回实体主体。
  3. HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
  4. POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
  5. PUT:从客户端向服务器传送的数据取代指定的文档的内容。
  6. DELETE:请求服务器删除指定的页面。
  7. TRACE:回显最终服务器收到的请求,主要用于测试或诊断。
  8. CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

2. 三种测试HTTPS服务器的方法

2.1 使用 OpenSSL

命令:openssl s_client -connect example.com:443

这样会与服务器建立一个SSL连接,并且打印出SSL证书,之后就可以手动发送HTTP请求了(HTTPS不就是在HTTP层下边加了个SSL嘛)

OPTIONS /HTTP/1.1
Host: example.com

之后按两下回车,即可看到打印结果

2.2 使用 Curl

Curl既可以用于测试HTTPS,也可以用来测试HTTP

  • HTTP:curl -i -X OPTIONS http://example.com/
  • HTTPS:curl --insecure -i -X OPTIONS https://example.com/

参数解释:

1. `-i, --include` 在输出中包含响应头(这里测试OPTIONS的时候,回应在响应头里)
2. `-X, --request`指定与HTTP服务器通信时要使用的自定义请求方法。将使用指定的请求方法,而不是使用默认的GET方法。
3. `-k, --insecure`使用TLS

2.3 使用 NMAP

通过NMAP的 http-methods.nse脚本来测试,这种方式在同时测试多个目标时更方便。HTTP也时支持的~

命令:nmap -p443 --script http-methods --script-args http-methods.test-all http-methods.url-path='/path/' <target>

3. 对于 HTTP来说

  • 可以通过设置BurpSuite或者Zap之类的代理进行测试:

    1. 设置代理
    2. 捕获一个正常的HTTP请求
    3. 将这个请求转给Repeater,把其中的GET变成OPTIONS
    4. 发送
  • 使用NC:

    1. nc <target> <port>

    2. OPTIONS /HTTP/1.1
      Host: example.com
      
    3. 两下回车(因为HTTP请求头和主体之间是有一个换行的)

https://www.4hou.com/technology/12885.html

https://www.yeahhub.com/testing-methods-https-openssl-curl-nmap/

posted @ 2021-04-27 20:02  掉到鱼缸里的猫  阅读(1295)  评论(0编辑  收藏  举报