1 漏洞描述
跨站请求伪造(Cross Site Request Forgery,CSRF),它强制浏览器客户端用户在当前对其进行身份验证后的 Web 应用程序上执行非本意操作的攻击,攻击的重点在于更改状态的请求,而不是盗取数据,因为攻击者无法查看伪造请求的响应。
借助于社工的一些帮助,例如,通过电子邮件或聊天发送链接,攻击者可以诱骗用户执行攻击者选择的操作。如果受害者是普通用户,则成功的 CSRF 攻击可以强制用户执行更改状态的请求,例如转移资金、修改密码等操作。如果受害者是管理账户,CSRF 攻击会危及整个 Web 应用程序。
关键点:
- 受害者没有退出登录,受害者保持身份认证。
- CSRF 继承了受害者的身份和特权,代表受害者执行非本意的、恶意的操作。
- CSRF 回借用浏览器中与站点关联的所有身份凭据,例如用户的会话 Cookie,IP 地址,Windows 域凭据等。
目标:
- CSRF 的目标是更改用户账户的状态,攻击者利用 CSRF 发送的请求都是更改状态的请求,比如,转账、更改密码,购买商品等。
- CSRF 的场景中,攻击者是没有办法获得服务器的响应。
2 漏洞原理
- 用户输入账号信息请求登录 A 网站。
- A 网站验证用户信息,通过验证后返回给用户一个 cookie
- 在未退出网站 A 之前,在同一浏览器中请求了黑客构造的恶意网站 B
- B 网站收到用户请求后返回攻击性代码,构造访问 A 网站的语句
- 浏览器收到攻击性代码后,在用户不知情的情况下携带 cookie 信息请求了 A 网站。此时 A 网站不知道这是由 B 发起的。
两个条件:a 用户访问站点 A 并产生了 cookie
a 用户没有退出A同时访问了 B
3 漏洞场景
4 漏洞评级
高危
5 漏洞危害
在成功的 CSRF 攻击中,攻击者会使受害用户无意中执行操作。例如,这可能是更改其帐户上的电子邮件地址、更改其密码或进行资金转账。根据操作的性质,攻击者可能能够完全控制用户帐户。如果被入侵的用户在应用程序中具有特权角色,则攻击者可能能够完全控制应用程序的所有数据和功能。
6 漏洞验证
Burp Suite 自带插件,可以根据请求构造表单,进行 CSRF 漏洞验证。
7 漏洞利用
跨站点请求伪造攻击的传递机制与反射型 XSS 的传递机制基本相同。通常,攻击者会将恶意 HTML 放置在他们控制的网站上,然后诱使受害者访问该网站。这可以通过通过电子邮件或社交媒体消息向用户提供指向网站的链接来完成。或者,如果攻击被放置在一个流行的网站中(例如,在用户评论中),他们可能只是等待用户访问该网站。
请注意,一些简单的 CSRF 漏洞利用采用 GET 方法,并且可以通过易受攻击的网站上的单个 URL 完全独立。在这种情况下,攻击者可能不需要使用外部站点,并且可以直接向受害者提供易受攻击域上的恶意 URL。
http://10.1.1.5/dvwa_2.0.1/vulnerabilities/csrf/?password_new=777&password_conf=777&Change=Change
8 防御方案
验证 Referer 字段:
- 当前 URL 的上一个 URL;
- 转账页面到转账操作;
- 伪造?
二次验证:在关键操作之前,再输入密码或者验证码
添加 Token 验证:
HttpOnly:某些情况下禁止 JS 脚本访问 Cookie 信息。
SameSite:Cookie 属性,浏览器自带安全机制。
9 典型案例
nly:某些情况下禁止 JS 脚本访问 Cookie 信息。
SameSite:Cookie 属性,浏览器自带安全机制。