PHPCMS V9 视频分享模块SQL注射漏洞分析

暗月博客 2019年11月21日15:29:35评论385 views字数 1747阅读5分49秒阅读模式
摘要

其实这个0day前几天就发现了,只是今天放出来是因为我最重要的人。。 http://www.cnblogs.com/y0umer/archive/2012/12/25/2833240.html

其实这个0day前几天就发现了,只是今天放出来是因为我最重要的人。。

 http://www.cnblogs.com/y0umer/archive/2012/12/25/2833240.html

废话不多说了,直接上代码分析

         /phpcms/modules/video.php(78行代码)

/**      *       * 视频添加方法      */ public function add() { if ($_POST['dosubmit']) {             //首先处理,提交过来的数据              $data['vid'] = $_POST['vid'];  // 很明显VID没有过滤 if (!$data['vid']) showmessage(L('failed_you_video_uploading'), 'index.php?m=video&c=video&a=add');             $data['title'] = isset($_POST['title']) && trim($_POST['title']) ? trim($_POST['title']) : showmessage(L('video_title_not_empty'), 'index.php?m=video&c=video&a=add&meunid='.$_GET['meunid']);             $data['description'] = trim($_POST['description']);             $data['keywords'] = trim(strip_tags($_POST['keywords']));             //其次向vms post数据,并取得返回值             $get_data = $this->ku6api->vms_add($data);             if (!$get_data) {                 showmessage($this->ku6api->error_msg);             }             $data['vid'] = $get_data['vid'];             $data['addtime'] = SYS_TIME;             $data['userupload'] = intval($_POST['userupload']); //这才是重点..             $videoid = $this->v->add($data); // 进数据库了,亲..             if ($videoid) {                 showmessage(L('operation_success'), 'index.php?m=video&c=video&a=init&meunid='.$_GET['meunid']);             } else {                 showmessage(L('operation_failure'), 'index.php?m=video&c=video&a=add&meunid='.$_GET['meunid']);             }         } else {             if(!$this->ku6api->testapi()) {                 showmessage(L('vms_sn_skey_error'),'?m=video&c=video&a=setting&menuid='.$_GET['menuid']);             }             $flash_info = $this->ku6api->flashuploadparam();             $show_validator = true;             include $this->admin_tpl('video_add');         }     }

好,下面我们继续分析进数据库的那一刹那。。

*/     public function add($data = array()) {         if (is_array($data) && !empty($data)) {             $data['status'] = 1;             $data['userid'] = defined('IN_ADMIN') ? 0 : param::get_cookie('_userid'); //想玩cookie注入吗?              //虽然这里没有提到$_data[‘vid’],但是已经在我歌声里了。。 $vid = $this->db->insert($data, true); //插入了,亲!!             return $vid ? $vid : false;          } else {             return false;

但是,利用漏洞有2个前提..

 

利用这个漏洞提前:

  1. 允许注册用户
  2. 允许视频上传

利用漏洞: 由于vid是取决于html提交过来的,所以我们只要修改vid的值成“SQL语”就可以了。。

PHPCMS V9 视频分享模块SQL注射漏洞分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
暗月博客
  • 本文由 发表于 2019年11月21日15:29:35
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   PHPCMS V9 视频分享模块SQL注射漏洞分析http://cn-sec.com/archives/70793.html

发表评论

匿名网友 填写信息