做网站 搞流量,网站建设费用都选网络,帮别人做网站赚钱吗,网站制作整个的流程是什么前言
CSRF#xff08;Cross-Site Request Forgery#xff09;#xff0c;也称为XSRF#xff0c;是一种安全漏洞#xff0c;攻击者通过欺骗用户在受信任网站上执行非自愿的操作#xff0c;以实现未经授权的请求。
CSRF攻击利用了网站对用户提交的请求缺乏充分验证和防范…前言
CSRFCross-Site Request Forgery也称为XSRF是一种安全漏洞攻击者通过欺骗用户在受信任网站上执行非自愿的操作以实现未经授权的请求。
CSRF攻击利用了网站对用户提交的请求缺乏充分验证和防范的弱点。攻击者通常通过在受信任网站上构造恶意的请求链接或提交表单然后诱使用户点击该链接或访问包含恶意表单的页面。当用户执行了这些操作时网站会自动发送请求包含用户的身份验证信息而用户并不知情。
以下是一个简单的示例说明可能导致CSRF攻击的代码片段
!-- 受信任网站的删除用户请求 --
form actionhttps://example.com/deleteUser methodPOSTinput typehidden nameuserId value123 /input typesubmit valueDelete 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-token-being-present点击 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 成功通关