安基网 首页 安全 安全学院 查看内容

Web安全漏洞分析-跨站请求伪造CSRF

2018-12-13 02:54| 投稿: xiaotiger |来自: 互联网


免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!

摘要: 1.定义Cross-site Request Forgery–在某个恶意站点的页面上,促使访问者请求被攻击网站的某个 URL,从而达到改变服务器端数据的目的攻击者盗用了你的身份,以你的名义发送恶意请求–诞生于2000年,火于2007/2008年 ...

1.定义

Cross-site Request Forgery

–在某个恶意站点的页面上,促使访问者请求被攻击网站的某个 URL,从而达到改变服务器端数据的目的

攻击者盗用了你的身份,以你的名义发送恶意请求

–诞生于2000年,火于2007/2008年

–90%的网站存在此类漏洞

–特征为目标站点无token或者referer限制

–利用方式分GET与POST两种

CSRF 与 XSS的区别?

Csrf的破坏力取决于受害者的权限,与浏览器机制有关。

· CSRF,跨站请求伪造(Cross Site Request Forgery)

· 在用户会话下对某个请求发出GET/POST请求,而请求并非用户自愿发出

· 网站通过cookie识别用户,当用户在某网站成功进行身份验证后,浏览器会得到一个标识其身份的cookie。只要不关闭浏览器或退出登录,以后访问这个网站都会带上这个cookie

· 如果这期间被人诱骗请求了这个网站的url,则相当于发出了身份认证后的请求,可能会执行一些用户不想做的敏感操作

2.CSRF攻击过程

目标网站:www.webA.com

恶意网站:www.webB.com

转账功能链接:

http://www.webA.com/transport?account=abc&total=500

恶意网站www.webB.com某CSRF页面:

诱骗受害用户访问恶意网站CSRF页面

3.CSRF的危害

· 盗取目标网站上用户隐私数据

· 篡改目标网站上用户数据

· 传播CSRF蠕虫

· …

CSRF的应用与危害要取决于其场景。对于开源的、多用户的、以及社交网站,CSRF攻击带来的后果可能非常严重,且此时CSRF可以直接攻击管理员后台。然而对于闭源的、宣传册式的网站,CSRF造成的危害相对要小的多。因为此时攻击者并不清楚后台的情况,且由于此类网站用户数量很少,基本不能对其他用户产生攻击。

从上图可以看出,要完成一次CSRF攻击,受害者必须依次完成两个步骤:

1.登录受信任网站A,并在本地生成Cookie。

2.在不登出A的情况下,访问危险网站B。

· 你不能保证你登录了一个网站后,不再打开一个tab页面并访问另外的网站。

· 你不能保证你关闭浏览器了后,你本地的Cookie立刻过期,你上次的会话已经结束。(事实上,关闭浏览器不能结束一个会话,但大多数人都会错误的认为关闭浏览器就等于退出登录/结束会话了……)

3.上图中所谓的攻击网站,可能是一个存在其他漏洞的可信任的经常被人访问的网站

4.CSRF缺陷代码

A站点:

String user = request.getParameter("user");

String pass = request.getParameter("pass");

PreparedStatement ps = con.prepareStatement("update UserTB set password=? Where user=?");

ps.setString(1,user);

ps.setString(2,pass);

con.executeUpdate();

恶意站点上的代码

GET方式

POST方式

· 通过检查Referer的值,我们就可以判断这个请求是合法的还是非法的,但是问题出在服务器不是任何时候都能接受到Referer的值,所以Refere Check 一般用于监控CSRF攻击的发生,而不用来抵御攻击。

合规代码示例

5.2 CSRF Token使用原则

· Token要足够随机–只有这样才算不可预测

· Token是一次性的,即每次请求成功后要更新Token–这样可以增加攻击难度,增加预测难度

· Token要注意保密性–敏感操作使用post,防止Token出现在URL中

· 如果同域下存在xss的话,除了验证码,其他的方式都无法防御这个问题。

防护csrf的措施虽然很多,但归根到底就是一条:在客户端提交请求时增加伪造随机数。有个程序后端可能是用REQUEST方式接受的,而程序默认是POST请求,其实改成GET方式请求也可以发送过去,存在很严重的隐患。


小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!

本文出自:https://www.toutiao.com/a6633963812661756419/

免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

 最新
返回顶部