CSRF(跨站请求伪造)漏洞概述
一、什么是 CSRF
攻击者诱导已登录用户在不知情的情况下,对受信任网站执行未授权操作。
简单说:你登录着网站A,攻击者诱导你访问某个恶意链接,使网站A误以为是你自己发出的操作(比如转账、改密码等)。
xss 与 csrf 对比:
xss:攻击者发现 XSS 漏洞——构造代码——发送给受害人——受害人打开——攻击者获取受害人的 cookie——完成攻击
csrf:攻击者发现 CSRF 漏洞——构造代码——发送给受害人——受害人打开——受害人执行代码——完成攻击
XSS 容易发现,因为攻击者需要登陆后台完成攻击,管理员可以看到日志发现攻击者;而 CSRF 的攻击是管理员自己实现的,攻击者只负责构造代码。
CSRF 属于业务逻辑漏洞,服务器信任经过身份认证的用户
XSS 属于技术漏洞,客户信任服务器
二、CSRF 攻击原理
1.用户 C 打开浏览器,访问受信任网站 A,输入用户名和密码请求登录网站 A;
2.在用户信息通过验证后,网站 A 产生 Cookie 信息并返回给浏览器,此时用户登录网站 A 成功,可以正常发送请求到网站 A;
3.用户未退出网站 A 之前,在同一浏览器中,打开一个 TAB 页访问网站 B;
4.网站 B 接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点 A;
5.浏览器在接收到这些攻击性代码后,根据网站 B 的请求,在用户不知情的情况下携带 Cookie 信息,向网站 A 发出请求。网站 A 并不知道该请求其实是由 B 发起的,所以会根据用户 C 的 Cookie 信息以 C 的权限处理该请求,导致来自网站 B 的恶意代码被执行。
⚙️ 攻击核心机制:
- 用户在浏览器中登录了某网站(如银行、论坛),会话凭据(如 Cookie)仍有效。
- 攻击者诱导用户点击恶意链接或访问恶意页面。
- 浏览器会自动携带用户的 Cookie 发出请求。
- 服务端未做防护,以为是用户本人发出的请求,执行了操作。
三、利用方式
- 钓鱼邮件、私信诱导点击
- 论坛签名、评论中嵌入恶意内容
- 恶意JS构造表单自动提交
- GET / POST 请求均可被利用
四、常见工具
工具 | 用途 |
---|---|
Burp Suite | 构造并测试 CSRF 请求 |
CSRF PoC Generator(插件) | 自动生成 CSRF 攻击页面 |
OWASP ZAP | 扫描目标是否存在 CSRF 漏洞 |
XSRFProbe | 用于审计和识别 CSRF 问题(GitHub 开源) |
五、危害
- 未授权转账、删除账户、修改信息等操作
- 控制用户权限或泄露隐私
- 如果管理员中招,可能被篡改配置或植入后门
- 一旦结合 XSS,破坏性更高
六、CSRF 攻击防范
目前防御 CSRF 攻击主要有三种策略:
- 验证 HTTP Referer 字段;
- 在请求地址中添加token 校验;
- 在 HTTP 头中自定义属性并验证
- 使用双重认证机制:关键操作如转账,要求再次验证身份
- 避免 GET 操作产生副作用:尽量使用 POST 进行敏感操作
七、检测思路(渗透测试)
- 抓包关键操作(如改密码)
- 尝试构造一个 HTML 页面模拟请求
- 看是否能在不登录状态下伪造请求成功
- 若成功,说明存在 CSRF 漏洞