漏洞版本:0 e8 v+ W+ b9 t! x2 x, b
DedeCms 5.x漏洞描述:
5 Q$ K) Q6 j; l! H. H, _DedeCms是免费的PHP网站内容管理系统。
3 N" S4 M" N2 k. X A( t
( H- d4 _! a( a- K# @plus/carbuyaction.php里没有对变量进行严格的过滤: r1 `5 a5 u: A/ d+ b! t- l
) P. H9 H, U& D0 m: ^ r- T A* F
出现漏洞的两个文件为:% B' z; _( i- `" }- d
Include/payment/alipay.php8 _* x; R0 j( E
Include/payment/yeepay.php6 Y6 ^( X l3 y- Q# M4 o
漏洞均出现在respond方法里) x6 B9 r d% R8 ~
2 P" n, a2 w5 d# i: d& ?2 l3 t
Include/payment/alipay.php & S* A) L* g8 E. K8 A b9 x7 c) `
......function respond(){if (!empty($_POST)){foreach($_POST as $key => $data){$_GET[$key] = $data;}}/* 引入配置文件 */require_once DEDEDATA.'/payment/'.$_GET['code'].'.php';......* m. o6 ?+ A& G' x
7 C' |/ g3 M/ J7 t) @大概在133行左右,$_GET[‘code’]没有经过任何判断和过滤。
( q' Y& w) b3 c7 T' J) k+ `2 A- fInclude/payment/yeepay.php C8 v+ h* o4 v$ k7 ]
......function respond(){ /* 引入配置文件 */require_once DEDEDATA.'/payment/'.$_REQUEST['code'].'.php'; $p1_MerId = trim($payment['yp_account']);$merchantKey = trim($payment['yp_key']);......
, v0 _) }: L+ R! p4 w
3 X& |# d: L; P, T3 ]5 l4 G6 q: b7 r大概在145行左右,$_REQUEST['code']没有经过任何判断和过滤。<* 参考
0 x u/ w" x% ?1 x! Shttp://bugscan.net/manage/node/83
) s- e6 F4 h' Ahttp://www.cnseay.com/2515/) Y m/ o! ^! i6 d( ?# \5 F
*>& l8 [& N. p; U4 ` a2 [2 M
测试方法:" Q$ F3 H) b* ~2 K" L; g
1.http://www.dedecms.com/plus/carb ... amp;code=../../tags 上面的Exp是包含根目录下的tags.php文件包含其他后缀请自行构造截断, 使用exp测试时须要自己添加一个code等于alipay或yeepay的cookie
- ~, p' u* \/ } x2.由于bank和cod这两个文件并没有respond方法,所以如果code等于bank或者cod时将会暴错泄露路径
; a# t7 W+ \3 s: \7 o% @3 y修复方法:6 a1 K1 t/ j* M0 M4 J7 T: w# s9 C
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
+ l! m# a, j9 H' Q- A: Yhttp://www.dedecms.com/products/dedecms/1 s0 T. F Z/ b5 N. T
; n% V6 |9 J' [
临时修复:
' n( r Y5 c! t% H G0 ~1)Include/payment/alipay.php7 Y8 W0 h! [4 j8 t6 A
大概133行左右* I( U/ G$ V' t. S* t$ r
require_once DEDEDATA.'/payment/'.$_GET['code'].'.php';
3 o8 S; i) J) ~9 Y0 g: X: _替换
# F( e1 D$ d/ R require_once DEDEDATA.'/payment/'.basename($_GET['code']).'.php';
{$ J2 T! |& V5 F1 B# O, U5 W2) Include/payment/yeepay.php3 R4 y1 }/ K0 f8 h! q( S
大概在145行左右9 R4 J$ b7 {8 N1 j5 e
require_once DEDEDATA.'/payment/'.$_REQUEST['code'].'.php';
* z; ~' D# V, v- N8 M, Q 替换
9 Y/ }( ^8 J$ P6 U; R9 Z" ~/ F require_once DEDEDATA.'/payment/'.basename($_REQUEST['code']).'.php';7 \- s& X/ w$ y" E8 L' _6 }3 p" b
% u2 a8 R% I6 T H% Z$ p& {& ?7 l |