CSRF 跨站请求伪造漏洞理解

1.漏洞描述

        跨站请求伪造是一种攻击,它强制浏览器客户端用户在当前对其进行身份验证后的Web应用程序上执行非本意的操作,攻击的重点在处于更改状态请求,而不是盗取数据,因为攻击者无法查看伪造请求的响应。

2.漏洞原理

        攻击者可以伪造当前已经登录用户的身份访问正常的网站,执行非本意的操作。正常的网站,没有对来源请求进行严格的验证和过滤,导致攻击者可以伪造正常用户的请求,达到攻击的目的。        

3.漏洞场景

CSRF 跨站请求伪造漏洞理解_第1张图片

        在特殊场景下,客户端向服务器发起更改状态的请求,容易产生CSRF漏洞。

常见场景:

  • 银行转账
  • 修改密码

4.漏洞评级

⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐        高危

5.漏洞危害

攻击者借用正常用户的身份,发起更改状态的请求,如:

  • 银行转账
  • 修改密码
  • 修改邮箱
  • 群发消息
  • 与XSS漏洞结合创建网站后台管理员账号
  • ...

6.漏洞验证

CSRF 跨站请求伪造漏洞理解_第2张图片

7.漏洞利用

  • DVWA重置当前用户密码
  • CMS创建新管理员

8.漏洞防御

1)无效的防御:

  • 使用密码的Cookie。
  • 将接受POST请求。
  • 多步交易:多步交易,有可能会被恶意攻击者预测
  • URL重写:用户的身份信息会暴露在URL中,不建议通过引用另一个漏洞解决当前漏洞
  • HTTPS:所以安全机制的前提。

2)有效的防御:

a.

验证Referer字段

  • 当前URL的上一个URL。
  • 转账页面到转账操作
  • 伪造?

b.

二次验证:在关键操作之前,在输入密码或者验证码。

c.

添加Token 验证:

CSRF 跨站请求伪造漏洞理解_第3张图片

d.

HttpOnly:某些情况下禁止 JS 脚本访问

e.

SameSite:Cookie 属性,浏览器自带安全机制。

9.典型案例

1)CMS创建新用户

方法:攻击者可以利用 XSS 触发 CSRF 攻击。因为,可以利用 JS 发送 HTTP 请求。经过研究受害网站的业务流程,可以构造如下代码:

代码:

前提:

我们发现CSM网站留言板存在xss漏洞

a.第一步:

  • 填写留言板并提交。

b.第二步:

  • 模仿管理员管理留言板。
  • 管理员登录账号

  • 查看留言板

到这里就已经完成了添加用户。

  • 查看管理员账号,发现是我们添加的账号

  • 登录

你可能感兴趣的:(CSRF,跨站请求伪造,安全,web安全)