90_ 发表于 2014-3-11 12:06:50

ShopNC多个漏洞(可暴力 getshell)

前言
ShopNC是一款S是网城创想公司旗下服务于企业客户的电子商务系统,基于PHP5技术采用MVC 模式开发,本文介绍了shopnc多个漏洞结合,可getshell有点暴力-_-
任意文件删除
文件 control\store.php 1438 行 (还有几个同样的地方,新版已修复)
$model_upload = Model('upload');
      $file_info = $model_upload->getOneUpload(intval($_GET['file_id']));
      if(!$file_info){
            @unlink(ATTACH_SLIDE.DS.$_GET['img_src']);
      }else{

本地文件包含
文件 /framework/core/base.php 71行
$act_file = realpath( BasePath.DS."control".DS.$_GET['act'].".php" );
    }
    if ( is_file( $act_file ) )
    {
      require( $act_file );
      $class_name = $_GET['act']."Control";
      if ( class_exists( $class_name ) )
后台更新缓存写shell
文件 model/adv_model.php 416 行
/**
   * 更新一条广告缓存
   *
   * @param unknown_type $adv
   * @return unknown
   */
    public function makeAdvCache($adv){
      $lang   = Language::getLangContent();
      $tmp .= "<?php \r\n";
      $tmp .= "defined('InShopNC') or exit('Access Invalid!'); \r\n";
      if (is_numeric($adv) && $adv > 0){

            $condition['adv_id'] = $adv;
            $adv_info = $this->getList($condition);
            $adv = $adv_info['0'];
      }
    ..................................
                     $content = addslashes($v);
            $content = str_replace('$','\$',$content);
            //防止有$符号被解析成变量
            $tmp .= '$'.$k." = \"".$content."\"; \r\n";
      }
      //缓存文件存放位置及文件名
      $cache_file = BasePath.'/cache/adv/adv_'.$adv['adv_id'].'.cache.php';
      file_put_contents($cache_file,$tmp);
继续跟进getList函数
public function getList($condition=array(), $page='', $limit='', $orderby=''){
    $param= array();
    $param['table'] = 'adv';
    $param['field'] = $condition['field']?$condition['field']:'*';
    $param['where'] = $this->getCondition($condition);
    if($orderby == ''){
      $param['order'] = 'slide_sort, adv_id desc';
    }else{
      $param['order'] = $orderby;
    }
    $param['limit'] = $limit;
    return Db::select($param,$page);
}
写文件时,从数据库中遍历key,跟value 未过滤key,key 可以从数据库读取,当有数据库可控时,即可写入任意文件.
ShopNc GetShell
结合以上三个漏洞,即可优雅的 getshell
流程
任意文件删除 => 重装 => 更改数据库 shopnc_adv 键值 =>更新广告缓存 =>getshell
具体步骤
**** Hidden Message *****

By:Yaseng

08sec1 发表于 2014-3-11 12:28:23

沙发 支持

Mapleleaves 发表于 2014-3-11 12:50:45

这个洞我看行

蓝色_ 发表于 2014-3-11 13:19:08

很黄很暴力

love 发表于 2014-3-11 13:44:14

不错!试一试!

蓝颜 发表于 2014-3-11 13:57:25

看看了 哈哈   

C4r1st 发表于 2014-3-11 16:15:47

看下这个又暴力又优雅的getshell步骤、

风雨 发表于 2014-3-11 16:30:25

不懂代码的孩子伤不起

world 发表于 2014-3-11 17:36:26

hi2013 发表于 2014-3-11 17:47:08

90碉堡了,又一给力0day
页: [1] 2 3 4 5
查看完整版本: ShopNC多个漏洞(可暴力 getshell)