CSRF 实验:Token 不与 Session 绑定绕过验证

简介: CSRF 实验:Token 不与 Session 绑定绕过验证

前言

CSRF(Cross-Site Request Forgery),也称为XSRF,是一种安全,通过欺骗用户在受信任网站上执行非自愿的操作,以实现未经授权的请求。


CSRF攻击利用了网站对用户提交的请求缺乏充分验证和防范的弱点。通常通过在受信任网站上构造恶意的请求链接或提交表单,然后诱使用户点击该链接或访问包含恶意表单的页面。当用户执行了这些操作时,网站会自动发送请求,包含用户的身份验证信息,而用户并不知情。

以下是一个简单的示例,说明可能导致CSRF攻击的代码片段:

<!-- 受信任网站的删除用户请求 -->
<form action="https://example.com/deleteUser" method="POST">
  <input type="hidden" name="userId" value="123" />
  <input type="submit" value="Delete User" />
</form>

在这个示例中,可能在自己的网站上构造一个页面,包含上述代码。当用户访问该页面时,浏览器会自动向`https://example.com/deleteUser`发送POST请求,删除用户ID为123的用户,而用户可能并不知情。

为了防止CSRF,可以采取以下安全措施:

1. CSRF令牌:为每个用户生成独特的CSRF令牌,并将其包含在请求中。服务器在处理请求时验证令牌的有效性,如果令牌无效,则拒绝该请求。

2. SameSite Cookie属性:将Cookie的SameSite属性设置为Strict或Lax,以限制Cookie的跨站点访问。这可以防止攻击者在受信任网站上利用用户的身份验证Cookie。

3. 验证HTTP Referer头部:服务器可以验证请求中的Referer头部,确保请求来自受信任的来源。然而,这种方法并不可靠,因为Referer头部可能被篡改或缺失。

4. 验证用户操作:在执行敏感操作(如删除用户)之前,要求用户进行额外的身份验证,如输入密码或通过二次确认。

5. 随机化请求参数:在请求中包含随机生成的参数,并且要求服务器验证这些参数的有效性。这可以防止攻击者构造恶意请求。

总之,CSRF是一种安全,通过欺骗用户在受信任网站上执行非自愿的操作来实现未经授权的请求。为了防止CSRF,应使用CSRF令牌、设置SameSite Cookie属性、验证HTTP Referer头部、验证用户操作和随机化请求参数等安全措施。

实操演示

打开

链接

https://portswigger.net/web-security/csrf/bypassing-token-validation/lab-token-not-tied-to-user-session

点击 Access The Lab

该实验室的电子邮件更改功能容易受到 CSRF 的攻击。它使用令牌来尝试防止 CSRF 攻击,但它们没有集成到站点的会话处理系统中。
 
要完成该实验,请使用您的漏洞利用服务器托管一个 HTML 页面,该页面使用CSRF 攻击来更改查看者的电子邮件地址。
 
您在应用程序上有两个帐户,可用于帮助设计攻击。凭证如下:
 
wiener:peter
carlos:montoya

点击 My account 登录

点击 Log in 登录

输入邮箱后打开 BurpSuite 抓包(不拦截)

能看到表单中隐藏的 csrf 值

kg2npnfbp4DcTDDMSixGCJaVciS4018T

切换到受害者 carlos 中

同样也是更改邮箱,这次要拦截抓包

可以看到 csrf 值不一样

补充知识

通常,为了增加CSRF的难度,CSRF令牌会与用户会话绑定,以确保令牌的唯一性和时效性。这意味着每个用户在登录后会生成一个令牌,并且该令牌只对该用户会话有效,其他用户无法使用该令牌进行CSRF。

然而,有些情况下,CSRF令牌可能不与用户会话绑定,这意味着令牌对所有用户和会话都是通用的。这种情况下,不同用户之间的令牌是相同的,可以在不同会话中共享使用。

虽然令牌不与用户会话绑定,但仍然可以有效地防止CSRF。主要原因如下:

1. 令牌的唯一性:尽管令牌不与用户会话绑定,但令牌仍然是每个用户独有的,并且在每个请求中都会发生变化。这使得很难猜测或重放有效的令牌。

2. 令牌的时效性:令牌通常具有时效性,只有在一定时间范围内才有效。一旦令牌过期,无法再使用它进行CSRF。

3. 令牌的生成方式:令牌的生成通常基于一些特定的算法或密钥,使得无法轻易地伪造有效的令牌。

虽然不与用户会话绑定的CSRF令牌可能相对更容易被攻击者获取,但由于其唯一性、时效性和生成方式,仍然能够有效地防止CSRF。重要的是,在设计令牌验证机制时,要确保令牌的安全性和复杂性,以减少猜测或伪造令牌的可能性。

总之,CSRF令牌的绑定与否并不是防止CSRF攻击的唯一因素,令牌的唯一性、时效性和生成方式等方面的设计也非常重要。不与用户会话绑定的令牌仍然能够有效地防止CSRF攻击,但需要特别关注令牌的安全性和复杂性。

只要 csrf 值是正确的,无论哪个用户都可以通过验证

更改为的 csrf

更改成功!!

右键生成 CSRF Poc

更改 csrf 值然后复制 HTML

(这里换了浏览器所以 csrf 值不一样)粘贴到 Body 中点击 Deliver exploit to victim

成功通关!!

相关文章
|
6月前
|
存储 安全 Go
CSRF 实验:Token 不存在绕过验证
CSRF 实验:Token 不存在绕过验证
|
6月前
|
前端开发 安全 Go
CSRF 实验:更改请求方式绕过验证
CSRF 实验:更改请求方式绕过验证
|
6月前
|
JavaScript 安全 前端开发
js开发:请解释什么是XSS攻击和CSRF攻击,并说明如何防范这些攻击。
XSS和CSRF是两种常见的Web安全威胁。XSS攻击通过注入恶意脚本盗取用户信息或控制账户,防范措施包括输入验证、内容编码、HTTPOnly Cookie和CSP。CSRF攻击则诱使用户执行未经授权操作,防范手段有CSRF Tokens、双重验证、Referer检查和SameSite Cookie属性。开发者应采取这些防御措施并定期进行安全审计以增强应用安全性。
126 0
|
安全 NoSQL Java
互联网并发与安全系列教程(06) - 常见的Web安全漏洞(CSRF攻击)
互联网并发与安全系列教程(06) - 常见的Web安全漏洞(CSRF攻击)
120 0
|
6月前
|
缓存 安全 JavaScript
前端安全:Vue应用中防范XSS和CSRF攻击
【4月更文挑战第23天】本文探讨了在Vue应用中防范XSS和CSRF攻击的重要性。XSS攻击通过注入恶意脚本威胁用户数据,而CSRF则利用用户身份发起非授权请求。防范措施包括:对输入内容转义、使用CSP、选择安全的库;采用Anti-CSRF令牌、同源策略和POST请求对抗CSRF;并实施代码审查、更新依赖及教育团队成员。通过这些实践,可提升Vue应用的安全性,抵御潜在攻击。
936 0
|
11天前
|
存储 Web App开发 安全
如何防范 CSRF 攻击
CSRF(跨站请求伪造)攻击是一种常见的安全威胁。防范措施包括:使用Anti-CSRF Token、检查HTTP Referer、限制Cookie作用域、采用双重提交Cookie机制等,确保请求的合法性与安全性。
|
11天前
|
网络安全 数据安全/隐私保护
什么是 CSRF 攻击
CSRF(跨站请求伪造)攻击是指攻击者诱导用户点击恶意链接或提交表单,利用用户已登录的身份在目标网站上执行非授权操作,如转账、修改密码等。这种攻击通常通过嵌入恶意代码或链接实现。
|
19天前
|
安全 前端开发 Java
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第26天】Web安全是现代软件开发的重要领域,本文深入探讨了XSS和CSRF两种常见攻击的原理及防御策略。针对XSS,介绍了输入验证与转义、使用CSP、WAF、HTTP-only Cookie和代码审查等方法。对于CSRF,提出了启用CSRF保护、设置CSRF Token、使用HTTPS、二次验证和用户教育等措施。通过这些策略,开发者可以构建更安全的Web应用。
57 4
|
18天前
|
安全 Go PHP
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第27天】本文深入解析了Web安全中的XSS和CSRF攻击防御策略。针对XSS,介绍了输入验证与净化、内容安全策略(CSP)和HTTP头部安全配置;针对CSRF,提出了使用CSRF令牌、验证HTTP请求头、限制同源策略和双重提交Cookie等方法,帮助开发者有效保护网站和用户数据安全。
45 2
|
20天前
|
存储 安全 Go
Web安全基础:防范XSS与CSRF攻击的方法
【10月更文挑战第25天】Web安全是互联网应用开发中的重要环节。本文通过具体案例分析了跨站脚本攻击(XSS)和跨站请求伪造(CSRF)的原理及防范方法,包括服务器端数据过滤、使用Content Security Policy (CSP)、添加CSRF令牌等措施,帮助开发者构建更安全的Web应用。
51 3