天下 发表于 2017-10-9 22:27

开源PHP网络验证 RainCms 2.2.0 20170510 不知这是Bug还是我配置的事

本帖最后由 天下 于 2017-10-9 22:30 编辑

我在125.la上下载的作者发布的2.2.0版本的Raincms。
发现一个问题,我是小菜,大家可以测试下看看。是我配置的事还是真的有bug,还是作者故意放出来的版本。
我在我搭建的网站上随意注册了一个帐号,然后直接输入后台网址访问管理后台,竟然直接进去了。并且所有功能都可以操作。






开源不容易,我希望只是Bug而已。我在百度上搜索其它的搭建网站没有这种问题。但不知道版本是否跟我相同。。

天下 发表于 2017-10-11 09:13

下面这个代码。是作者在精易论坛放出的2.2.0版本的。文件路径:\apps\admin\controller\base.php
后台管理页面验证的。只验证了下是否登陆,我去,作者你要说你不是故意的我都不信。难道你不够专业吗?
<?php
namespace app\admin\controller;
use think\Session;
use think\Controller;
use think\Db;
use think\Request;
use think\auth\Auth;
use app\common\controller\Fn;

class Base extends controller {
       
        public function _initialize() {
                $request = Request::instance();
                if(is_login()==FALSE){//是否登录
                        $this->redirect('home/Login/index');//跳转到登录页
                }               
                $fn      = new fn;
               
                $node    = $fn->getNode();
                $Controller= $fn->getController();

                $auth    = new Auth();
                $auths   = $auth -> check(strtolower($node), Session('user.user_id'));               
                if(Session('user.user_id') == config('global_config.admin_id')){
                        $auths=TRUE;
                }else{
                       
                }
                $menu=new Menu();
                $menu=$menu->menu();
                $parent_id='';
                //echo '<pre>';
                //var_dump($menu);
                foreach($menu as $key=>$val){
                        if($menu[$key]['url'] == $node){                               
                                $menu[$key]['class']='active';
                                $parent_id=$menu[$key]['parent_id'];
                        }
                        //echo $menu[$key]['url'].'='.$Controller.'<br>';
                        if(false !== strpos($menu[$key]['url'],$Controller)){
                                $parent_id=$menu[$key]['parent_id'];
                        }
                }

                $this->assign('parent_id',$parent_id);
                $this->assign('menu',$menu);
        }

}



下面是2.2.2版本的。从官网下的。修复过的。
<?php
namespace app\admin\controller;
use think\Session;
use think\Controller;
use think\Db;
use think\Request;
use think\auth\Auth;
use app\common\controller\Fn;

class Base extends controller {
       
        public function _initialize() {
                $request = Request::instance();
                if(is_login()==FALSE){//是否登录
                        $this->redirect('home/Login/index');//跳转到登录页
                }               
                $fn      = new fn;
               
                $node    = $fn->getNode();
                $Controller= $fn->getController();

                $auth    = new Auth();
                $auths   = $auth -> check(strtolower($node), Session('user.user_id'));               
                if(Session('user.user_id') == config('global_config.admin_id')){
                        $auths=TRUE;
                }else{
                       
                }
                //$auths==FALSE;
                if($auths==FALSE){
                        if (Request::instance()->isAjax()){
                                echo '没有权限!';
                                exit;
                        }else{
                                $this->error('没有访问权限');
                          exit;
                        }
                }
                $menu=new Menu();
                $menu=$menu->menu();
                $parent_id='';
                //echo '<pre>';
                //var_dump($menu);
                foreach($menu as $key=>$val){
                        if($menu[$key]['url'] == $node){                               
                                $menu[$key]['class']='active';
                                $parent_id=$menu[$key]['parent_id'];
                        }
                        //echo $menu[$key]['url'].'='.$Controller.'<br>';
                        if(false !== strpos($menu[$key]['url'],$Controller)){
                                $parent_id=$menu[$key]['parent_id'];
                        }
                }

                $this->assign('parent_id',$parent_id);
                $this->assign('menu',$menu);
        }

}

天下 发表于 2017-10-11 09:19

下面代码是从官网下的更低一点的版本。2.1.3,低版本都有验证是否管理员,怎么你发出来的2.2.0版本就没有了呢。我希望你只是忘记了。这可比后门还严重。。
<?php
namespace app\admin\controller;
use think\Session;
use think\Controller;
use think\Db;
use think\Request;
use auth;

class Base extends controller {
       
        public function _initialize() {
               
      $request = Request::instance();
                $web_path = $request->root();
                $module_name = $request->module();
                $controller_name = $request->controller();
                $action_name = $request->action();          
                $loginuid = Session('uid');
                $authName = $module_name.'/'.$controller_name.'/'.$action_name;               
                $auth = new \auth\Auth();
                $res=$auth -> check(strtolower($authName), $loginuid);
               
                if($loginuid==1){
                        $res=TRUE;
                }
                if($controller_name == 'Login'){
                        $res=TRUE;
                }               
                if($res==FALSE){
                        if (Request::instance()->isAjax()){
                                echo '没有权限!';
                                exit;
                        }else{
                                $this->error('没有访问权限');
                          exit;
                        }
                       
                }
                if(!checkmodul('agents') && $controller_name == 'Agents'){
                        $this->error('您未购买代{过}{滤}理模块,请至 www.rain68.com 购买');
                          exit;
                }
                $agenttype=Db::name('agents_type')->where('id',1)->find();
                if(!$agenttype){
                        $data = [
                          'id' => 1,
                          'name' => '普通',
                          'discount' => '100',
                          'min_score' => '0',
                        ];
                        Db::name('agents_type')->insert($data);
                }
               
                $nav=new Nav();
                $leftnav=$nav->leftnav();
                               
                $this -> assign('controller', $leftnav['controller']);
                $this -> assign('action', $leftnav['action']);                                                                                                                                                                                                       
                $this -> assign('leftinfo', $leftnav['menuinfo']);
                $this -> assign('levelid', $leftnav['levelid']);
                $loginuser = Session::get('username');               
                $this -> assign('loginuser', $loginuser);
                $this -> assign('loginuid', $loginuid);
               

        }
   
       

}

984754551 发表于 2017-10-9 22:37

都开源了,自己改一下嘛

a634085832 发表于 2017-10-9 22:56

这个应该不是你原创的吧,建议写上出处

tmpsforjxp 发表于 2017-10-10 00:29

改下数据库字段

天下 发表于 2017-10-10 08:39

a634085832 发表于 2017-10-9 22:56
这个应该不是你原创的吧,建议写上出处

请注意审题,我说了在精易上下的。并且第一张图片就是出处了吧。

yuan71058 发表于 2017-10-10 11:06

wshq 发表于 2017-10-10 13:39

群里有补丁,但是还是有些问题. 自己玩玩还行 实际应用需要自己改

天下 发表于 2017-10-11 09:08

wshq 发表于 2017-10-10 13:39
群里有补丁,但是还是有些问题. 自己玩玩还行 实际应用需要自己改

嗯。2.2.2版本已经修复了,但是我怀疑作者是故意放出这样的版本。稍微懂点的人都知道后台加用户验证。更别说作者专业的了。。
页: [1] 2
查看完整版本: 开源PHP网络验证 RainCms 2.2.0 20170510 不知这是Bug还是我配置的事