课程笔记:OWASP CSRFTester 工具的原理与使用
课程名称:计算机网络应用 核心摘要:本讲介绍 OWASP 组织推出的 CSRFTester 漏洞扫描工具,讲解其基于代理抓包、生成伪造请求代码并验证漏洞的工作原理,并演示从工具启动、浏览器代理配置(127.0.0.1:8008)到抓取请求、生成多种类型(Form/IFrame/Image/XHR/Link)攻击 HTML、验证漏洞的完整实操流程。
一、 核心概念与原理
1.1 工具背景
- CSRFTester 由 OWASP 组织推出,是官方推荐的 CSRF(跨站请求伪造) 漏洞扫描工具。
- 市场同类工具:
CSRFScanner、AppScan、CSRF Scar等,均可用于 CSRF 漏洞检测。 - 该工具已 停更(项目维护停止),有条件可采购第三方商业扫描工具,功能更健全。
- 工具基于 Java 编写,界面较为简陋,但功能完整。
1.2 工作原理
- 记录请求:通过本地代理记录用户浏览器访问的所有 HTTP 请求(方法、URL、参数、表单信息)。
- 生成攻击代码:针对指定请求生成 CSRF 攻击(伪造请求)的 HTML 代码。
- 验证漏洞:用生成的代码进行测试:
- 服务器接受该伪造请求 → 存在 CSRF 漏洞;
- 服务器拒绝/不能成功访问 → 不存在漏洞。
- 双重用途:既可模拟攻击,也可生成针对某网站的攻击代码(后者仅限授权测试,禁止非法使用)。
1.3 支持的攻击类型(Report Type)
| 类型 | 说明 |
|---|---|
| Form | 构造 POST 表单提交攻击(最常用) |
| IFrame | 通过隐藏 iframe 加载触发请求 |
| Image | 利用 <img> 标签 src 触发 GET 请求 |
| XHR | 通过 AJAX(XMLHttpRequest)发起请求 |
| Link | 通过链接触发请求 |
二、 技术细节与协议分析
2.1 代理抓包机制
- 工具启动后控制台输出:
Proxy listening on 127.0.0.1:8008 - 监听地址:127.0.0.1(本机回环)
- 监听端口:8008
- 原理:浏览器所有流量经本机 8008 端口转发,工具据此捕获请求方法、URL、参数等。
2.2 工具目录结构
CSRFTester/
├── lib/ # Java 依赖包
├── run.bat # 启动脚本(双击运行)
└── ...
2.3 主界面元素
- 表格区:展示已记录请求的「请求方法 / 请求 URL / 请求参数」。
- Clear 按钮:清空所有访问记录。
- Start 按钮:开始记录浏览器请求。
- Report Type:左下角选择生成攻击代码的类型。
三、 实践应用与配置命令
3.1 启动 CSRFTester
- 解压工具压缩包。
- 双击
run.bat启动程序。 - 查看控制台,确认提示
Proxy listening on 127.0.0.1:8008。
3.2 配置浏览器代理(以 Edge 为例)
- 单击浏览器右上角「三个点」→ 选择 工具 → 设置。
- 选择 高级 → 系统。
- 单击「打开您计算机的代理设置」。
- 在代理设置窗口中:
- 将「手动设置代理」由 关 改为 开。
- IP 地址:
127.0.0.1 - 端口号:
8008
- 单击 保存。
注:只需设置「地址、端口、启用」三项即可,无需多余配置。
3.3 抓取请求流程
- 在 CSRFTester 主界面单击 Start 开始记录。
- 在浏览器中访问目标站点(如
edu.com/admin/admin.php)。 - 完成登录(如
admin / 123456)及关键业务操作(留言管理、删除、系统管理、重置密码 等)。 - 返回工具,表格中将列出所有捕获的请求记录。
3.4 生成攻击 HTML 并验证漏洞
- 在请求列表中 选中 需要检测 CSRF 漏洞的链接(如 reset password)。
- 在左下角 Report Type 中选择攻击类型(如
Form)。 - 单击 生成 HTML(Generate HTML)。
- 选择保存位置(如桌面)并保存。
- 打开生成的 HTML 攻击脚本:
- 查看其中包含的攻击表单(如
reset_password、admin_login、admin_main、delete等多个模拟攻击)。 - 表单结构示例:
GET请求 + 表单名称 + 隐藏字段(hidden)。
- 查看其中包含的攻击表单(如
- 触发攻击代码:
- 攻击成功(服务器接受伪造请求)→ 该接口 存在 CSRF 漏洞;
- 攻击失败(请求被拒绝)→ 不存在漏洞。
四、 重点与难点提示
- 监听端口必须记牢:CSRFTester 默认监听
127.0.0.1:8008,浏览器代理端口须与之一致,否则无法抓包。 - 代理配置是前置条件:未配置浏览器代理 → 工具捕获不到任何请求 → 测试无法进行。
- Report Type 选择:GET 类请求常用
Image/Link;POST 类请求常用Form;异步接口用XHR。 - 漏洞判定标准:伪造请求被服务器成功接受即判定存在 CSRF 漏洞,反之不存在。
- 工具已停更:CSRFTester 仅适用于教学与基本测试,生产环境建议使用商业扫描工具。
- 使用边界:工具仅限对自有/授权系统进行安全测试,禁止用于非法攻击。
- 易错点:生成 HTML 时若未先选中具体请求,工具可能为所有记录生成攻击代码(需先删除多余项再重新选择)。
五、 课后疑问/遗留问题
- 针对存在 CSRF 漏洞的接口,应如何修复?(提示:Token 校验、Referer 校验、SameSite Cookie 等防御机制)
- CSRFTester 已停更,当前主流的开源/商业 CSRF 检测方案有哪些?后续课程是否介绍 Burp Suite 的 CSRF 检测插件?
- 不同 Report Type(Form/IFrame/Image/XHR/Link)的攻击成功率与适用场景差异如何?
- 现代浏览器 SameSite Cookie 默认策略对 CSRF 攻击的影响有多大?