漏洞版本:
$ ~( y5 j) u9 {6 J" j* [5 a. hDedeCms 5.x漏洞描述:$ _4 v' L4 S8 w# C
DedeCms是免费的PHP网站内容管理系统。 \# K- w9 n& q) y; _. L8 N2 K
1 J& n8 K' `) q( g# \; E
plus/carbuyaction.php里没有对变量进行严格的过滤; v7 w9 Y% |2 O$ }
8 s7 u8 ], F+ v
出现漏洞的两个文件为:2 U( K; }" u0 @
Include/payment/alipay.php
' [: B) X( G0 w; D V% }$ LInclude/payment/yeepay.php( U! q/ z8 V* L, ?1 R$ p9 ~
漏洞均出现在respond方法里
' C9 _) v ]( s8 v# ~9 v3 X" j8 Q5 A
4 i B! S, y5 U: qInclude/payment/alipay.php
! H( W) t! B6 e/ a4 R. \......function respond(){if (!empty($_POST)){foreach($_POST as $key => $data){$_GET[$key] = $data;}}/* 引入配置文件 */require_once DEDEDATA.'/payment/'.$_GET['code'].'.php';......3 n+ O- X A# P
0 c! C I4 _; N( r大概在133行左右,$_GET[‘code’]没有经过任何判断和过滤。5 V, h) Q2 U/ E3 c/ B W( u
Include/payment/yeepay.php, k$ ?& f# Z7 {/ S1 F" O
......function respond(){ /* 引入配置文件 */require_once DEDEDATA.'/payment/'.$_REQUEST['code'].'.php'; $p1_MerId = trim($payment['yp_account']);$merchantKey = trim($payment['yp_key']);......& w3 k; l' r( r* p+ P6 q
/ G- C5 K. m7 c4 y大概在145行左右,$_REQUEST['code']没有经过任何判断和过滤。<* 参考1 _& d% d) g4 S ?
http://bugscan.net/manage/node/83
1 B. W" m# S {; [$ {. r, g/ Y. z4 ahttp://www.cnseay.com/2515/; K" O+ Z' [" i# t# t/ m
*>/ m+ O, V% a* c' N' R
测试方法:
4 u3 `& c- |" o1.http://www.dedecms.com/plus/carb ... amp;code=../../tags 上面的Exp是包含根目录下的tags.php文件包含其他后缀请自行构造截断, 使用exp测试时须要自己添加一个code等于alipay或yeepay的cookie * X" d3 Q! `: K
2.由于bank和cod这两个文件并没有respond方法,所以如果code等于bank或者cod时将会暴错泄露路径
# }8 g" K8 U4 N. {9 G9 l' M修复方法:- d L0 d w2 W; V- N" V
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:/ l4 B/ C; u1 Q2 N+ S
http://www.dedecms.com/products/dedecms/
+ I' P* Y$ l/ M
4 [9 {/ m' ~4 q6 {1 T0 W 临时修复:
/ G1 x$ _8 O+ U/ \; Q0 |1)Include/payment/alipay.php6 v$ @" F4 Y# z1 Q2 r* P7 a$ M7 Y
大概133行左右" S% v/ n9 h# L" O
require_once DEDEDATA.'/payment/'.$_GET['code'].'.php';6 q( [) v. e! O) t% u n. H
替换8 Z1 w1 F, z. a
require_once DEDEDATA.'/payment/'.basename($_GET['code']).'.php';
2 _2 K; l; C. P- a7 h4 T5 ^2) Include/payment/yeepay.php
/ H. Q2 p% B( S3 C, {2 ~2 v, |大概在145行左右0 n% h, |5 l$ }. B3 J( e
require_once DEDEDATA.'/payment/'.$_REQUEST['code'].'.php';
- C) d+ r; M" Q q1 _ 替换
0 J8 Y3 g/ p$ J% ? require_once DEDEDATA.'/payment/'.basename($_REQUEST['code']).'.php';' x; _- I* N) }
! R" x+ a* J8 m! ?( ^! j7 Y! H; v1 U
|