代码改变世界

2009.04.14再次发现校内网一漏洞

2009-04-14 16:24  JimLiu  阅读(6342)  评论(36编辑  收藏  举报

文章的最前面首先申明,这篇文章中涉及到的都是技术研究范畴,本人承诺不会利用漏洞对校内网发起任何攻击,但不保证别人不会利用这个漏洞。如果有人利用此漏洞对校内网发起攻击,本人概不负责。在此也号召所有技术人员不要做这样的事情。

以下是正文。

最近校内好像不少问题,HTTP 500,NullPointerException都出来了。于是有个同学高呼“校内网要完蛋了”,无聊玩玩,还真找到个问题……

这次还是XSS

涂鸦板似乎已经防的很紧了,我对逆向技术没啥研究,尝试了一些典型方法直接放弃。

突然想起Blog的编辑器是HTML编辑器,赶紧回到Blog上,看了看是tinyMCE,WebDeveloper禁用JavaScript,tinyMCE立马死翘翘。好,开始尝试大写特写HTML。

<script></script>标签当场失败,毕竟这太弱智了点。

onclick=""失败。

a href="javascript:void(0)"居然都失败,看来还是挺紧啊……

不过最终还是发现了蛛丝马迹,CSS Expression没过滤。

那还不简单……

 

Code
博客文章写在这里,照常显示。这个封闭标签屏蔽原来的div</div>
<style>
    #lalala {
        display:none;
        background:expression((
this.innerHTML!="")?((eval(this.innerHTML+";this.innerHTML='';")==null)?"#aaa":"#666"):"#a00");
    }
</style>
<div id="lalala">
(
function(){
    window.onload
=function(){
        alert(
'foo');
    };
})();

 

熟悉的人肯定发现了,现在访问这篇日志就会把lalala这个div里的内容当js执行掉。结果就是弹出'foo'咯。

这里成功,也就是说完全可以进行脚本注入了,如果嫌这里做脚本容易被过滤太麻烦,可以直接用document.createElement和document.appendChild给做一个script标签进去,链一个远程脚本文件进来,这时候这个文件拥有当前访问的域,它发起的XHR请求、动态生成的iframe都是带着当前访问用户的Cookie的,就可以实现XSS攻击了。

经过我尝试,如果要做XSS攻击,这里用Ajax比较难,因为博客的域名是blog.xiaonei.com,而校内有很多二级域名。所以我尝试了一下用iframe做跨域,结果成功了,可以带着当前访问者的Cookie开启home.xiaonei.com,也就是他自己的管理首页,这样不是为所欲为了?当然,有验证码的地方就比较难了。

但是发表日志是不需要验证码的,也就是说,可以通过带着当前访问者的Cookie发表一片日志,内容是什么?当然就是这段代码了,这样就可以形成一个蠕虫了。可以做一个标题很具有诱惑性的日志,其中注入上蠕虫代码,一旦有人点击,自己的博客上就会发表相同的日志,人气高的用户很快就会散播很多蠕虫后代出去。

但是我只在IE里尝试成功,Firefox里好像压根没响应那个expression。

作为技术人员希望大家都不要利用这个漏洞。同时希望校内网尽快修复漏洞,保证用户的安全。