漏洞版本:
- _5 G5 J3 W7 F& aDedeCms 5.x漏洞描述:
A: Q) K# N2 Y% v2 V6 R: sDedeCms是免费的PHP网站内容管理系统。& X9 a8 T+ I% r: N$ f
, F4 c) a& U4 O2 Y) F
plus/carbuyaction.php里没有对变量进行严格的过滤
; Z7 L0 b: N5 M$ _% q) r" z$ k8 o1 c5 e$ w3 j
出现漏洞的两个文件为:
9 [( ^7 G* @" PInclude/payment/alipay.php
1 M* @( i' h; `7 J, M! xInclude/payment/yeepay.php2 _3 C; |2 L G& M4 j2 |* X
漏洞均出现在respond方法里0 j8 L( q+ E$ H+ z
, t5 L; y8 c6 l. `
Include/payment/alipay.php % f1 ]4 f: s' \ o% }) ^2 _" Q
......function respond(){if (!empty($_POST)){foreach($_POST as $key => $data){$_GET[$key] = $data;}}/* 引入配置文件 */require_once DEDEDATA.'/payment/'.$_GET['code'].'.php';......
& J6 m( F" e! b* t* [
) K/ x: x# a, {+ l6 [# z$ ?7 e大概在133行左右,$_GET[‘code’]没有经过任何判断和过滤。
4 e+ y6 L' Y1 p! pInclude/payment/yeepay.php
: y! G! n1 }. C% i* W8 b' D0 X......function respond(){ /* 引入配置文件 */require_once DEDEDATA.'/payment/'.$_REQUEST['code'].'.php'; $p1_MerId = trim($payment['yp_account']);$merchantKey = trim($payment['yp_key']);......
# B) n, U* u! N& h 4 n! y5 P# e% | z3 \9 Y
大概在145行左右,$_REQUEST['code']没有经过任何判断和过滤。<* 参考9 s5 I$ N7 j3 N# _ J% D
http://bugscan.net/manage/node/83
; z+ ^3 Q6 X: whttp://www.cnseay.com/2515/
T4 |5 y' M0 `6 R9 x! d*>
: X, J! v6 A3 x. F3 t4 Y测试方法:+ h. P/ j; M1 z7 |9 |
1.http://www.dedecms.com/plus/carb ... amp;code=../../tags 上面的Exp是包含根目录下的tags.php文件包含其他后缀请自行构造截断, 使用exp测试时须要自己添加一个code等于alipay或yeepay的cookie
9 |# _+ P- G$ u0 ?0 l2.由于bank和cod这两个文件并没有respond方法,所以如果code等于bank或者cod时将会暴错泄露路径
1 A) T9 h% _6 A7 S0 d8 a H8 \修复方法:
: K ~# V2 G( p7 |2 `0 r+ w* V; h目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:% C5 e3 P. ^9 S8 [+ U( Z9 I
http://www.dedecms.com/products/dedecms/, j( E0 u0 n. r, ^# v" U) a5 J$ E
; a9 V, J- J+ Z# v* j
临时修复:
# t% g: f+ t; a1)Include/payment/alipay.php) {6 A# E4 v D
大概133行左右
4 {1 Y3 ~; N% }+ N/ n$ v/ {) K require_once DEDEDATA.'/payment/'.$_GET['code'].'.php';
7 w, z8 W9 `, |# |替换
4 `9 `2 _* D w2 i: Z. f0 t$ n6 h require_once DEDEDATA.'/payment/'.basename($_GET['code']).'.php'; I# _9 s& D0 R' Y
2) Include/payment/yeepay.php: g0 U2 W6 w( b
大概在145行左右
6 t. Q6 A* `: z9 v) c require_once DEDEDATA.'/payment/'.$_REQUEST['code'].'.php';1 L6 A) R0 A0 D* M# Z2 a8 C
替换
7 K+ k' I5 u) w require_once DEDEDATA.'/payment/'.basename($_REQUEST['code']).'.php';- r/ ^' o# U; y: F7 i2 J
( A! p1 d% K' \' h, D: w W3 p+ ^
|