zoukankan      html  css  js  c++  java
  • xss挖掘常见误区 [转]

    xss挖掘常见误区 
    1. 误区1: XSS,不是专门去“绕过”限制。 
    XSS是很好防御的,不就是过滤一下么,所以我们不要太多寄希望与程序员错误的过滤逻辑,而应该把希望寄托于程序员的“忘记过滤”上。 
    在实际测试过程中,这样的例子会有很多。下面是一个比较典型的例子。 
    腾讯微博: 

    正门: 正文内容。 你认为你能突破吗?程序员在这里是重兵把守,早就过滤的严严实实。想突破限制,几乎是不可能的任务。 如果大家意识到这点,就不会问“过滤了< , >” 怎么办啊! 

    小门: 其它参数。 比如微博发布音乐时的 musicLocation 等参数。 
    可以注意到,这里程序员就没有那么重视了,漏洞出了一次又一次。具体见: 


    A) http://www.wooyun.org/whitehats/心伤的胖子 的 腾讯微博系列 
    B) http://www.wooyun.org/whitehats/gainover 的  腾讯微博相关 

    2. 误区2: XSS,不仅仅存在于你所看得见的位置。 

    大部分新手,在寻找XSS时,都会在一些评论框去输入XSS代码,然后看页面有没有弹窗。当然不是说这个方法没有用,而是这种方法,几乎很难“碰”到一个XSS。所以很多新手会觉得XSS怎么这么难找到。原因有几点:A):像评论框,个人资料这种,你所能想到的位置。稍微有一点安全意识的程序员也能想到,所以经常是被过滤掉的。 B):你所填入的资料,并不总是以HTML标签的形式,输出到页面上。所以有时候并不是不能X,只是因为你填入的东西不对。 

    看不见有两个层面: 

    A) 输入看不见。 
    建议大家在提交请求的时候,使用抓包软件,然后对请求的参数逐个测试。 

    B)  输出看不见。 
    建议大家对返回的数据,也可以使用抓包软件抓取数据,然后对抓回的数据进行搜索,搜索你输入的数据,来定位看不见的输出。还有一种方式,在chrome中,可以搜索浏览器调试工具中的[resource]。 


    3. 误区3: XSS,绕过限制不是让你乱用字符去绕过,切忌盲目。 

    某人在看到代码是 <a href="xxxx\u0022"> 的时候,问大家:“为什么\u0022”不行啊? 这种绕过是盲目的。 

    在测试初期,我们如果不愿意去看对方的代码逻辑,可以采用“盲目”的方式去测试(用各种特殊字符去试探),这样可以节省很多时间。但是,当我们已经能够确定,数据输出位于哪个点时,比如上面这个 xxxx ,我们已经知道是输出到了 href="之间"  的时候。我们就不能盲目的去"绕过”,一定要有针对性。这个针对性主要是以下几点。 

    A) 输出点,是直接输出,还是经过了DOM。 

      简单通俗点的说法是: 
      前者可以通过右键查看源代码,搜索到。 
      后者通过右键查看源代码是搜索不到的。 

    B) 直接输出点,是位于HTML标签里,还是位于Script脚本里,或者是Style里 

      HTML标签又分为: 
        是在HTML标签之间: <div> 内容在这里 </div> 
        还是在HTML属性之间: <img alt="内容在这里"> 
        还是在HTML事件之间:  <img onload="内容在这里"> 
      Script/style标签: 
        根据输出自己去构造闭合,保证语法正确即可。 

    C)  DOM输出点,这个需要一定的JS基础。 
      C.1) 定位输出内容的JS代码段。 
      C.2) 查看此代码段,是否存在过滤问题。 
      C.3) 如果存在,制定绕过规则。 

    D) 输出点,采用的什么过滤规则 
      D.1)了解以上B)中, 
        每个点该过滤什么字符, 
        如果没过滤什么字符,该怎么去利用。 
      D.2)逐个测试法,看看目标输出点,到底过滤了哪些字符 
      D.3)测试服务器端的一些转换逻辑,比如有些服务器会先将&quot;转换为" 
      D.4)确定是否可绕过,不能绕过的尽早放弃 

    总之,首先要了解如何防御,你才能了解,如何绕过,不能盲目。其中,B+D的规则基本是死的,偶尔碰上些服务器端过滤逻辑有问题的,是可以绕过的,尤其是服务器端采用黑名单的方式时。C则较为灵活,所谓的“绕过”往往是针对这种。

  • 相关阅读:
    Oracle Core 学习笔记二 Transactions 和 Consistency 说明
    Oracle AUTO_SPACE_ADVISOR_JOB 说明
    Windows 下 ftp 上传文件 脚本
    Oracle 11g 中 Direct path reads 特性 说明
    Linux 使用 wget 下载 Oracle 软件说明
    Oracle 10g read by other session 等待 说明
    Oracle 11g RAC INS06006 Passwordless SSH connectivity not set up between the following node(s) 解决方法
    SecureCRT 工具 上传下载数据 与 ASCII、Xmodem、Ymodem 、Zmodem 说明
    Oracle RAC root.sh 报错 Timed out waiting for the CRS stack to start 解决方法
    Oracle RESETLOGS 和 NORESETLOGS 区别说明
  • 原文地址:https://www.cnblogs.com/13ck/p/4460391.html
Copyright © 2011-2022 走看看