跨站请求伪造CSRF漏洞

0x00 CSRF原理概要

1. 概念

  1. CSRF(Cross-Site Request Forgery)是指跨站请求伪造,通常缩写为CSRF或者是XSRF。
  2. 也可以这么理解CSRF攻击:攻击者盗用了你的身份(即用了你的COOKIE),以你的名义进行某些非法操作。CSRF能够修改你的密码,使用你的账户发送邮件,获取你的敏感信息,甚至盗走你的财产等。

2. 必要条件

要完成一次CSRF攻击,受害者必须依次完成两个步骤:

登录受信任网站A,并在本地生成Cookie
在不登出A的情况下,访问恶意网站B
必须是同一浏览器,因为不同浏览器不能相互利用COOKIE

3. 攻击过程原理

Web A 为存在CSRF漏洞
Web B 为攻击者的恶意网站
User C 为Web A的用户
跨站请求伪造CSRF漏洞_第1张图片
4. 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
5. 在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功;
6. 用户未退出网站A的情况下,在同一浏览器中访问网站B;
7. 网站B接收到用户请求后,返回攻击代码,并发出一个请求要求访问第三方站点A;
8. 浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。

网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,
导致网站B的恶意代码被执行。

4. CSRF与XSS的区别

XSS:
攻击者发现XSS漏洞——构造代码——发送给受害人——受害人打开——攻击者获取受害人的cookie——完成攻击
攻击者需要登录后台完成攻击

CSRF:
攻击者发现CSRF漏洞——构造代码——发送给受害人——受害人打开——受害人执行代码——完成攻击
攻击是管理员自己实现的,攻击者只负责了构造代码

CSRF少了获取cookie的步骤,为什么会少了呢。因为受害人在执行恶意代码的时候就已经完成了攻击,而攻击者并没有参与进来。

0x01 漏洞分类

1. GET型CSRF

这种类型的CSRF一般是由于程序员安全意识不强造成的。GET类型的CSRF利用非常简单,只需要一个HTTP请求,所以,一般会这样利用:

 

在访问含有这个img的页面后,成功向http://漏洞地址,发出了一次HTTP请求。所以,如果将该网址替换为存在GET型CSRF的地址,就能完成攻击了。
跨站请求伪造CSRF漏洞_第2张图片

2. POST型CSRF

这种类型的CSRF危害没有GET型的大,利用起来通常使用的是一个自动提交的表单,如:

访问该页面后,表单会自动提交,相当于模拟用户完成了一次POST操作。

3. 常用的CSRF方式

标签属性



0x02 攻击演示

以bWAPP的CSRF (Transfer Amount)为例

入图,原始账户金额为1000EUR
跨站请求伪造CSRF漏洞_第3张图片
使用burpsuite抓包构造POC
跨站请求伪造CSRF漏洞_第4张图片
对生成的POC内转账金额参数值修改
跨站请求伪造CSRF漏洞_第5张图片
将此poc页面放入本地服务器(恶意服务器)
跨站请求伪造CSRF漏洞_第6张图片
在原浏览器访问本地该页面,
跨站请求伪造CSRF漏洞_第7张图片
点击Submit request
跨站请求伪造CSRF漏洞_第8张图片
结果发现账户金额变为800EUR,表示攻击成功
跨站请求伪造CSRF漏洞_第9张图片

0x03 漏洞检测

自动检测:AWVS扫描器
半自动检测:CSRFTester

0x04 漏洞防御

1、验证HTTP Referer字段
2、Token验证
3、添加验证码

你可能感兴趣的:(bWAPP,Web渗透,web安全工程师成长之路)