一、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 实战判断方法

操作步骤:

  1. 打开Burp Suite,开启拦截(Intercept is on)

  2. 浏览器执行目标操作(如点击登录)

  3. 在Proxy → HTTP history中查看请求

  4. 观察请求行第一个单词即为请求方法


三、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头判断访问设备类型,返回不同页面版本。

操作步骤:

  1. 抓取设备数据包

    • 使用Burp抓取PC端访问百度的包

    • 使用安卓模拟器抓取移动端访问百度的包

    • 对比两者UA头差异

  2. 关键差异对比

    • PC端:Mozilla/5.0 (Windows NT 10.0; Win64; x64)...

    • 移动端:Mozilla/5.0 (Linux; Android 7.1.2;...)

  3. 修改UA头绕过

    • 在Burp中拦截PC请求

    • 将User-Agent值替换为移动端UA

    • 放行请求,观察返回的是手机版页面(m.baidu.com)

应用场景:测试APP专属接口、绕过PC端访问限制

3.3 Cookie 身份认证机制

核心原理:Cookie是服务器颁发的"身份凭证",后续请求携带Cookie即可证明身份。

身份伪造操作步骤:

  1. 获取合法Cookie

    • 正常登录后台,抓取登录后的请求

    • 提取Cookie字段(如PHPSESSID=xxx; username=admin

  2. 未登录状态测试

    • 清除浏览器Cookie或使用无痕模式

    • 直接访问后台敏感页面(如文件管理)

    • 观察返回:提示未登录/无权限

  3. 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 目录扫描工具原理

实现逻辑:

  1. 准备字典(常见路径如adminsystemconfig.php

  2. 使用Burp Intruder批量替换URL路径

  3. 根据返回状态码判断存在性:

    • 200:存在

    • 403:文件夹存在

    • 404:不存在

    • 302:可能存在(跳转)

Burp Intruder配置步骤:

  1. 抓取目标网站任意请求,Send to Intruder

  2. Positions标签:Clear所有标记,选中URL路径部分,Add §

  3. Payloads标签:选择Simple list,加载字典文件

  4. 取消勾选"URL-encode these characters"(防止斜杠被编码)

  5. 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:多位置多字典,笛卡尔积组合

登录爆破实战步骤:

  1. 抓取登录请求包,Send to Intruder

  2. Positions:标记username和password参数

  3. Attack type选择Cluster bomb

  4. Payload set 1:加载用户名字典

  5. Payload set 2:加载密码字典

  6. 若密码加密:Payload processing → Add → Hash → MD5

  7. 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 身份伪造测试步骤

  1. 新建Request,输入目标URL

  2. Headers标签页添加Cookie字段

  3. 复制浏览器登录后的Cookie值粘贴

  4. 发送请求,观察是否返回登录后内容

  5. 对比:不带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实战技巧

  1. UA头绕过:遇到"请使用手机访问"提示,直接修改User-Agent为移动端

  2. Cookie伪造:题目给出admin的Cookie值,直接替换实现越权

  3. 目录爆破:使用Burp Intruder + 常用字典(ctf字典包含flag.php、admin等)

  4. 方法绕过:尝试将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渗透的核心技能。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐