跨站请求伪造
与XSS的区别:
XSS:利用用户对站点的信任
CSRF:利用站点对已经身份认证的信任,在用户非自愿,不知情的情况下请求。
-
开启Burp 侦听
-
访问存在CSRF 的页面,这里是修改admin 用户的密码,随便输入一个密码a,点击提交。
此时通过 用户名:admin密码:a 就能登录admin账户
-
更改密码后找到更改密码的请求,右键选择Generate CSRF PoC
-
修改为自己想要的密码,比如admin,admin
刷新
-
Test
粘贴到浏览器,点击提交
提示密码修改成功
回到主界面尝试用admin,admin登录:
登陆成功
这是最低安全级别,对于更高的安全级别需要改对应的Referer,Cookie 或隐藏在表单中的value 值。
自动化扫描检查方法:
- 在请求和响应过程检查是否存在anti-CSRF token 名
- 检查服务器是否验证anti-CSRF token 的名值
- 检查token 中可编辑的字符串
- 检查Referer 头是否可以伪造
对策 - Captcha
- anti-CSRF token
- Referer 头
- 降低会话时间