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

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

缺陷编号:wooyun-2014-060159

漏洞标题:phpmps 注入 (可修改其他用户密码,官网成功)

相关厂商:phpmps.com

漏洞作者: ′雨。

提交时间:2014-05-10 22:48

修复时间:2014-08-08 22:50

公开时间:2014-08-08 22:50

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-05-10: 细节已通知厂商并且等待厂商处理中
2014-05-12: 厂商已经确认,细节仅向厂商公开
2014-05-15: 细节向第三方安全合作伙伴开放
2014-07-06: 细节向核心白帽子及相关领域专家公开
2014-07-16: 细节向普通白帽子公开
2014-07-26: 细节向实习白帽子公开
2014-08-08: 细节向公众公开

简要描述:

验证不足啊。

详细说明:

在api/uc.php中

define('IN_PHPMPS', true);
define('UC_CLIENT_VERSION', '1.5.0'); //note UCenter 版本标识
define('UC_CLIENT_RELEASE', '20081031');
define('API_DELETEUSER', 1); //note 用户删除 API 接口开关
define('API_RENAMEUSER', 1); //note 用户改名 API 接口开关
define('API_GETTAG', 1); //note 获取标签 API 接口开关
define('API_SYNLOGIN', 1); //note 同步登录 API 接口开关
define('API_SYNLOGOUT', 1); //note 同步登出 API 接口开关
define('API_UPDATEPW', 1); //note 更改用户密码 开关
define('API_UPDATEBADWORDS', 1); //note 更新关键字列表 开关
define('API_UPDATEHOSTS', 1); //note 更新域名解析缓存 开关
define('API_UPDATEAPPS', 1); //note 更新应用列表 开关
define('API_UPDATECLIENT', 1); //note 更新客户端缓存 开关
define('API_UPDATECREDIT', 0); //note 更新用户积分 开关
define('API_GETCREDITSETTINGS', 0); //note 向 UCenter 提供积分设置 开关
define('API_GETCREDIT', 0); //note 获取用户的某项积分 开关
define('API_UPDATECREDITSETTINGS', 0); //note 更新应用积分设置 开关
define('API_RETURN_SUCCEED', '1');
define('API_RETURN_FAILED', '-1');
define('API_RETURN_FORBIDDEN', '-2');
//note 普通的 http 通知方式
if(!defined('IN_UC'))
{
error_reporting(0);
set_magic_quotes_runtime(0);
defined('MAGIC_QUOTES_GPC') || define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc());
include '../include/common.php';
include '../include/uc.inc.php';
$_DCACHE = $get = $post = array();
$code = @$_GET['code'];
parse_str(_authcode($code, 'DECODE', UC_KEY), $get);
if(MAGIC_QUOTES_GPC) {
$get = _stripslashes($get);
}
$action = $get['action'];
require_once '../uc_client/lib/xml.class.php';
$post = xml_unserialize(file_get_contents('php://input'));


UC_KEY 默认为phpmps。 官网的也如此。
为1的我们都可以调用。
那就来调用这个把

function updatepw($get, $post) {

global $db,$table;
if(!API_UPDATEPW) {
return API_RETURN_FORBIDDEN;
}

$username = $get['username'];
$password = $get['password'];
$newpw = md5($password);
$db->query("UPDATE {$table}member SET password='$newpw' WHERE username='$username'");
return API_RETURN_SUCCEED;
}


这里 是个update的语句 所以我们可以更改其他用户的密码。
然后我们自己生成一个加密的注入语句。。。

漏洞证明:

测试demo。

ph1.jpg

修复方案:

验证。

版权声明:转载请注明来源 ′雨。@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-05-12 10:28

厂商回复:

感谢作者提供漏洞信息,作者是一个非常细心的人,非常感谢。

最新状态:

暂无