HTTP方法以及测试方式
1. HTTP1.1 支持的八种方法
根据RFC 2616 ,HTTP1.1共支持八种方法:
- OPTIONS:允许客户端查看服务器支持的方法。
- GET:请求指定的页面信息,并返回实体主体。
- HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
- POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
- PUT:从客户端向服务器传送的数据取代指定的文档的内容。
- DELETE:请求服务器删除指定的页面。
- TRACE:回显最终服务器收到的请求,主要用于测试或诊断。
- 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之类的代理进行测试:
- 设置代理
- 捕获一个正常的HTTP请求
- 将这个请求转给
Repeater
,把其中的GET变成OPTIONS - 发送
-
使用NC:
-
nc <target> <port>
-
OPTIONS /HTTP/1.1 Host: example.com
-
两下回车(因为HTTP请求头和主体之间是有一个换行的)
-
https://www.4hou.com/technology/12885.html
https://www.yeahhub.com/testing-methods-https-openssl-curl-nmap/