DreamArticle文章管理系统存在多个安全漏洞
添加时间:
2009-05-16
系统编号:
WAVDB-01420
影响版本:
DreamArticle V3.0
程序介绍:
可以看到用了urldecode()函数,可以用%2527引入一个单引号绕过gpc
看下面的$admin=get_admin_info($administrator,$adminpassword);
解决方案:
厂商补丁
iDreamSoft
------------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.idreamsoft.cn/
信息来源:
<* 来源: Wolves Security Team
链接:http://bbs.wolvez.org/topic/78/
*>
2009-05-16
系统编号:
WAVDB-01420
影响版本:
DreamArticle V3.0
程序介绍:
DreamArticle 是一个采用 PHP 和 MySQL 数据库构建的高效文章管理解决方案。
漏洞分析:
在admin/global.php 有这样一段代码,用来实现”记住密码”登录后台功能的。
- $administrator = get_cookie("administrator");
- $adminpassword = get_cookie("adminpassword");
- if ($administrator && $adminpassword) {
- islogin($administrator,$adminpassword);
- } else {
- unset($_SESSION['admincode']);
- set_cookie("admincode",'',time() - 31536000);
- set_cookie("adminid",'',time() - 31536000);
- set_cookie("administrator", '',time() - 31536000);
- set_cookie("adminpassword", '',time() - 31536000);
- da_admin_login();
- }
- $admin=get_admin_info($administrator,$adminpassword);
- get_cookie() 在/include/common.php
- function get_cookie($name){
- global $_COOKIE,$cookieprename;
- if (isset($_COOKIE[$cookieprename.$name])) {
- return urldecode($_COOKIE[$cookieprename.$name]);
- }
- return FALSE;
- }
- Islogin() 在admin/function.php
- function islogin($username, $password) {
- global $DreamCMS;
- $_password_=$DreamCMS->db->get_var("SELECT `password` FROM `#DC@__members` WHERE `username`='{$username}'"); //查询$username的密码
- if($password!=$_password_){ //数据库里的密码和提交的密码相比较,不一样就$ISDreamCMSADMIN=FALSE
- $ISDreamCMSADMIN=FALSE;
- if(md5(base64_encode('__DreamCMS__'.$username.'~!(*%)$!$~'.$password.'%#@)'))==DreamCMSAdmin){
- $ISDreamCMSADMIN=TRUE; //这里是实现一个超级管理员的功能的,DreamCMSAdmin定义在配置文件里。
- }
- }
- if (emptyempty($username)||emptyempty($password)||$ISDreamCMSADMIN){ //逻辑错误出现了,程序员本意是,如果$username为空,或者$password为空,或者$ISDreamCMSADMIN为false就执行登出处理,可以却忘记了在$ISDreamCMSADMIN前面加上!,这样就刚好和程序员本意相反了.也就是说这里就算我们的密码不对都可以通过这个函数。
- unset($_SESSION['admincode']);
- set_cookie("admincode",'',time() - 31536000);
- set_cookie("adminid",'',time() - 31536000);
- set_cookie("administrator", '',time() - 31536000);
- set_cookie("adminpassword", '',time() - 31536000);
- da_admin_login();
- }
- }
- function get_admin_info($username, $password) {
- global $DreamCMS;
- $admin=$DreamCMS->db->get_row("SELECT * FROM `#DC@__members` WHERE `username`='{$username}' AND password='{$password}'");
- if(emptyempty($admin)){
- if(md5(base64_encode('__DreamCMS__'.$username.'~!(*%)$!$~'.$password.'%#@)'))==DreamCMSAdmin){
- $admin->uid="1";
- }
- }
- $admin->info && $admin->info=unserialize($admin->info);
- return $admin;
- }
解决方案:
厂商补丁
iDreamSoft
------------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.idreamsoft.cn/
信息来源:
<* 来源: Wolves Security Team
链接:http://bbs.wolvez.org/topic/78/
*>