跨站请求伪造(Cross-Site Request Forgery, CSRF)是一种常见的网络攻击方式,它利用了用户在已登录状态下的身份认证信息来冒充用户在网站上执行未授权的操作。
CSRF 攻击的原理
CSRF攻击的核心在于:攻击者诱导用户在不知情的情况下发送伪造的请求到一个受信任的网站,而这个请求会携带用户的身份认证信息(如Cookies、会话令牌),导致网站错误地认为是合法用户发出的请求。
攻击流程:
-
用户登录:
- 用户在一个受信任的网站(例如银行、社交媒体等)上登录,并保持会话未结束(Cookies或Session ID仍有效)。
-
用户访问恶意网站:
- 攻击者诱导用户访问恶意网站,或者攻击者嵌入了恶意代码的页面。
-
伪造请求:
- 恶意网站构造一个针对受信任网站的请求(通常是一个HTTP请求),这个请求会包含用户的会话信息。
- 由于浏览器的默认行为会自动附加Cookies,受信任网站接收到这个请求时会认为这是用户主动发起的合法请求。
-
请求执行:
- 受信任的网站没有意识到这个请求是伪造的,执行了请求中的操作。例如,转账、修改账户信息等。
-
攻击成功:
- 攻击者达到了目的,而用户通常不知情。
CSRF 的危害
- 未经授权的操作:攻击者可以冒充用户在网站上执行各种操作,如转账、发送消息、修改个人信息等。
- 数据泄露:在某些情况下,攻击者可以通过CSRF攻击获取用户的敏感信息。
CSRF 攻击示例
假设受信任网站http://trusted.com
有一个转账功能,URL如下:
http://trusted.com/transfer?amount=1000&to=attacker_account
如果用户已经登录了trusted.com
,攻击者可以构造一个恶意页面如下:
<!DOCTYPE html>
<html>
<body>
<h1>Click here for a free gift!</h1>
<img src="http://trusted.com/transfer?amount=1000&to=attacker_account" alt="Free Gift">
</body>
</html>
当用户点击该页面,浏览器会自动向trusted.com
发送一个带有用户会话信息的请求,完成转账操作。
防御 CSRF 攻击的方法
1.CSRF 令牌(Token):
示例:
- 简介:服务器为每个用户生成一个唯一的、随机的CSRF令牌,并在每个表单提交或敏感请求中附带该令牌。
- 验证:当服务器接收到请求时,会验证令牌是否匹配。如果不匹配,则拒绝请求。
- 优点:攻击者无法轻易获取或伪造这个令牌,因此无法完成CSRF攻击。
<form action="/transfer" method="post">
<input type="hidden" name="csrf_token" value="unique-token">
<input type="text" name="amount">
<input type="text" name="to">
<input type="submit" value="Transfer">
</form>
2.SameSite Cookie 属性:
- 简介:通过设置Cookies的
SameSite
属性为Strict
或Lax
,可以限制浏览器在跨站请求中发送Cookies。 - 优点:防止攻击者通过第三方网站发起跨站请求时自动携带用户的Cookies,从而有效防御CSRF攻击。
3.双重Cookie提交:
- 简介:将CSRF令牌存储在一个Cookie中,同时在请求中带上该令牌(如通过表单提交)。服务器验证请求中的令牌是否与Cookie中的令牌一致。
- 优点:即使攻击者能构造伪造的请求,也无法修改用户的Cookies,因此无法伪造有效的CSRF令牌。
4.验证码:
- 简介:通过在敏感操作前要求用户输入验证码,确保请求的确是用户主动发起的。
- 优点:增加了用户操作的复杂性,但能有效防止自动化的CSRF攻击。
5.验证请求来源:
- 简介:通过检查请求头中的
Referer
或Origin
,服务器可以确认请求是否来自合法的页面。 - 缺点:这并非完全可靠,某些浏览器或网络环境中可能会遗漏这些头信息。
总结
CSRF攻击利用了用户的身份认证信息,通过伪造请求让服务器执行未授权的操作。有效防御CSRF攻击需要采取多层次的安全措施,如使用CSRF令牌、配置SameSite
属性、双重Cookie提交、验证码以及验证请求来源等。
74CMS实战
74CMS是一个开源的人才招聘网站,曾被人爆出有csrf后台添加管理员漏洞
这里我是用的docker在虚拟机搭建该平台
教程如下:
https://www.cnblogs.com/mr-ryan/p/17295931.html
.....实操待补充....