IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    CmsTop媒体版中某处sql注入漏洞

    没穿底裤发表于 2015-08-26 00:40:37
    love 0

    问题出现在 uc.php接口中,没有正确的判断UC接口是否开启,而key又是默认的。
    因为代码中自己关闭了GPC,所以会导致注入。

    $set= setting('member');
    
    $set['uc_dbtablepre'] = '`'.$set['uc_dbname'].'`.'.$set['uc_dbtablepre'];
    
    $set = array_change_key_case($set, CASE_UPPER);
    
    foreach($set as $k => $v) {
    
    	if(preg_match('/^UC_/',$k)) define($k,$v);
    
    }
    
    //在数据库中查出配置数据。然后设置为常量。

    if(!defined('IN_UC')) { //好像并没有看到 设置 IN_UC常量的地方,所以条件成立
    
    
    
    
    
    if(MAGIC_QUOTES_GPC) {
    
    	$get = _stripslashes($get); //如果开启了GPC了 那么就取消转义。
    
    }

    由于uc接口使用的是自己的数据库连接,我们随便找一个 function来调用即可

    function renameuser($get, $post) {
    
    		$uid = $get['uid'];
    
    		$usernameold = $get['oldusername'];
    
    		$usernamenew = $get['newusername'];
    
    		if(!API_RENAMEUSER) {
    
    			return API_RETURN_FORBIDDEN;
    
    		}
    
    
    
    		$this->db->query("UPDATE #table_member SET `username`='$usernamenew' WHERE userid='$uid'");
    
    		return API_RETURN_SUCCEED;
    
    	}

    这是一个不错的点 ,可以更新任意账号的密码,也可以注入回显。(管理员在同表内)

    还有synlogin函数可以登录任意账号。

    这个cms用的大网站还是非常之多的。

    案例 http://www.cmstop.com/case/
    cmstop



沪ICP备19023445号-2号
友情链接