CSRF 实验:Token 不存在绕过验证

简介: CSRF 实验:Token 不存在绕过验证

前言

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-validation-depends-on-to

点击 Access The Lab

该实验室的电子邮件更改功能容易受到 CSRF 的攻击。
 
要完成该实验,请使用您的漏洞利用服务器托管一个 HTML 页面,该页面使用 CSRF 攻击来更改查看者的电子邮件地址。
 
您可以使用以下凭据登录您自己的帐户:wiener:peter

点击 My account

使用靶场给出了账号登录

随便输入值然后打开 BurpSuite 抓包

观察其参数

先右键生成 CSRF Poc

点击复制 HTML

点击 Go to exploit server

粘贴到 Body 中点击 View exploit

显示 CSRF Token 值无效

将其更改为 GET 方式请求也同样如此

补充知识

在CSRF防护中,令牌验证的方式通常取决于令牌是否存在。这是因为令牌的存在与否决定了服务器在处理请求时是否需要进行令牌验证。以下是对CSRF中令牌验证与令牌存在的关系的理解:

1. 令牌存在:如果CSRF令牌存在于请求中,服务器会对令牌进行验证以确保其有效性。验证通常包括检查令牌的正确性、时效性和唯一性等。如果令牌验证成功,则服务器会继续处理请求。如果令牌验证失败,则服务器会拒绝请求并返回错误响应。

2. 令牌不存在:如果CSRF令牌在请求中不存在,服务器可以根据具体情况来决定如何处理。一种常见的做法是拒绝处理请求,即使请求本身是合法的。这是因为缺少令牌可能意味着请求可能是来自恶意的第三方网站,存在CSRF攻击的风险。服务器返回错误响应或要求用户重新进行身份验证等。

需要注意的是,令牌验证应该是在服务器端进行的,而不是在客户端。令牌应该在服务器端生成,并在每个请求中进行验证。客户端负责将令牌添加到请求中,以便服务器进行验证。

CSRF令牌的生成和分发通常会在用户登录或访问受保护页面时进行。服务器会将令牌存储在会话(Session)或Cookie中,并将其添加到每个请求中。客户端可以通过从会话或Cookie中读取令牌,并将其添加到请求中,以进行验证。

综上所述,CSRF中令牌验证的方式取决于令牌是否存在。如果令牌存在,服务器会对令牌进行验证以确保其有效性。如果令牌不存在,服务器可能会拒绝处理请求或采取其他安全措施。令牌的生成和分发应在服务器端进行,并由客户端添加到请求中。这样可以增强CSRF防护的安全性和可靠性。尝试删除 csrf 参数值重新够 CSRF Poc

更改成功!!

更改 HTML 邮箱中的地址点击 Deliver exploit to victim

成功通关!


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