漏洞版本:
5 x, R) _& H1 t! T. jDedeCms 5.x漏洞描述:8 G, S6 L5 \* \0 N( w4 \
DedeCms是免费的PHP网站内容管理系统。
# s- r* v* o# t) L- B% u8 e4 O( g7 Y& X1 w1 `5 L7 R4 H
plus/carbuyaction.php里没有对变量进行严格的过滤
) v. `6 P3 _: C, ?, O- g0 A$ y! Z6 ]- B
. C" n3 \% |1 r. ?- O3 S% y& F出现漏洞的两个文件为:
& Z6 C R5 k4 v' LInclude/payment/alipay.php
: q- O% T4 ]$ p4 x- jInclude/payment/yeepay.php0 j4 u2 `2 h; N' F' ^, ?
漏洞均出现在respond方法里# ~" \& A3 O: v9 Z
7 k# I7 B+ A* f; g% y: p. X; aInclude/payment/alipay.php $ U0 ~0 k0 B! a) Y/ H: G
......function respond(){if (!empty($_POST)){foreach($_POST as $key => $data){$_GET[$key] = $data;}}/* 引入配置文件 */require_once DEDEDATA.'/payment/'.$_GET['code'].'.php';......" Q2 m3 b- F r
8 X8 Y+ o& Q" [
大概在133行左右,$_GET[‘code’]没有经过任何判断和过滤。0 M; Y4 J: {( s: C7 F
Include/payment/yeepay.php! p v3 y4 x' f; f: }+ A" C
......function respond(){ /* 引入配置文件 */require_once DEDEDATA.'/payment/'.$_REQUEST['code'].'.php'; $p1_MerId = trim($payment['yp_account']);$merchantKey = trim($payment['yp_key']);......6 h u$ |& p" w; E4 ]( u
. W5 k& s; J5 M$ v7 n3 G2 \* `7 ~" e; K! y
大概在145行左右,$_REQUEST['code']没有经过任何判断和过滤。<* 参考' \- Y) M% s* ?& w. t% [* J
http://bugscan.net/manage/node/83
& u% C7 V" V. m( [: L& I0 Bhttp://www.cnseay.com/2515/4 Y4 x/ W: M7 |9 t s
*>8 ] \0 U& k& T; P5 D7 a0 @6 ~% ^) d( ^
测试方法:
. W# |# ^+ {0 m8 Z1 w6 t7 \1.http://www.dedecms.com/plus/carb ... amp;code=../../tags 上面的Exp是包含根目录下的tags.php文件包含其他后缀请自行构造截断, 使用exp测试时须要自己添加一个code等于alipay或yeepay的cookie
, r) ~" G4 |, ?" s/ \$ i4 p& d% M2.由于bank和cod这两个文件并没有respond方法,所以如果code等于bank或者cod时将会暴错泄露路径
1 o5 ^! q0 @2 M: W2 ~& G( k修复方法:
( q9 R& O9 y2 U4 z8 P' |, u目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
# r+ C3 m! W2 b& w; zhttp://www.dedecms.com/products/dedecms/* w" _; S# N J' u3 G
+ k! `, B. G' G. Y9 j9 m8 E! L
临时修复: 6 S8 e* d/ ~5 }
1)Include/payment/alipay.php c; t/ @7 B% Q* h3 e4 [8 t
大概133行左右2 u6 i# ?/ q2 V/ H. N# x& ]4 h3 X
require_once DEDEDATA.'/payment/'.$_GET['code'].'.php';
7 B" S# p( H4 i2 x8 C& a替换
}0 _; G7 D/ Y require_once DEDEDATA.'/payment/'.basename($_GET['code']).'.php';/ h8 k0 m4 U& p' h
2) Include/payment/yeepay.php; \5 @) A: d- K J( ]* G
大概在145行左右% H# I1 B7 A8 C
require_once DEDEDATA.'/payment/'.$_REQUEST['code'].'.php';/ ?+ T8 A9 h1 i) R. _' s
替换
) j$ H% h7 G# |( t0 U, N require_once DEDEDATA.'/payment/'.basename($_REQUEST['code']).'.php';0 h/ F. F% e; q+ m
* f, P) e7 I- f$ D% ]
|