漏洞版本:7 w d6 k2 Y& q. P
DedeCms 5.x漏洞描述:
! q, k5 t3 K8 M* A+ K/ M# D: A$ xDedeCms是免费的PHP网站内容管理系统。: M) e u% r3 z6 b$ h
/ E! ]2 ]1 @( z/ a
plus/carbuyaction.php里没有对变量进行严格的过滤( f1 a) Z$ Y. s3 a0 G
. T' J& |* g* ]# d
出现漏洞的两个文件为:0 Z+ }6 E8 u# N4 V# X1 k
Include/payment/alipay.php, X2 V4 y6 @' y7 s
Include/payment/yeepay.php
+ m3 @# N3 E. u ~7 L漏洞均出现在respond方法里# Y- c* ~) T2 T
# s0 L& V4 q/ p& Q5 MInclude/payment/alipay.php 6 h0 S O# h4 p. Z0 ?; U
......function respond(){if (!empty($_POST)){foreach($_POST as $key => $data){$_GET[$key] = $data;}}/* 引入配置文件 */require_once DEDEDATA.'/payment/'.$_GET['code'].'.php';......
" H* j8 h B E
. |, z* `; W" K Q/ X% y1 w" d大概在133行左右,$_GET[‘code’]没有经过任何判断和过滤。
6 `0 r6 C8 H6 \# s& d: Q0 _Include/payment/yeepay.php
7 S0 ]* \% l* H0 i3 f& B- T A/ T......function respond(){ /* 引入配置文件 */require_once DEDEDATA.'/payment/'.$_REQUEST['code'].'.php'; $p1_MerId = trim($payment['yp_account']);$merchantKey = trim($payment['yp_key']);......
- m8 Q+ }; h4 G/ f/ V 2 m" B& ] S" o- i3 g* v5 c6 w
大概在145行左右,$_REQUEST['code']没有经过任何判断和过滤。<* 参考- b* _2 |3 v$ S, c5 w
http://bugscan.net/manage/node/83
* b3 u& i3 ^8 A. f |* U" F/ F: Phttp://www.cnseay.com/2515/8 Y& |) _1 u3 Y
*>/ w5 t: p8 w: O2 g; F6 S
测试方法:
* s* E- K1 E/ m! f+ Y7 S$ _2 k1.http://www.dedecms.com/plus/carb ... amp;code=../../tags 上面的Exp是包含根目录下的tags.php文件包含其他后缀请自行构造截断, 使用exp测试时须要自己添加一个code等于alipay或yeepay的cookie
# B4 {. _/ ?% t0 J2 ~8 d2.由于bank和cod这两个文件并没有respond方法,所以如果code等于bank或者cod时将会暴错泄露路径
" v7 m! U5 z- D7 O9 p+ A修复方法:
; }# L) A& }9 @5 [6 k目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:4 q4 ]4 g- F$ O5 E
http://www.dedecms.com/products/dedecms/
7 o7 K. j/ t' i
, c6 O) Z- m/ f8 x8 S0 `; _1 i 临时修复: ' `' q2 c% L0 D
1)Include/payment/alipay.php$ t/ T, J+ r5 Q; d
大概133行左右& L) }; I6 X' f9 I- V
require_once DEDEDATA.'/payment/'.$_GET['code'].'.php';
. C6 G" d* L: G+ _替换
, ~2 Z* O4 {; h) C2 ?+ S5 A require_once DEDEDATA.'/payment/'.basename($_GET['code']).'.php';
- x0 Z% K8 H5 x2) Include/payment/yeepay.php6 _! j& `( q! b5 t; r4 x
大概在145行左右
- X, {1 Y) m3 y" ?4 K# V% T; g; b require_once DEDEDATA.'/payment/'.$_REQUEST['code'].'.php';& x7 ^% ]9 P: `# u
替换5 a1 r& m2 L; n5 T9 @1 ]/ u
require_once DEDEDATA.'/payment/'.basename($_REQUEST['code']).'.php';
: p3 ]* T( _8 U% T! n/ \ ; a# x2 A# I5 D" ?
|