淘宝有黑客接单暗号(在淘宝怎么联系黑客)
CSRF是Cross Site Request Forgery的缩写(也缩写为XSRF),直译过来就是跨站请求伪造的意思,也就是在用户会话下对某个CGI做一些GET/POST的事情——这些事情用户未必知道和愿意做,你可以把它想做HTTP会话劫持。
网站是通过cookie来识别用户的,当用户成功进行身份验证之后浏览器就会得到一个标识其身份的cookie,只要不关闭浏览器或者退出登录,以后访问这个网站会带上这个cookie。如果这期间浏览器被人控制着请求了这个网站的url,可能就会执行一些用户不想做的功能(比如修改个人资料)。因为这个不是用户真正想发出的请求,这就是所谓的请求伪造;呵呵,因为这些请求也是可以从第三方网站提交的,所以前缀跨站二字。
举个简单的例子,某个bbs可以贴图,在贴图的URL中写入退出登陆的链接,当用户阅读这个帖子之后就会logout了,因为用户以自己的身份访问了退出登陆链接,在用户看来是帖子里面有一张有问题的“图片”,而不是想要退出,但程序就会认为是用户要求退出登陆而销毁其会话。这就是传说中的CSRF攻击了。
不要小看CSRF哦,记得以前L-Blog就存在一个CSRF漏洞(当时还不知道这个概念:p),它添加管理员是这样的一个链接:http: //localhost/L-Blog/admincp.asp?action=member&type=editmem&memID=2& memType=SupAdmin,我们只要构造好ID想办法让管理员访问到这个URL就可以了;还有Google那个CSRF漏洞[1],将导致邮件泄漏;另外,不要以为只有XSS才能爆发蠕虫,只要条件合适,CSRF同样是有可能的。
0x02 威胁来自哪里
贴图只是GET的方式,很多时候我们需要伪造POST的请求。一个办法是利用跨站,当然目标站点可能不存在跨站,这个时候我们可以从第三方网站发动攻击。
比如我要攻击一个存在问题的blog,那就先去目标blog留言,留下一个网址,诱其主人点击过来(这个就要看你的忽悠本事咯:p),然后构造个HTML表单提交些数据过去。
多窗口浏览器就帮了一点忙。
多窗口浏览器(firefox、遨游、MyIE……)便捷的同时也带来了一些问题,因为多窗口浏览器新开的窗口是具有当前所有会话的。即我用IE登陆了我的Blog,然后我想看新闻了,又运行一个IE进程,这个时候两个IE窗口的会话是彼此独立的,从看新闻的IE发送请求到Blog不会有我登录的 cookie;但是多窗口浏览器永远都只有一个进程,各窗口的会话是通用的,即看新闻的窗口发请求到Blog是会带上我在blog登录的cookie。
想一想,当我们用鼠标在Blog/BBS/WebMail点击别人留下的链接的时候,说不定一场精心准备的CSRF攻击正等着我们。
0x03 发起CSRF攻击
从第三方站点利用POST发动CSRF攻击就是利用Javascript自动提交表单到目标CGI。每次都去写表单不是很方便,辅助进行的工具有XSS POST Forwarder[2]和CSRF Redirector[3],这里我也写了相应的ASP版本[4]。使用的时候只要把提交的url和参数传给它,它就会自动POST到目标。
比如我要提交一些数据到www.0x54.org/a.asp:http: //www.0x54.org/lake2/xss_post_forwarder.asp?lake2=http://www.0x54.org/a.asp& a=123&b=321&c=&#%(这里要自己考虑URL编码哦)
不过实际攻击的时候你得动动脑子:如何才能把用户诱骗到我们的网页来。
0x04 一个实例
因为CSRF不如XSS那么引人注目,所以现在找一个存在CSRF的Web应用程序还是很容易的。这次我们的目标是百度,just for test。
随便你用什么办法,让一个已登陆百度的用户访问一下这个URL:http: //www.0x54.org/lake2/xss_post_forwarder.asp?lake2=http://passport.baidu.com/ucommitbas&u_jump_url=&sex=1&email=CSRF@baidu.com&sdv=&zodiac=0&birth_year=0&birth_month=0&birth_day=0&blood=0&bs0=请选择&bs1=请选择&bs2=无&txt_bs=&birth_site=;;&b=rs0=请选择&rs1=请选择&rs2=无&txt_rs=&reside_site=;;
呵呵,然后看看那人个人资料是不是被修改了。这里有点郁闷,当那人访问URL后浏览器会返回到资料修改成功的页面,我们就被发现了。那么,有没有办法不让浏览器刷新呢?
(责任编辑:网络)