漏洞版本:1 h8 Q' V' L' k3 k
DedeCms 5.x漏洞描述:& H' g0 o* j( M8 i2 u. k
DedeCms是免费的PHP网站内容管理系统。 t6 ]; o2 |( f$ }' b
+ c/ W% m2 x' J8 Z, B' D
plus/carbuyaction.php里没有对变量进行严格的过滤
6 D' ~8 K" i, c5 M& z- b3 `0 q: f8 k* X- y) v! l& u S0 k
出现漏洞的两个文件为:: F! Z0 ~+ {' F1 y& y8 `8 o
Include/payment/alipay.php
/ V& C- S/ q( Y7 ~. I% fInclude/payment/yeepay.php; N" q' `9 x( ~* }6 d
漏洞均出现在respond方法里
( C( ^3 V F7 `$ a: `# U2 A. Q$ e8 `: ]' t* O4 W# o
Include/payment/alipay.php
2 T" F) J1 W- \9 R( o- t; h......function respond(){if (!empty($_POST)){foreach($_POST as $key => $data){$_GET[$key] = $data;}}/* 引入配置文件 */require_once DEDEDATA.'/payment/'.$_GET['code'].'.php';......
# r+ n. ]8 z9 C0 ?5 G$ z+ t9 y . P$ S I: R8 Z% u U
大概在133行左右,$_GET[‘code’]没有经过任何判断和过滤。
9 K: O s, R2 C0 b7 g7 xInclude/payment/yeepay.php
# l# X# @# V0 X......function respond(){ /* 引入配置文件 */require_once DEDEDATA.'/payment/'.$_REQUEST['code'].'.php'; $p1_MerId = trim($payment['yp_account']);$merchantKey = trim($payment['yp_key']);......6 B. w O! X2 n b
" |. `' v- H. ~2 M" P
大概在145行左右,$_REQUEST['code']没有经过任何判断和过滤。<* 参考8 v0 Q Y0 O4 O" m) e. l& H2 p
http://bugscan.net/manage/node/83
1 A# `. d0 @" z' m! K7 x, mhttp://www.cnseay.com/2515/2 w! Q0 y* \3 v8 P
*>: B' [' K: F v+ q
测试方法:! P! F0 S; @4 I0 o/ x; m
1.http://www.dedecms.com/plus/carb ... amp;code=../../tags 上面的Exp是包含根目录下的tags.php文件包含其他后缀请自行构造截断, 使用exp测试时须要自己添加一个code等于alipay或yeepay的cookie ) v% t: A; L; \5 Y
2.由于bank和cod这两个文件并没有respond方法,所以如果code等于bank或者cod时将会暴错泄露路径) X& f4 j2 I$ Y( g0 p
修复方法:
, t3 I6 y3 t3 K3 t! G7 M6 Q/ ~目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:) S/ w8 r( g& m5 s" R/ k3 I
http://www.dedecms.com/products/dedecms/6 O* H: @8 M% U* [; t6 g# Q
5 y# ]5 G/ o% D/ T% {/ J3 r( t
临时修复:
( A7 i* ~& u, P& N1)Include/payment/alipay.php
$ F. l) I8 ^8 J 大概133行左右
c1 K- _ m- ^ Z6 J! q d require_once DEDEDATA.'/payment/'.$_GET['code'].'.php';
, q$ H6 u& M0 z, c; g# [替换
. F! k! S' o+ e) M' a require_once DEDEDATA.'/payment/'.basename($_GET['code']).'.php';- P( Y; m' R# Q1 L' G2 n
2) Include/payment/yeepay.php$ l* E+ }8 q0 W |& A5 a" x
大概在145行左右
8 L+ w/ C: K' q require_once DEDEDATA.'/payment/'.$_REQUEST['code'].'.php';9 ^) c! N6 J5 w' B/ ~3 P7 f
替换- m% ~9 F/ K5 I& G. i1 c! S, h# z/ z
require_once DEDEDATA.'/payment/'.basename($_REQUEST['code']).'.php';2 q; c+ u; D# c% G0 B5 s
. T% V. V& r- `/ e
|