【笔记】Web安全:CSRF跨站请求伪造

目录

什么是CSRF

CSRF漏洞原理

无防护的CSRF漏洞利用

GET型CSRF漏洞

POST型CSRF漏洞

CSRF防御

利用tocken防止CSRF漏洞

利用Referer防止CSRF漏洞


什么是CSRF

  Cross-Site Request Forgery:跨站请求伪造,也称为ONe Click Attack或者Session Reinding,通常缩写为CSRF或者XSRF。

XSS与CSRF区别:

  1. XSS利用站点内的信任用户,盗取Cookie
  2. CSRF通过伪装成受信任用户请求受信任的网站

第三方网站对目标网站发起一个请求的时候利用用户的cookie冒充了用户的身份。

实现流程:

①用户访问网站(例如网上银行),网站返回cokkie,保存在浏览器里面。

②点击攻击链接/访问攻击者网站,网站返回一个包含恶意请求(例如银行转账)的页面

③浏览器对该请求进行解析执行,利用刚刚用户登录银行网站的cookie。

CSRF漏洞原理

利用目标用户的合法身份,以目标用户的名义执行某些非法操作。

但是有两个前提,①用户登录当前系统(获得cookie) ②用户访问了恶意URL

无防护的CSRF漏洞利用

GET型CSRF漏洞

构造GET型URL,提交参数以进行转账,新建用户等操作。

进行CSRF攻击的几种方式

1. 利用链接

即Html的a标签。点击链接后会向服务器发送包含参数的请求。例如:

2. 利用iframe标签

iframe标签内容将在页面加载过程中自动加载,src指向的位置就是页面请求的位置。可以使用iframe的style->display:none,来隐藏iframe加载的内容。例如:

3. 利用img标签

img标签的内容会随着页面的加载而被请求,因此src指向的位置会在页面加载过程中被请求执行。例如:

4. 利用CSS-background

以利用CSS中的background样式中的url来加载远程机器上的内容,从而对url中的内容发送HTTP请求。例如:

POST型CSRF漏洞

通过网页源代码或http请求头查看提交的参数名,然后通过设置表单进行提交。

例如:

如上图所示,一旦用户点击了【我中奖了】按钮,就会自动提交表单信息。

CSRF防御

  1. 验证码防御
  2. 转账等操作时需要再次输入密码进行二次验证
  3. 利用token防御
  4. Referer Check防御
  5. HTTP自定义头(不知道怎么用。。。)

利用tocken防止CSRF漏洞

服务器在用户登录之后给用户一个唯一的合法令牌,之后的每一次请求,服务器都会验证令牌是否正确,如果正确才会执行操作。

一般情况下,给与的令牌会写入到表单的隐藏域的value值中,随着表单内容进行提交,或者保存在Cookie里面。

tocken泄露

  • GET型Tocken泄露
  • POST型Tocken泄露(利用XSS漏洞读取Cookie,获取存储在其中的Tocken值)

关于tocken的说明参考:深入理解token - 后知、后觉 - 博客园

利用Referer防止CSRF漏洞

Http Referer时header的一部分,当浏览器向Web服务器发送请求的时候,一般会带上referer,告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。

缺陷:服务器并非任何时候都可以取到Referer。例如从HTTPS跳转到HTTP,此时不会携带Referer。(在Https -> Http的过程中Referer是不被传递的,而在 Https -> Https 或 Http -> Https 则没有这样的问题。参考:从Https跳转到Http时不传递HTTP_REFERER的解决方案 - 简书

如何绕过Referer验证?

如果服务器端只判断当前Refer中是否具有域名,那么可以通过(在站点目录下)新建文件夹(将文件夹名设置为域名)进行绕过。如下图所示:

注)可以使用BurpSuite来CSRF POC,如下图所示(图为社区版,仅专业版提供此功能)

课程链接:2019超详细 渗透测试/黑客入门/漏洞学习视频教程_哔哩哔哩_bilibili

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值