一、HTTP基础通信原理
1.1 请求-响应模型
-
Request(请求):客户端向服务器发送的数据包
-
Response(响应):服务器返回给客户端的数据包
-
代理模式:浏览器 → 代理(Burp Suite)→ 服务器 → 代理 → 浏览器
1.2 核心概念
表格
| 组件 | 说明 |
|---|---|
| 请求方法 | GET/POST/PUT/DELETE等,决定数据交互方式 |
| 请求头 | 包含Host、Cookie、User-Agent等元数据 |
| 请求体 | POST请求中提交的实际数据(如账号密码) |
| 状态码 | 服务器返回的处理结果标识 |
二、HTTP请求方法详解
2.1 GET vs POST 区别
表格
| 特性 | GET请求 | POST请求 |
|---|---|---|
| 数据位置 | URL参数中(?id=1) | 请求体(Body)中 |
| 数据长度 | 受URL长度限制 | 可传输大量数据 |
| 安全性 | 参数可见,不适合敏感数据 | 数据在Body中,相对隐蔽 |
| 典型场景 | 页面访问、搜索查询 | 登录提交、文件上传、表单提交 |
| 缓存 | 可被浏览器缓存 | 通常不被缓存 |
2.2 常见请求方法
-
GET:获取资源,无请求体
-
POST :提交数据,有请求体(如
username=admin&password=123456) -
HEAD:获取响应头,不返回主体内容
-
PUT:上传/更新资源
-
DELETE:删除资源
-
OPTIONS:查询支持的请求方法
2.3 实战判断方法
操作步骤:
-
打开Burp Suite,开启拦截(Intercept is on)
-
浏览器执行目标操作(如点击登录)
-
在Proxy → HTTP history中查看请求
-
观察请求行第一个单词即为请求方法
三、HTTP请求头(Headers)深度解析
3.1 关键请求头字段
表格
| 字段名 | 作用 | 安全测试价值 |
|---|---|---|
| Host | 指定目标服务器域名和端口 | 用于Host头攻击、虚拟主机绕过 |
| User-Agent | 标识客户端操作系统、浏览器版本 | 修改可伪装设备类型(手机/PC) |
| Cookie | 存储用户身份凭证 | 窃取/篡改可实现身份伪造 |
| Content-Type | 声明请求体数据格式 | 影响服务器解析方式 |
| Accept | 声明客户端可接受的响应格式 | 内容协商绕过 |
| Referer | 标识请求来源页面 | 来源验证绕过 |
| X-Forwarded-For | 标识真实客户端IP | IP伪造、绕过IP限制 |
3.2 User-Agent 设备伪装实战
原理:服务器通过UA头判断访问设备类型,返回不同页面版本。
操作步骤:
-
抓取设备数据包
-
使用Burp抓取PC端访问百度的包
-
使用安卓模拟器抓取移动端访问百度的包
-
对比两者UA头差异
-
-
关键差异对比
-
PC端:
Mozilla/5.0 (Windows NT 10.0; Win64; x64)... -
移动端:
Mozilla/5.0 (Linux; Android 7.1.2;...)
-
-
修改UA头绕过
-
在Burp中拦截PC请求
-
将User-Agent值替换为移动端UA
-
放行请求,观察返回的是手机版页面(m.baidu.com)
-
应用场景:测试APP专属接口、绕过PC端访问限制
3.3 Cookie 身份认证机制
核心原理:Cookie是服务器颁发的"身份凭证",后续请求携带Cookie即可证明身份。
身份伪造操作步骤:
-
获取合法Cookie
-
正常登录后台,抓取登录后的请求
-
提取Cookie字段(如
PHPSESSID=xxx; username=admin)
-
-
未登录状态测试
-
清除浏览器Cookie或使用无痕模式
-
直接访问后台敏感页面(如文件管理)
-
观察返回:提示未登录/无权限
-
-
Cookie替换攻击
-
抓取未登录时的请求包
-
在Headers中添加/替换Cookie字段
-
使用Repeater重放请求
-
成功进入后台,证明身份验证绕过
-
高级应用:测试后台漏洞时必须携带有效Cookie,否则无法触发敏感功能
四、HTTP状态码与信息探测
4.1 状态码分类体系
表格
| 类别 | 范围 | 含义 |
|---|---|---|
| 1xx | 100-199 | 信息提示(如100 Continue) |
| 2xx | 200-299 | 请求成功 |
| 3xx | 300-399 | 重定向 |
| 4xx | 400-499 | 客户端错误 |
| 5xx | 500-599 | 服务器错误 |
4.2 关键状态码详解
表格
| 状态码 | 含义 | 安全测试应用 |
|---|---|---|
| 200 OK | 请求成功,资源存在 | 文件/目录存在确认 |
| 301/302 | 永久/临时重定向 | 可能存在(跳转逻辑) |
| 403 Forbidden | 禁止访问 | 文件夹存在但无索引 |
| 404 Not Found | 资源不存在 | 文件/目录不存在 |
| 500 Internal Server Error | 服务器内部错误 | 可能存在(代码执行错误) |
4.3 文件/目录存在性判断逻辑
判断规则:
-
文件存在:返回200
-
文件不存在:返回404
-
文件夹存在(无索引文件):返回403
-
文件夹存在(有index.php):返回200(自动索引)
-
服务器错误:返回500(可能存在但执行出错)
重要细节:403表示文件夹存在但禁止直接访问,删除文件夹内index文件后,200会变成403
4.4 目录扫描工具原理
实现逻辑:
-
准备字典(常见路径如
admin、system、config.php) -
使用Burp Intruder批量替换URL路径
-
根据返回状态码判断存在性:
-
200:存在
-
403:文件夹存在
-
404:不存在
-
302:可能存在(跳转)
-
Burp Intruder配置步骤:
-
抓取目标网站任意请求,Send to Intruder
-
Positions标签:Clear所有标记,选中URL路径部分,Add §
-
Payloads标签:选择Simple list,加载字典文件
-
取消勾选"URL-encode these characters"(防止斜杠被编码)
-
Start attack,观察Status列结果
五、Burp Suite 实战操作
5.1 基础抓包流程
plain
复制
1. 配置浏览器代理:127.0.0.1:8080
2. Burp Proxy → Intercept → Intercept is on
3. 浏览器执行操作,请求被拦截
4. Forward放行/Drop丢弃/修改后发送
5.2 Intruder 爆破模块
攻击类型选择:
-
Sniper:单位置单字典,逐个替换
-
Battering ram:多位置同时替换相同值
-
Pitchfork:多位置多字典,一一对应
-
Cluster bomb:多位置多字典,笛卡尔积组合
登录爆破实战步骤:
-
抓取登录请求包,Send to Intruder
-
Positions:标记username和password参数
-
Attack type选择Cluster bomb
-
Payload set 1:加载用户名字典
-
Payload set 2:加载密码字典
-
若密码加密:Payload processing → Add → Hash → MD5
-
Start attack,观察Status/Length差异
5.3 Repeater 重放模块
-
用于手动修改请求并观察响应
-
支持多次重放对比差异
-
适合精细化测试单个请求
六、Postman API测试工具
6.1 核心功能
-
从零构造请求:无需抓取,手动编写完整HTTP请求
-
Header管理:便捷添加/修改请求头(Cookie/UA等)
-
批量测试:Collections集合管理多个请求,批量运行
-
响应查看:支持Pretty/Raw/Preview三种视图
6.2 与Burp Suite对比
表格
| 场景 | 推荐工具 | 原因 |
|---|---|---|
| 抓包改包、爆破 | Burp Suite | 集成拦截、Intruder模块 |
| API接口测试、构造复杂请求 | Postman | 可视化编辑、环境变量管理 |
| 批量测试工作流 | Postman | Collections Runner |
| 渗透测试全流程 | Burp Suite | 扫描、爬虫、插件生态 |
6.3 Postman 身份伪造测试步骤
-
新建Request,输入目标URL
-
Headers标签页添加Cookie字段
-
复制浏览器登录后的Cookie值粘贴
-
发送请求,观察是否返回登录后内容
-
对比:不带Cookie返回401/403,带Cookie返回200
七、本章核心考点总结(SRC/CTF适用)
7.1 必背知识点
HTTP方法:
-
GET无Body,POST有Body
-
登录、上传等数据提交场景多用POST
-
方法可自定义,服务器可能未严格校验(方法绕过)
关键请求头:
-
User-Agent:修改实现PC/手机切换,绕过设备限制
-
Cookie:身份凭证,窃取=账号接管,篡改=权限提升
-
Host:Host头攻击、缓存投毒基础
-
X-Forwarded-For:IP伪造基础
状态码判断:
-
200=存在,404=不存在,403=文件夹存在(无索引)
-
302/301=可能存在(需跟进跳转),500=可能存在(执行错误)
7.2 常见面试题
Q1:为什么用Burp抓包后访问百度跳转异常? A:证书问题(未安装CA证书到受信任根证书颁发机构)或浏览器HSTS策略拦截。
Q2:如何测试APP专属接口? A:抓取APP数据包,提取UA头等特征,在PC端使用Burp/Postman构造相同数据包重放。
Q3:302状态码在目录扫描中如何处理? A:302表示重定向,可能是存在的文件触发跳转,需设置跟随重定向或手动访问确认。
Q4:Cookie和Session的区别? A:Cookie存储在客户端,Session存储在服务器,Session ID通常通过Cookie传递。
7.3 CTF实战技巧
-
UA头绕过:遇到"请使用手机访问"提示,直接修改User-Agent为移动端
-
Cookie伪造:题目给出admin的Cookie值,直接替换实现越权
-
目录爆破:使用Burp Intruder + 常用字典(ctf字典包含flag.php、admin等)
-
方法绕过:尝试将GET改为POST,或添加Body绕过简单WAF
7.4 工具快捷键与配置
Burp Suite:
-
Ctrl+Shift+T:Send to Repeater
-
Ctrl+I:Send to Intruder
-
字典路径:Payloads → Load → 选择.txt字典
-
关闭URL编码:Payloads → Payload Encoding → 取消勾选
Postman:
-
环境变量:{{variable_name}}语法
-
批量运行:Collection → Run Collection
-
导入请求:File → Import → Paste raw text(粘贴Burp请求)
本章核心思路 :数据包的唯一性 (不同设备/浏览器数据包不同)和可修改性(通过修改数据包绕过限制、伪造身份)是安全测试的基础,掌握抓包、改包、重放是Web渗透的核心技能。
