漏洞版本:
g8 a0 {3 x0 f& P# @DedeCms 5.x漏洞描述:
) U/ k: z: k- L# D7 H6 O+ GDedeCms是免费的PHP网站内容管理系统。
# v, I+ |0 f6 o+ R" M \8 E7 q3 N
$ |3 v+ L& W1 ?& u* [plus/carbuyaction.php里没有对变量进行严格的过滤
* [7 v" w R- h) R
% E7 ?: v) z/ `- Z* ]$ m出现漏洞的两个文件为:, N0 Y5 g7 S+ s+ N- S
Include/payment/alipay.php
: [# F/ C e: d1 s' DInclude/payment/yeepay.php
2 F" _# D) s" f. `: a' x, U漏洞均出现在respond方法里) E1 n! {+ g p$ X+ `
9 k. w1 n. S7 j& E3 o) q
Include/payment/alipay.php - q4 n2 _8 z) V1 s0 Y+ v# g
......function respond(){if (!empty($_POST)){foreach($_POST as $key => $data){$_GET[$key] = $data;}}/* 引入配置文件 */require_once DEDEDATA.'/payment/'.$_GET['code'].'.php';....... X6 {* F* T, Y6 M) e, Z6 M9 N
' y3 x+ W( q9 K3 o1 _
大概在133行左右,$_GET[‘code’]没有经过任何判断和过滤。0 ~0 t3 I7 l* q5 w- w* a& A& P0 j
Include/payment/yeepay.php
8 o& q, ^8 ^% u d" @$ _5 T......function respond(){ /* 引入配置文件 */require_once DEDEDATA.'/payment/'.$_REQUEST['code'].'.php'; $p1_MerId = trim($payment['yp_account']);$merchantKey = trim($payment['yp_key']);......' I3 m+ S2 L& v0 s
7 M4 V/ h; n f- y) v1 `4 B6 g大概在145行左右,$_REQUEST['code']没有经过任何判断和过滤。<* 参考) d, C8 Q4 J0 d9 N- L( t: U D. _
http://bugscan.net/manage/node/83
# e! F1 L; Y/ l/ Q6 m. t$ J7 @" Y) @http://www.cnseay.com/2515/
2 t. J0 q3 `8 P*>
1 D0 W8 n& S( e# L( v g2 Q6 S1 U测试方法:3 m# T6 `: Q3 T9 {3 Q
1.http://www.dedecms.com/plus/carb ... amp;code=../../tags 上面的Exp是包含根目录下的tags.php文件包含其他后缀请自行构造截断, 使用exp测试时须要自己添加一个code等于alipay或yeepay的cookie
- I) N1 ^5 J2 G$ r$ R' R+ m8 p2.由于bank和cod这两个文件并没有respond方法,所以如果code等于bank或者cod时将会暴错泄露路径
9 ~* S5 h7 B: x4 @( P8 J$ S修复方法:% C* s6 T6 a) s# A: c& W+ A8 w( E1 \
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
0 J+ z9 [, i) N; m* A2 t- u& Z$ Ohttp://www.dedecms.com/products/dedecms/
i( R: n& d: @2 b
. }! e: k. o9 e) {! E& G 临时修复:
0 ~0 @% }* i2 d- g/ V7 G1)Include/payment/alipay.php
I; z% t4 S0 a 大概133行左右( M# s( @7 ?" c
require_once DEDEDATA.'/payment/'.$_GET['code'].'.php';- E8 D. q v9 X* g0 P
替换3 ^ s# b* \ D4 F H k
require_once DEDEDATA.'/payment/'.basename($_GET['code']).'.php';
9 x& D0 c6 e. D9 `! G2) Include/payment/yeepay.php F) d) c! \7 D) b
大概在145行左右6 f7 D1 Y- U$ w {# |
require_once DEDEDATA.'/payment/'.$_REQUEST['code'].'.php';# M" o4 a! a( F
替换
. \& g1 P: ^4 E3 m# p require_once DEDEDATA.'/payment/'.basename($_REQUEST['code']).'.php';
E" f' J# I5 v) Q/ ~8 e' A
) n3 l3 ~$ W' L, ~ |