HTTP详细分析
1. HTTP协议简要
只需要传送请求方法和请求路径
无状态
明文传输漏洞 使用加强版的HTTP协议:HTTPS;HTTPS协议也会有“心脏滴血”漏洞
1.1 URL
统一资源定位符,用来告诉web容器,浏览器所请求资源的路径
http://192.168.6.134/cms/show.php?id=33
URL编码:URL中出现的一些字符例如#name会被识别为锚点,所有使用URL编码就可避免。
# | %23 |
---|---|
空格 | %20 |
注:空格也可以用“+”代替
1.2 报文分析工具
F12,浏览器自带查询
wireshark,可以抓取每层数据包
1.3 代理模式
工具:Burp Suite ,作为代理抓取HTTP数据包再进行分析
正向代理:浏览器已知的代理,需要进行配置
反向代理:对客户机浏览器是透明的,例如负载均衡
2. HTTP报文分析
2.1 请求报文
GET /cms/show.php?id=33 HTTP/1.1
Host: 192.168.6.134
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://192.168.6.134/cms/
Connection: close
Cookie: PHPSESSID=987cdc6d905402e0f8cea8b33a86eedb
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
2.1.1 请求行
GET
| /cms/show.php?id=33 | HTTP/1.1 |
---|---|---|
请求方法 | 文件路径 | http版本 |
2.1.2 请求正文字段
字段 | 含义 |
---|---|
HOST | 用于指定被访问服务器的ip地址和端口号 |
User-Agent | 浏览器指纹,客户端的浏览器信息 |
Accept | 告诉服务器能够发送的媒体类型 |
Accept-Language | 告诉服务器能够发送哪些语言 |
Accept-Encoding | 告诉服务器能够发送哪些编码语言 |
Referer | 包含一个URL,代表当前URL的上一个URL |
Cookie | 记录请求者的身份认证信息 |
Accept-Charset | 用于指定浏览器接受的字符集 |
Content-type | 用于向接收方指示实体的介质leix |
Content-Length | 用于指明实体正文的长度, |
Last-Modified | 用于指示资源的最后修改时间 |
2.1.3 请求方法
请求方法 | 作用 |
---|---|
GET | 通常用于请求服务器的某个资源 |
POST | 通常用于提交表单或文件上传 |
HEAD | 类似于GET,但在服务器响应中只返回首部 |
PUT | 向服务器中写入文档(危险方法) |
DELETE | 请求服务器删除指定资源(危险方法) |
TRACE | 回显浏览器的请求 |
OPTIONS | 可以用来测试服务器所支持的方法 |
2.1.4 实验一
题目要求:利用telnet 模拟浏览器发送HTTP请求,测试多种请求方法
1)GET方法
请求服务器发送的某个资源
2)HEAD方法
服务器响应中,只返回首部
3)PUT方法
向服务器写入文档
出现405错误:PUT方法不被允许
4)DELETE方法
请求服务器删除指定资源
如图:出现405错误,DELETE方法不被允许
5)TRACE方法
回显浏览器的请求
2.2 响应报文
HTTP/1.1 200 OK
Date: Wed, 22 Jul 2020 16:21:09 GMT
Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.2.17
X-Powered-By: PHP/5.2.17
Content-Length: 5263
Connection: close
Content-Type: text/html; charset=utf-8
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>文章管理系统</title>
2.2.1 状态行
HTTP/1.1 | 200 | OK |
---|---|---|
协议/版本 | 状态码 | 描述短语 |
2.2.2 状态码
状态码 | 类型 |
---|---|
1XX | 信息行状态码 |
2XX | 成功状态码 |
3XX | 重定向状态码 |
4XX | 客户端错误状态码 |
5XX | 服务器错误状态码 |
2.2.3 响应报头
字段
| 含义 |
---|---|
Date | 时间和日期 |
Server | web服务器指纹 |
Last-Modified | 用于指示资源的最后修改时间 |
Content-type | 响应正文的类型 |
Content-Length | 响应正文的长度 |
Set-Cookie | 服务器向浏览器写入cookie信息 |
Location | 重定向目标页面 |
Refresh | 服务器通过Refresh告诉浏览器定时刷新浏览器 |
2.2.4 实验二
题目要求:利用Burp 分析cms 网站后台登录过程
用户提交用户名和密码表单信息,burp抓取
请求报文
响应报文
1)用户输入正确密码时,状态码为302,重定向到index.php
2)用户输入错误密码时,状态码200,正确访问页面