csrf漏洞原理

什么是csrf漏洞

CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。

csrf漏洞的危害

你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。

经常入选owasp漏洞列表Top10,在当前web漏洞排行中,与XSS和SQL注入并列前三。与前两者相比,CSRF相对来说受到的关注要小很多,但是危害却非常大

csrf攻击实例

CSRF 攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在并未授权的情况下执行在权限保护之下的操作。比如说,受害者Bob 在银行有一笔存款,通过对银行的网站发送请求http://bank.example/withdraw?account=bob&amount=1000000&for=bob2 可以使 Bob 把 1000000 的存款转到 bob2 的账号下。通常情况下,该请求发送到网站后,服务器会先验证该请求是否来自一个合法的session,并且该session 的用户Bob 已经成功登陆。黑客Mallory 自己在该银行也有账户,他知道上文中的URL 可以把钱进行转帐操作。Mallory可以自己发送一个请求给银行:http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory。但是这个请求来Mallory 而非 Bob,他不能通过安全认证,因此该请求不会起作用。这时,Mallory想到使用 CSRF 的攻击方式,他先自己做一个网站,在网站中放入如下代码:src=”http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory”,并且通过广告等诱使Bob 来访问他的网站。当Bob 访问该网站时,上述url 就会从Bob 的浏览器发向银行,而这个请求会附带Bob 浏览器中的cookie 一起发向银行服务器。大多数情况下,该请求会失败,因为他要求Bob 的认证信息。但是,如果Bob 当时恰巧刚访问他的银行后不久,他的浏览器与银行网站之间的session 尚未过期,浏览器的cookie 之中含Bo的认证信息。这时,悲剧发生了,这个url 请求就会得到响应,钱将从Bob 的账号转移到Mallory 的账号,而Bob 当时毫不知情。等以后Bob 发现账户钱少了,即使他去银行查询日志,他也只能发现确实有一个来自于他本人的合法请求转移了资金,没有任何被攻击的痕迹。而Mallory 则可以拿到钱后逍遥法外。

csrf攻击的对象

在讨论如何抵御 CSRF 之前,先要明确 CSRF 攻击的对象,也就是要保护的对象。从以上的例子可知,CSRF 攻击是黑客借助受害者的 cookie 骗取服务器的信任,但是黑客并不能拿到 cookie,也看不到 cookie 的内容。另外,对于服务器返回的结果,由于浏览器同源策略的限制,黑客也无法进行解析。因此,黑客无法从返回的结果中得到任何东西,他所能做的就是给服务器发送请求,以执行请求中所描述的命令,在服务器端直接改变数据的值,而非窃取服务器中的数据。所以,我们要保护的对象是那些可以直接产生数据改变的服务,而对于读取数据的服务,则不需要进行 CSRF 的保护。比如银行系统中转账的请求会直接改变账户的金额,会遭到 CSRF 攻击,需要保护。而查询余额是对金额的读取操作,不会改变数据,CSRF 攻击无法解析服务器返回的结果,无需保护。

通过dvwa-讲解csrf漏洞的挖掘及利用

首先上传一个2.html文档到自己的一台公网服务器上,编辑内容如下:

<img src="http://192.168.174.151/dvwa/vulnerabilities/csrf/?password_new=admin888&password_conf=admin888&Change=Change#" alt="network error">

将自己公网上的http://www.xxx.com/2.html文件通过短网址平台缩短以后,通过邮件发送给靶机用户,靶机用户访问该url后,密码会被自动修改为admin888

访问后如图所示,但是此时密码已经修改为了admin888

此时将dvwa退出登录,然后使用密码admin888登录成功。

猜你喜欢

转载自www.cnblogs.com/v01cano/p/10425022.html