漏洞版本:- l) b1 @- }" W" B
DedeCms 5.x漏洞描述:
3 ?0 c! N+ l; l- H0 f" I$ ~DedeCms是免费的PHP网站内容管理系统。2 ^- T, }9 u5 D }
H/ B4 F* Q1 c, b' ^3 G3 H6 S
plus/carbuyaction.php里没有对变量进行严格的过滤; w! q$ k, d5 {
7 M1 T& G8 ~0 H$ [6 h* V出现漏洞的两个文件为:
6 {" ^- z) j8 m, _0 f" A! lInclude/payment/alipay.php' {( V* g# j+ J. X
Include/payment/yeepay.php) z+ a5 J: ~( p% R( ]6 F3 m
漏洞均出现在respond方法里0 u/ @7 Q: r" G* z! L9 R2 u
& C8 u; [" N( v) bInclude/payment/alipay.php
# T( G9 Z( T# g......function respond(){if (!empty($_POST)){foreach($_POST as $key => $data){$_GET[$key] = $data;}}/* 引入配置文件 */require_once DEDEDATA.'/payment/'.$_GET['code'].'.php';......2 U# {2 \! \9 X, V
$ N& a" T5 a3 a5 W; Z
大概在133行左右,$_GET[‘code’]没有经过任何判断和过滤。5 E9 I% Y, Y/ L" X: W8 H
Include/payment/yeepay.php
' k, } s9 j# g) {) H......function respond(){ /* 引入配置文件 */require_once DEDEDATA.'/payment/'.$_REQUEST['code'].'.php'; $p1_MerId = trim($payment['yp_account']);$merchantKey = trim($payment['yp_key']);......7 y& c! Y+ i. b5 u. s
- s/ }3 R. Y/ v4 ~$ w u, T; Q
大概在145行左右,$_REQUEST['code']没有经过任何判断和过滤。<* 参考, z' g6 A, _' u! {, ^; ]$ b6 z
http://bugscan.net/manage/node/83) q! o& u* ~5 o4 c
http://www.cnseay.com/2515/' v; v! w9 ^& ]; Z/ y& G
*>
3 ? ^: P" s3 D- k Q' X2 c; `测试方法:: h+ e! y1 S! t% u7 K
1.http://www.dedecms.com/plus/carb ... amp;code=../../tags 上面的Exp是包含根目录下的tags.php文件包含其他后缀请自行构造截断, 使用exp测试时须要自己添加一个code等于alipay或yeepay的cookie & F# X' G. [3 p2 q+ p; p
2.由于bank和cod这两个文件并没有respond方法,所以如果code等于bank或者cod时将会暴错泄露路径
I+ P; J* q' p6 v修复方法:9 o; n+ G5 B4 L- q' F/ h( K- p
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
. ?; O& u/ b/ n% E- qhttp://www.dedecms.com/products/dedecms// [3 v, z7 j0 J6 `& S
% B+ Z5 l& u s( r( R 临时修复: ; N. o7 f! w6 H; g' E3 G% [# |
1)Include/payment/alipay.php
- P9 p" a0 u1 u" F 大概133行左右
# Z o; z6 v4 l- m2 `# h require_once DEDEDATA.'/payment/'.$_GET['code'].'.php';# I$ A2 E2 k( p1 C
替换3 |1 }4 ` q' U' v) j8 p/ Y. S
require_once DEDEDATA.'/payment/'.basename($_GET['code']).'.php';
+ W$ S- }; _- ?( w2) Include/payment/yeepay.php
) r3 z; K7 @1 `1 I D1 ]; `大概在145行左右
/ [* M. | h) o" V' h$ D T require_once DEDEDATA.'/payment/'.$_REQUEST['code'].'.php';
" V+ `) h4 ?/ G/ A" O: | 替换# s9 B5 u" V) e
require_once DEDEDATA.'/payment/'.basename($_REQUEST['code']).'.php';
% V# b w! A1 E, I4 M! I
8 y1 w( C6 Z6 P" }) `, m |