Wireshark数据抓包分析之HTTP协议
字数 2403 2025-08-15 21:33:52

HTTP协议数据抓包与分析教学文档

一、HTTP协议基础

1. HTTP协议特性

  • 无状态协议:客户端(Web浏览器)和服务器之间不需要建立持久连接
  • 请求/响应模型:客户端发送请求,服务器返回响应
  • 工作流程
    1. 通过TCP三次握手建立连接
    2. 客户端发送HTTP请求
    3. 服务器接收请求并返回响应数据
    4. 通过TCP四次挥手断开连接

2. HTTP报文格式

请求报文格式

请求行(请求方法 URL 协议版本)
请求头部(关键字:值)
空行
请求正文(可选)

响应报文格式

状态行(协议版本 状态码 状态描述)
响应头部(关键字:值)
空行
响应正文

二、实验环境搭建

1. HFS软件配置

  1. 以管理员身份运行HFS软件
  2. 配置端口(如8080)
  3. 在虚拟文件系统区域右键选择"从磁盘添加目录"
  4. 设置用户名和密码(如demo/demo)
  5. 在属性中选择"上传"sheet页,选中"任何人"

2. 数据抓取准备

  1. 在测试机器上打开Wireshark
  2. 设置过滤条件:ip.addr == 服务器IP
  3. 通过浏览器访问HFS服务器

三、HTTP头域详解

1. 请求头域

Header 解释
Accept 指定客户端能够接收的内容类型
Accept-Charset 浏览器可以接受的字符编码集
Accept-Encoding 支持的压缩编码类型
Accept-Language 浏览器可接受的语言
Authorization HTTP授权证书
Cache-Control 缓存机制
Connection 是否需要持久连接
Cookie 发送给服务器的cookie值
Content-Length 请求的内容长度
Content-Type 请求的MIME信息
Host 请求的服务器的域名和端口号
User-Agent 用户浏览器信息

2. 响应头域

Header 解释
Accept-Ranges 服务器是否支持指定范围请求
Age 从原始服务器到代理缓存的估算时间
Cache-Control 是否可以缓存及哪种类型
Content-Encoding 返回内容压缩编码类型
Content-Length 响应体的长度
Content-Type 返回内容的MIME类型
ETag 请求变量的实体标签的当前值
Expires 响应过期的日期和时间
Server web服务器软件名称
Set-Cookie 设置Http Cookie

3. 通用头域

Header 解释
Cache-Control 缓存机制
Connection 持久连接设置
Date 消息发送的时间
Pragma 实现特定的指令
Upgrade 指定另一种协议
Via 经过的代理服务器信息

4. 实体头域

Header 解释
Allow 资源支持的方法集
Content-Encoding 实体数据编码方式
Content-Language 实体数据采用的自然语言
Content-Length 实体数据的长度
Content-Location 实体数据的资源位置
Content-MD5 实体数据的MD5值
Expires 实体数据的有效期
Last-Modified 内容的最后修订时间

四、HTTP方法分析

1. GET方法分析

请求包示例

GET / HTTP/1.1\r\n
Host: 10.1.1.33:8080\r\n
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3\r\n
Accept-Encoding: gzip, deflate\r\n
Connection: keep-alive\r\n
\r\n

响应包示例

HTTP/1.1 200 OK\r\n
Content-Type: text/html\r\n
Content-Length: 2023\r\n
Accept-Ranges: bytes\r\n
Server: HFS 2.3 beta\r\n
Set-Cookie: HFS_SID=0.248448607278988; path=/; \r\n
Cache-Control: no-cache, no-store, must-revalidate, max-age=-1\r\n
Content-Encoding: gzip\r\n
\r\n

2. POST方法分析

请求包示例

POST /hfs2_3b287/ HTTP/1.1\r\n
Host: 10.1.1.33:8080\r\n
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3\r\n
Accept-Encoding: gzip, deflate\r\n
Referer: 10.1.1.33:8080/hfs2_3b287/\r\n
Cookie: HFS_SID=0.248448607278988\r\n
Authorization: Basic ZGVtbzpkZW1v\r\n
Connection: keep-alive\r\n
Content-Type: multipart/form-data; boundary=54542580413055\r\n
Content-Length: 367\r\n
\r\n

文件上传部分

MIME Multipart Media Encapsulation, Type: multipart/form-data, Boundary: 54542580413055
Encapsulated multipart part:
  Content-Disposition: form-data; name="Filename"
  http-post.txt
Encapsulated multipart part:
  Content-Disposition: form-data; name="file"; filename="http-post.txt"
  Content-Type: text/plain
  This is demo for HTTP POST

响应包示例

HTTP/1.1 200 OK\r\n
Content-Type: text/html\r\n
Content-Length: 570\r\n
Accept-Ranges: bytes\r\n
Server: HFS 2.3 beta\r\n
Content-Encoding: gzip\r\n
\r\n

五、Wireshark分析技巧

  1. 过滤HTTP请求http.request.method == "GET"http.request.method == "POST"
  2. 查看特定IP的通信ip.addr == 10.1.1.33
  3. 分析TCP流:右键数据包 → Follow → TCP Stream
  4. 查看重组后的HTTP数据:注意TCP重组片段信息
  5. 分析文件上传:查找multipart/form-data类型的内容

六、常见状态码

状态码 说明
200 响应成功
304 资源未修改(使用缓存)
400 客户端请求有语法错误
401 请求需要认证
403 服务器拒绝请求
404 请求资源不存在
500 服务器内部错误

七、安全注意事项

  1. 明文传输:HTTP协议传输的数据是明文的,包括认证信息
  2. Cookie安全:注意分析Cookie中的敏感信息
  3. 认证信息:Basic认证的凭证是Base64编码(可逆),非加密
  4. 文件上传:注意检查文件上传功能的过滤机制
  5. 敏感信息泄露:服务器信息(如Server头)可能暴露系统细节

八、扩展分析

  1. HTTPS与HTTP的区别:加密传输、端口443、证书验证等
  2. HTTP/2特性:二进制协议、多路复用、头部压缩等
  3. 其他HTTP方法:HEAD、PUT、DELETE、OPTIONS等
  4. RESTful API分析:基于HTTP方法的资源操作
  5. Web服务安全分析:CSRF、XSS、SQL注入等漏洞的HTTP特征

通过本教学文档,您可以全面了解HTTP协议的工作原理、报文结构以及使用Wireshark进行抓包分析的技巧。建议在实际环境中进行实践操作,加深对HTTP协议的理解。

HTTP协议数据抓包与分析教学文档 一、HTTP协议基础 1. HTTP协议特性 无状态协议 :客户端(Web浏览器)和服务器之间不需要建立持久连接 请求/响应模型 :客户端发送请求,服务器返回响应 工作流程 : 通过TCP三次握手建立连接 客户端发送HTTP请求 服务器接收请求并返回响应数据 通过TCP四次挥手断开连接 2. HTTP报文格式 请求报文格式 响应报文格式 二、实验环境搭建 1. HFS软件配置 以管理员身份运行HFS软件 配置端口(如8080) 在虚拟文件系统区域右键选择"从磁盘添加目录" 设置用户名和密码(如demo/demo) 在属性中选择"上传"sheet页,选中"任何人" 2. 数据抓取准备 在测试机器上打开Wireshark 设置过滤条件: ip.addr == 服务器IP 通过浏览器访问HFS服务器 三、HTTP头域详解 1. 请求头域 | Header | 解释 | |--------|------| | Accept | 指定客户端能够接收的内容类型 | | Accept-Charset | 浏览器可以接受的字符编码集 | | Accept-Encoding | 支持的压缩编码类型 | | Accept-Language | 浏览器可接受的语言 | | Authorization | HTTP授权证书 | | Cache-Control | 缓存机制 | | Connection | 是否需要持久连接 | | Cookie | 发送给服务器的cookie值 | | Content-Length | 请求的内容长度 | | Content-Type | 请求的MIME信息 | | Host | 请求的服务器的域名和端口号 | | User-Agent | 用户浏览器信息 | 2. 响应头域 | Header | 解释 | |--------|------| | Accept-Ranges | 服务器是否支持指定范围请求 | | Age | 从原始服务器到代理缓存的估算时间 | | Cache-Control | 是否可以缓存及哪种类型 | | Content-Encoding | 返回内容压缩编码类型 | | Content-Length | 响应体的长度 | | Content-Type | 返回内容的MIME类型 | | ETag | 请求变量的实体标签的当前值 | | Expires | 响应过期的日期和时间 | | Server | web服务器软件名称 | | Set-Cookie | 设置Http Cookie | 3. 通用头域 | Header | 解释 | |--------|------| | Cache-Control | 缓存机制 | | Connection | 持久连接设置 | | Date | 消息发送的时间 | | Pragma | 实现特定的指令 | | Upgrade | 指定另一种协议 | | Via | 经过的代理服务器信息 | 4. 实体头域 | Header | 解释 | |--------|------| | Allow | 资源支持的方法集 | | Content-Encoding | 实体数据编码方式 | | Content-Language | 实体数据采用的自然语言 | | Content-Length | 实体数据的长度 | | Content-Location | 实体数据的资源位置 | | Content-MD5 | 实体数据的MD5值 | | Expires | 实体数据的有效期 | | Last-Modified | 内容的最后修订时间 | 四、HTTP方法分析 1. GET方法分析 请求包示例 响应包示例 2. POST方法分析 请求包示例 文件上传部分 响应包示例 五、Wireshark分析技巧 过滤HTTP请求 : http.request.method == "GET" 或 http.request.method == "POST" 查看特定IP的通信 : ip.addr == 10.1.1.33 分析TCP流 :右键数据包 → Follow → TCP Stream 查看重组后的HTTP数据 :注意TCP重组片段信息 分析文件上传 :查找 multipart/form-data 类型的内容 六、常见状态码 | 状态码 | 说明 | |--------|------| | 200 | 响应成功 | | 304 | 资源未修改(使用缓存) | | 400 | 客户端请求有语法错误 | | 401 | 请求需要认证 | | 403 | 服务器拒绝请求 | | 404 | 请求资源不存在 | | 500 | 服务器内部错误 | 七、安全注意事项 明文传输 :HTTP协议传输的数据是明文的,包括认证信息 Cookie安全 :注意分析Cookie中的敏感信息 认证信息 :Basic认证的凭证是Base64编码(可逆),非加密 文件上传 :注意检查文件上传功能的过滤机制 敏感信息泄露 :服务器信息(如Server头)可能暴露系统细节 八、扩展分析 HTTPS与HTTP的区别 :加密传输、端口443、证书验证等 HTTP/2特性 :二进制协议、多路复用、头部压缩等 其他HTTP方法 :HEAD、PUT、DELETE、OPTIONS等 RESTful API分析 :基于HTTP方法的资源操作 Web服务安全分析 :CSRF、XSS、SQL注入等漏洞的HTTP特征 通过本教学文档,您可以全面了解HTTP协议的工作原理、报文结构以及使用Wireshark进行抓包分析的技巧。建议在实际环境中进行实践操作,加深对HTTP协议的理解。