其他漏洞CSRF—Web安全深度剖析(1)

发表于:2015-5-07 10:26

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:张炳帅    来源:51Testing软件测试网原创

  第10章
  其他漏洞
  10.1  CSRF
  CSRF(Cross-Site Request Forgery)是指跨站请求伪造,也常常被称为"One Click Attack"或者"Session Riding",通常缩写为CSRF或是XSRF。虽然CSRF听起来像XSS跨站脚本攻击,但CSRF与XSS的攻击方式完全不同。CSRF与XSS相比,虽然CSRF攻击不太流行,但却更加难以防范,所以被认为CSRF比XSS更具危险性,CSRF在业内具有"苏醒的巨人"的称号。
  可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义进行某些非法操作。CSRF能够使用你的账户发送邮件,获取你的敏感信息,甚至盗走你的财产。
  10.1.1  CSRF攻击原理
  当我们打开或登录某个网站后,浏览器与网站所存放的服务器将会产生一个会话,在这个会话没有结束时,你就可以利用你的权限对网站进行某些操作,如:发表文章、发送邮件、删除文章等。当这个会话结束后,你再进行某些操作的时候,Web应用程序可能会提示你"您的会话已过期"、"请重新登录"等提示。
  上面这段话非常好理解,就像我们登录网上银行后,浏览器已经跟可信的站点建立了一个经过认证的会话。之后,所有通过这个经过认证的会话发送请求,都被视为可信的动作,例如,转账、汇款等操作。当我们在一段时间内不进行操作后,经过认证的会话可能会断开,再次进行转账、汇款操作时,这个站点可能会提示你:您的身份已过期,请重新登录、会话已结束等信息。
  而CSRF攻击是建立在会话之上的。比如,当你登录了网上银行,正在进行转账业务,这时你的某个QQ好友(攻击者)发来一条消息(URL),这条消息是攻击者精心构造的转账业务代码,而且与你所登录的是同一家网络银行,你可能认为这个网站是安全的,然而当你打开了这条URL后,你账户中的余额可能会全部丢失。
  怎么可能这么神奇呢?其实这并不神奇。主要是因为你的浏览器正处于与此网站的会话之中,那么任何操作都是合法的,而攻击者构造的这段代码只不过是正常的转账操作代码而已。比如,你想给用户xxser转账1000元,那么单击"提交"按钮之后,可能会发送以下请求:
  http://www.secbug.org/pay.jsp?user=xxser&money=1000
  而攻击者仅仅是改变一下user参数与money参数,即可完成一次"合法"的攻击,如:
  http://www.secbug.org/pay.jsp?user=hack&money=10000
  当你访问了这个URL后,就会自动向hack账户中转入10000元。而且这是你亲手造成的,并不是有人破解了你的账户密码或者是银行Web服务器被入侵导致的。
  以上攻击描述了以下两个重点。
  -CSRF的攻击建立在浏览器与Web服务器的会话中;
  -欺骗用户访问URL。
  10.1.2  CSRF攻击场景(GET)
  http://www.xxser.com是全球最大的微博平台,几乎所有的网民都会拥有此平台的账号。一次偶然的情况,黑客Tom对微博的收听功能做了抓包(收听xxser),截取结果如下:
GET /listen?uid=218805&listenid=100 HTTP/1.1
Host: www.xxser.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20100101 Firefox/21.0
Accept: */*
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://www.xxser.com
Cookie: 02b4a_lastpos=other; 02b4a_ol_offset=47530;
  Tom开始分析此段HTTP请求,发现在收听某个人时,主要依靠两个参数,第一个是uid,第二个是listenid。Tom靠直觉认为uid是自己的ID,listenid是收听的ID。但是Tom的经验告诉自己直觉往往可能是假的,因为Tom不能保证开发这段程序的人与自己的思维一样,为了弄准确,Tom又注册到一个新的用户:pentest。
本文选自《Web安全深度剖析》第十章,本站经电子工业出版社和作者的授权。
版权声明:51Testing软件测试网获电子工业出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号