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

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

缺陷编号: WooYun-2013-20759

漏洞标题: Espcms v5.6 暴力注入

相关厂商: 易思ESPCMS企业网站管理系统

漏洞作者: Yaseng

提交时间: 2013-03-28 11:01

公开时间: 2013-04-02 11:02

漏洞类型: SQL注射漏洞

危害等级: 高

自评Rank: 20

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

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

Tags标签: 第三方不可信程序 php+数字类型注射 php源码审核 sql注射漏洞利用技巧 php源码分析 ESPCMS

14人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-03-28: 细节已通知厂商并且等待厂商处理中
2013-04-02: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

Espcms 某处挺有意思的注入,虽然对传值有加密并且随机key,但可以逆向重举这个弱伪随机数来控制sql任意参数,导致系统注入

详细说明:

interface\membermain.php 第 33行

code 区域
$db_sql = "SELECT * FROM $db_table1 LEFT JOIN $db_table2 ON a.userid = b.userid  WHERE a.userid = $this->ec_member_username_id ";



ec_member_username_id 直接从cookies的ecisp_member_info

系统对cookie进行特定的加密 并且随机出key

加密函数:

public\class_function.php 第179 行

code 区域
function eccode($string, $operation = 'DECODE', $key = '@LFK24s224%@safS3s%1f%') {
$result = '';
if ($operation == 'ENCODE') {
for ($i = 0; $i < strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key)) - 1, 1);
$char = chr(ord($char) + ord($keychar));
$result.=$char;
}
$result = base64_encode($result);
$result = str_replace(array('+', '/', '='), array('-', '_', ''), $result);
} elseif ($operation == 'DECODE') {
$data = str_replace(array('-', '_'), array('+', '/'), $string);
$mod4 = strlen($data) % 4;
if ($mod4) {
$data .= substr('====', $mod4);
}
$string = base64_decode($data);
for ($i = 0; $i < strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key)) - 1, 1);
$char = chr(ord($char) - ord($keychar));
$result.=$char;
}
}
return $result;
}



key的生成:

install\fun_center.php 第 238 行

code 区域
$pscode = rand('99', '999');
$config .= "define('db_pscode', '" . md5(md5($pscode)) . "');\r\n";





额 两次md5 随机值

在围观下 cookies中 ecisp_member_info的生成吧

interface\member.php 第 110 行

code 区域
$this->fun->setcookie('ecisp_member_info', $this->fun->eccode("$memberread[userid]|$memberread[alias]|$memberread[integral]|$memberread[mcid]|$memberread[email]|$memberread[lastip]|$ipadd|" . md5($_SERVER['HTTP_USER_AGENT']) . '|' . md5(admin_ClassURL), 'ENCODE', db_pscode));



用户id 名称 邮箱 等等信息,这些对于攻击者都是可知的,那不是可以重举99到999 的key来匹配这些信息



简单计算出key之后,即可以操作cookie,传入任意sql语句

例如 官方演示站

5.jpg



key为 95e87f86a2ffde5110e93c2823634927

查看当前语句

把member_info 明文为

1 and 1=2 union select 1,2,3,user(),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28

eccode 之后修改cookie值即可查询出mysql 当前用户

6.jpg





漏洞证明:

通过一系列编码cookie操作可以获取管理员用户名 密码

3.jpg



登陆系统后台 可在模板编辑处 getshell,从而拿下权限

10.jpg



修复方案:

过滤

使用mt_rand

改变算法

版权声明:转载请注明来源 Yaseng@乌云


漏洞回应

厂商回应:

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

忽略时间:2013-04-02 11:02

厂商回复:

漏洞Rank:16 (WooYun评价)

最新状态:

2013-04-23:此漏洞已经过官方修正,下载最新包即可!


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):
登陆后才能进行评分

评价

  1. 2013-03-27 17:04 | xsser 认证白帽子 ( 普通白帽子 | Rank:297 漏洞数:22 | 当我又回首一切,这个世界会好吗?)
    1

    给力

  2. 2013-03-27 17:06 | 瘦蛟舞 认证白帽子 ( 普通白帽子 | Rank:765 漏洞数:83 | 铁甲依然在)
    0

    @_Evil @Seay 暴力注入=0=~

  3. 2013-03-27 17:53 | king ( 路人 | Rank:15 漏洞数:2 | 喜爱安全,网络游戏安全应用漏洞挖掘)
    0

    顶 yangse

  4. 2013-03-27 17:58 | Seay ( 实习白帽子 | Rank:65 漏洞数:8 )
    0

    【虽然对传值有加密并且随机key,但可以逆向重举这个弱伪随机数来控制sql任意参数,导致系统注入】 哈哈,这种最有意思了

  5. 2013-03-27 18:01 | 酱油甲 ( 普通白帽子 | Rank:796 漏洞数:148 | 打个酱油,吃个海蜇~)
    0

    洞主好HAPPY

  6. 2013-03-27 19:01 | DragonEgg ( 实习白帽子 | Rank:75 漏洞数:18 | 冷漠无情的绅士,温柔善良的坏蛋。)
    0

    洞主4个洞,,3个已忽略,这是第四个。。。= =!

  7. 2013-03-27 19:05 | xsser 认证白帽子 ( 普通白帽子 | Rank:297 漏洞数:22 | 当我又回首一切,这个世界会好吗?)
    0

    @DragonEgg 乌云给加分吧 @xsser

  8. 2013-03-27 19:07 | Yaseng ( 实习白帽子 | Rank:62 漏洞数:7 | 干)
    0

    @DragonEgg 欢迎来到乌云单机吧 -_-

  9. 2013-03-27 20:13 | w5r2 ( 普通白帽子 | Rank:226 漏洞数:52 )
    0

    @Yaseng @Yaseng @Yaseng @Yaseng 2

  10. 2013-04-02 11:16 | 乌云 ( 实习白帽子 | Rank:39 漏洞数:5 | 菜鸟一枚, </iframe>...)
    0

    @DragonEgg 楼主好悲剧。 连着被忽略了四个。

  11. 2013-04-02 11:24 | xsser 认证白帽子 ( 普通白帽子 | Rank:297 漏洞数:22 | 当我又回首一切,这个世界会好吗?)
    0

    这官方sb吧

  12. 2013-04-02 11:52 | 乌云 ( 实习白帽子 | Rank:39 漏洞数:5 | 菜鸟一枚, </iframe>...)
    0

    @xsser 我艹。阁下爆粗口了

  13. 2013-04-02 22:28 | 银冥币 ( 实习白帽子 | Rank:65 漏洞数:24 | test" src="/upload/avatar/avatar_251_b.j...)
    0

    忽略。。

  14. 2013-04-04 09:34 | DragonEgg ( 实习白帽子 | Rank:75 漏洞数:18 | 冷漠无情的绅士,温柔善良的坏蛋。)
    0

    @Yaseng 哈哈,,让你自己再乌鸦嘴。。= =!

  15. 2015-09-01 12:47 | Elliott ( 实习白帽子 | Rank:48 漏洞数:11 | 绝逼不当程序员)
    0

    学习了!!!!

登录后才能发表评论,请先 登录