IT资讯/综合软件下载站!┆ 最新软件 最新文章 最新手机 UFO外星人 网站分类

您当前的位置→图文中心安全防范QQ空间的DOM XSS

QQ空间的DOM XSS


2009/4/18 7:33:12 编辑:佚名 来源:本站整理 
今天给大家分享QQ空间的DOM XSS安全防范文章。喜欢QQ空间的DOM XSS的可以分享QQ空间的DOM XSS给你的好友。

传统的依靠特征码探测的Web漏洞扫描器是扫不到DOM XSS的, 为了更好的发现和修复漏洞, 所以有必要研究下DOM XSS的检测。

喜欢安全防范的网友不妨去看看下面的文章:
  •      一年多以前, 针对公司一些带参数的HTML页面我写了一个vbs脚本来实现DOM XSS检测。 大体思想是先使用爬虫抓一些含有参数的HTML页面(例如Google Hacking:inurl:html?url= site:xxx.com.cn), 然后在vbs中创建IE对象(InternetExplorer.Application)修改url中的参数访问页面, url参数的字符是“javascript:window.status="xsstest"”, 然后在vbs中调用IE对象的StatusTextChange事件, 如果StatusText等于xsstest就可以判断出基于DOM的XSS。

        这个方案不是很好, 所以公司的DOM XSS一直没有解决, 参考了一些业界的商业/免费漏洞扫描器, 这个问题都没有解决。

        所以今天又旧话重提, 继续来改进该方案。

        嗯, 请先学习一下预备知识, JavaScript的函数重载。 我们新的思路是利用函数重载, 自己构造代码替换掉造成XSS的几个JS函数, 然后检查函数中的参数值, 发现特殊字符就大叫一声:It is DOM XSS!

        先看一段模拟代码:

    <title>DOM XSS Detect Demo</title>

    <script>
    //保存原来的document.getElementById
    sss = document.getElementById;
    //保存原来的document.write(ln)
    _echo = document.write;
    _echoln = document.writeln;
    //保存原来的eval
    _eval = eval;
    //保存原来的window.navigate
    _navigate = window.navigate

    var vs;
    function _document(){
    this.write = hookecho;
    this.writeln = hookecho;
    this.location = hooklocation;
    this.getElementById = _getElementById;
    this.navigate = hooknavigate;
    }

    function _getElementById(s){
    vs = s;
    setTimeout("GetinnerHTML();", 1000);
    return sss(s);
    }
    function GetinnerHTML(){
    var tmpString = sss(vs).innerHTML;
    if(tmpString.toLowerCase().indexOf("<hacker>")!=-1){
       alert("没有过滤<>, 或许有XSS");
    }
    }
    function hookecho(s){
    var tmpString = s;
    if(tmpString.toLowerCase().indexOf("<hacker>")!=-1){
       alert("没有过滤<>, 或许有XSS");
    }
    _echo(tmpString);
    }
    function hookeval(s){
    if(s.toLowerCase().indexOf("securitytest")!=-1){
       alert("eval可控, 存在XSS");
    }
    _eval(s);
    }
    function hooknavigate(s){
    alert(s);
    }

    var mydocument = new _document();
    document.write = mydocument.write;
    document.writeln = mydocument.writeln;
    document.getElementById = mydocument.getElementById;
    eval = hookeval;
    window.navigate = hookeval;
    </script>
    <div id="hi">ss</div>
    <script language="javascript">
    var g_url;
    function QueryList()
    {
       var url = window.location.href;
       var pos = url.indexOf("?");
       var suburl= url.substring(pos+1,url.length);
       var pos1 = suburl.indexOf("=");
       g_url = suburl.substring(pos1+1,url.length);

    }
    QueryList();
    </script>

    <script>eval( g_url);</script>

        嗯, 很好, 自己看代码, url里面要构造我们的关键字哦。 我们实现了对函数document.write、document.writeln、eval的重载, 一旦代码中调用这些函数就会先进入我们的代码检查是否被XSS。 innerHTML是属性, 没法重载, 所以我们先放过它, 然后用setTimeout查看改变为我们的特征字符没有。

        等等, 转向的函数window.navigate、属性document.location等没法重载啊, 没关系, 前面不是说了用IE对象吗, 在关联的事件中检查要转向的值。

        最后一个问题, 这段JS要在整个页面之前执行, 怎么弄?简单, 你一定见过ARP劫持会话插入一段HTML代码在页面最前面吧——不是叫你ARP欺骗, 可以自己架一个HTTP道理, 把通过代理的HTTP请求都加一段script。

        基本上就是这样, 效率肯定不敢保证, 也不敢保证一定能够解决所有造成XSS的JS函数, 其实解析JS才是王道, 呃, 或许你以后可以再看到我或者别人写这个题目。

    12下一页

    相关文章
  • QQ应用管理器找不到?QQ应用管理器用来干什么?
  • QQ硬盘是什么?QQ硬盘有什么用
  • QQ运动怎么快速升级?QQ运动最快升级的方法
  • 一次性删除多个QQ好友,批量删除QQ好友教程
  • 为什么王者荣耀QQ区的难度比微信区高多
  • QQ经常掉线是怎么回事?QQ掉线的原因分析
  • 手机qq怎么防盗?手机QQ密保更改方法
  • 教你如何解散QQ群?群解散后该群即不存在
  • 相关推荐
  • qq隔离区高清图片(qq微信隔离背景图) 高清无水印 最新版
  • 天人QQ技术网站系统(源码工具) 3.75 最新版
  • 坑爹代码查看器(qq飞车滴滴改车代码查看器) v1.0 最新版
  • QQ名片分割器(QQ名片照片墙图分割软件) v1.0 最新版
  • QQ机器人小冰测试版(QQ机器人) v1.0 绿色最新版
  • 嗨星QQ群成员提取器(嗨星QQ群成员提取) v6.8 最新版
  • QQ绿标认证短网址链接生成软件(短网址生成软件) v1.1 最新版
  • 滴滴改车(qq飞车滴滴改车辅助) v1.12.0 最新版
  • 发表评论
    栏目列表
    阅读排行
    网站帮助 - 广告合作 - 下载声明 - 网站地图