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

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

缺陷编号: WooYun-2013-23681

漏洞标题: Espcms V5.6.13.04.22 UTF8 正式版后台逻辑验证错误漏洞之2/N

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

漏洞作者: Code_Sec

提交时间: 2013-05-14 08:35

公开时间: 2013-08-09 08:36

漏洞类型: 设计缺陷/逻辑错误

危害等级: 高

自评Rank: 10

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

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

Tags标签: 逻辑错误

0人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-05-14: 细节已通知厂商并且等待厂商处理中
2013-05-19: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2013-07-13: 细节向核心白帽子及相关领域专家公开
2013-07-23: 细节向普通白帽子公开
2013-08-02: 细节向实习白帽子公开
2013-08-09: 细节向公众公开

简要描述:

系统后台权限逻辑校验存在问题,导致后台某模块功能被绕过和非授权访问

详细说明:

后台管理员权限校验在文件\public\class_connector.php:

code 区域
function admin_purview() {
if ($this->fun->accept('archive', 'R') == 'filemanage' && $this->fun->accept('action', 'R') == 'batupfilesave') {

$ecisp_admininfo = $this->fun->accept('ecisp_admininfo', 'G');
$esp_powerlist = $this->fun->accept('esp_powerlist', 'G');





$gettype = false;
} else {
$ecisp_admininfo = $this->fun->accept('ecisp_admininfo', 'C');
$esp_powerlist = $this->fun->accept('esp_powerlist', 'C');
$gettype = true;
}

$arr_purview = explode('|', $this->fun->eccode($ecisp_admininfo, 'DECODE', db_pscode));

$this->esp_powerlist = explode('|', $this->fun->eccode($esp_powerlist, 'DECODE', db_pscode));

list($this->esp_adminuserid, $this->esp_username, $this->esp_password, $this->esp_useragent, $this->esp_powerid, $this->esp_inputclassid, $this->esp_softurl) = $arr_purview;
if ($gettype) {
if (empty($this->esp_username) || empty($this->esp_adminuserid) || md5(admin_AGENT) != $this->esp_useragent || md5(admin_ClassURL) != $this->esp_softurl) {
$condition = 0;
} else {
$condition = 1;
}
} else {
if (empty($this->esp_username) || empty($this->esp_adminuserid) || md5(admin_ClassURL) != $this->esp_softurl) {
$condition = 0;
} else {
$condition = 1;
}
}
if ($condition == 0) {

if ($this->fun->accept('archive', 'R') != 'adminuser' && $this->fun->accept('action', 'R') != 'login') {
header('location: index.php?archive=adminuser&action=login');
exit();
}
} else {

if ($condition == 1 && $this->fun->accept('point', 'R') == '' && $this->fun->accept('archive', 'R') == '' && $this->fun->accept('action', 'R') == '') {
header('location: index.php?archive=management&action=tab&loadfun=mangercenter&out=tabcenter');
exit();
}
}





逻辑校验存在问题:

if ($condition == 0) {



if ($this->fun->accept('archive', 'R') != 'adminuser' && $this->fun->accept('action', 'R') != 'login') {

header('location: index.php?archive=adminuser&action=login');

exit();

}

当archive=adminuser,但是action变量不等于login时就不会被跳转到登录页。但是在文件adminsoft\control\adminuser.php中

code 区域
function onlogin() {
parent::start_template();
if ($this->fun->accept('logoutid', 'C') == 1) {
$this->ectemplates->assign('systemTitle', $this->lng['adminuser_login_lout_error']);
$this->fun->setcookie('logoutid', 0);
} else {
$this->ectemplates->assign('systemTitle', $this->lng['adminuser_login_login_error']);
}
$this->ectemplates->display('login');
}

function onlogin_into() {
include_once admin_ROOT . '/public/class_seccode.php';

list($new_seccode, $expiration) = explode("\t", $this->fun->eccode($_COOKIE['ecisp_seccode'], 'DECODE'));
$code = new seccode();
$code->seccodeconvert($new_seccode);
parent::start_template();
$db_table = db_prefix . "admin_member";
$linkURL = $_SERVER['HTTP_REFERER'];



还可以调用该类的其他方法,如方法onlogin_into()

漏洞证明:

**.**.**.**/adminsoft/index.php?archive=adminuser&action=login_into

也就是可以调用adminuser.php这个后台文件的其他功能。

修复方案:

改逻辑校验

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


漏洞回应

厂商回应:

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

忽略时间:2013-08-09 08:36

厂商回复:

最新状态:

暂无


漏洞评价:

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

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

评价

  1. 2013-05-14 08:53 | 专业种田 认证白帽子 ( 核心白帽子 | Rank:1636 漏洞数:207 | 没有最专业的农民,只有更努力地耕耘..........)
    0

    又来高手

  2. 2013-05-14 10:20 | 煦阳。 ( 普通白帽子 | Rank:134 漏洞数:27 | 这个人很懒,什么都没留下。)
    0

    果然连载

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