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

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

缺陷编号:wooyun-2014-066866

漏洞标题:代码审计系列8: 蝉知企业门户2.4正式版 猥琐获取管理员账户密码

相关厂商:chanzhi.org

漏洞作者: LaiX

提交时间:2014-07-01 17:40

修复时间:2014-09-29 18:34

公开时间:2014-09-29 18:34

漏洞类型:敏感信息泄露

危害等级:中

自评Rank:8

漏洞状态:厂商已经修复

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-07-01: 细节已通知厂商并且等待厂商处理中
2014-07-01: 厂商已经确认,细节仅向厂商公开
2014-08-25: 细节向核心白帽子及相关领域专家公开
2014-09-04: 细节向普通白帽子公开
2014-09-14: 细节向实习白帽子公开
2014-09-29: 厂商已经修复漏洞并主动公开,细节向公众公开

简要描述:

青岛息壤网络信息有限公司成立于2013年,由禅道软件公司青岛易软天创全资投资创办,位于美丽的青岛开发区,团队成员拥有丰富的网站设计、系统研发、服务器维护和SEO经验。我们正在打造一款开源免费的企业门户系统,以帮助企业建立品牌网站,进行宣传推广、市场营销、产品销售和客户跟踪。息壤,为天下企业提供专业的营销工具!

详细说明:

蝉知企业门户系统在安装完成后会在 \system\tmp\log\ 下生成类似

2.png


的两个文件.
我们打开 sql.20140701.log 内容如下:

20140701 13:28:01: /install.php
20140701 13:28:04: /install.php?m=install&f=step1
20140701 13:28:06: /install.php?m=install&f=step2
20140701 13:28:13: /install.php?m=install&f=step3
20140701 13:28:14: /install.php?m=install&f=step3
20140701 13:28:22: /install.php?m=install&f=step3
20140701 13:28:22: /install.php?m=install&f=step4
20140701 13:28:27: /install.php?m=install&f=step4
INSERT INTO eps_user SET `account` = 'admin',`realname` = 'admin',`password` = '86f3059b228c8acf99e69734b6bb32cc',`admin` = 'super',`join` = '2014-07-01 13:28:27'
REPLACE eps_config SET `owner` = 'system',`module` = 'common',`section` = 'global',`key` = 'version',`value` = '2.4'
20140701 13:28:27: /install.php?m=install&f=step5
REPLACE eps_config SET `owner` = 'system',`module` = 'common',`section` = 'site',`key` = 'lang',`value` = 'zh-cn'


可以发现在程序安装的时候将之前设置的管理员账户密码的SQL命令写入了这个Log文件。
具体代码在 system\framework\router.class.php 的第 1602 行

public function saveSQL()
{
if(!class_exists('dao')) return;
$sqlLog = $this->getLogRoot() . 'sql.' . date('Ymd') . '.log';
$fh = @fopen($sqlLog, 'a');
if(!$fh) return false;
fwrite($fh, date('Ymd H:i:s') . ": " . $this->getURI() . "\n");
foreach(dao::$querys as $query) fwrite($fh, " $query\n");
fwrite($fh, "\n");
fclose($fh);
}


可以发现文件名是根据当时安装的日期命名的。
那我们可否通过获取某些远程文件的最后创建日期来找确定安装日期,从而找到这个LOG文件呢。

漏洞证明:

通过上面的分析,试着找一个案例。

3.png

4.png


通过官网上的论坛找到了一个案例。
然后我们尝试得到安装的日期,这里可以通过观察响应头文件中的If-Modified-Since参数 找到。

5.png


得知日期后,我们构造如下URL:

http://www.sdled.net/system/tmp/log/sql.20140628.log


6.png


可以看见管理员的账号和MD5后的密码瞬间暴露出来。

修复方案:

这个日志文件有点多余

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


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:2

确认时间:2014-07-01 18:12

厂商回复:

感谢Laix的细心审计,已经确认。近期会发布一个版本修复该问题。

最新状态:

2014-07-01:我们近期会发布一个版本,日志改为php格式结尾的来记录。同时升级的时候删除之前的日志。也会给用户相应的安全提示。

2014-08-09:蝉知系统有两个目录system, www,www是所有对外公开请求文件的目录。考虑到有很多虚拟机的用户,这样的目录结构部署起来不方便。所以可以将system下面的文件拷贝到www目录下面。这样部署方便,但理论上来讲其他用户就可以通过http访问到system下面的文件。蝉知系统的密码是做过加盐处理的。最新的2.5版本已经增强了日志的管理。