csrf漏洞
csrf漏洞get型
CSRF介绍
CSRF(跨站请求伪造)漏洞是一种网络攻击方式,它利用了用户已经通过身份验证的浏览器,在用户不知情的情况下,执行非法操作。攻击者通过构造特定的URL或表单,诱导用户点击或提交,从而在用户不知情的情况下完成非法请求。
简洁来说,CSRF漏洞的特点如下:
- 利用用户身份:攻击者在用户已经登录的情况下进行操作。
- 跨站请求:攻击者通过第三方网站发起请求。
- 用户不知情:用户在无意中完成了攻击者指定的操作。
- 危害性:可能导致用户数据泄露、账户被操控等严重后果。
防范措施包括: - 验证码:增加操作复杂度,防止自动化攻击。
- Token验证:为每个请求生成唯一Token,验证请求合法性。
- Referer检查:验证请求来源,防止跨站请求。
了解并防范CSRF漏洞,对于保障网络安全和用户数据安全具有重要意义。
靶场实战
在虚拟机中启用之前打开过的pikachu容器
点一下提示,使用kobe/123456登录后台

可以看到许多个人信息,点击修改个人信息,并使用Burp抓包发送到Repeter

将所有值都改为1,然后点击发送

刷新网页可以看到信息已经被修改

在本机开启网页服务,将所有值改为3,BP中右键生成CSRF POC,并将生成的POC粘贴在html文件中将文件放在本机网页服务中()

使用浏览器访问此页面,点击submit request提交

可以看到信息受害者信息被篡改

再将POC中数据改为4,提交改为自动提交

但是并没有自动提交
错误排查
F12打开控制台,看到有个报错Uncaught TypeError: document.forms[0].submit is not a function
尝试去掉submit的括号进行打印,打印出来 name 为 submit 的 input 标签。貌似有关系,经过查阅发现
是因为 <input type="hidden" name="submit" value="submit" />
的name属性覆盖了form表单的submit方法。
改正思路1
修改input标签的name属性
1 | <input type="hidden" name="submit_button" value="submit" /> |
但是这种方法不可行,会导致字段的键发生改变,包不生效

改正思路2
修改js为按钮点击
1 | <input id="submit" type="submit" value="Submit request" /> |
成功修改

burp实验室没有防御的CSRF
使用提供的账户密码登进去有个更新邮箱的接口

构造POC
1 | <html> |
使用本地网页服务访问POC成功修改邮件

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 HT的笔记の技术小站!