漏洞版本:
6 g, r% x9 [9 D. s. x% H0 g+ mDedeCms 5.x漏洞描述:3 L1 Y& o& `$ w
DedeCms是免费的PHP网站内容管理系统。
7 a; R+ v6 n6 E/ D9 d: R; v+ I
6 C ]7 f% J# d) Z$ ~+ S, U& A; \plus/carbuyaction.php里没有对变量进行严格的过滤# \8 G" T; k" ?5 h. h1 g
" T4 a$ B M- e* A" x+ E T出现漏洞的两个文件为:) x* A- w/ i# e' C
Include/payment/alipay.php. A/ f: q( ~: x9 q* Y& ?
Include/payment/yeepay.php" h# C4 _. s% f/ D2 r
漏洞均出现在respond方法里* q. Y U6 P+ B6 n) j9 Q" m
% u. g4 ?) m' Q) S5 \/ j
Include/payment/alipay.php
0 l- {5 d+ m2 y7 f1 R......function respond(){if (!empty($_POST)){foreach($_POST as $key => $data){$_GET[$key] = $data;}}/* 引入配置文件 */require_once DEDEDATA.'/payment/'.$_GET['code'].'.php';......
& Z6 P9 z/ R/ G
* Z3 _1 }3 s4 {大概在133行左右,$_GET[‘code’]没有经过任何判断和过滤。/ k3 e* l- }# }9 H) @$ j
Include/payment/yeepay.php! B7 }% ~7 ^1 r N3 H5 H
......function respond(){ /* 引入配置文件 */require_once DEDEDATA.'/payment/'.$_REQUEST['code'].'.php'; $p1_MerId = trim($payment['yp_account']);$merchantKey = trim($payment['yp_key']);......+ F1 [; p, M, }# J
: L8 }$ a" \( _ P" \5 \/ [
大概在145行左右,$_REQUEST['code']没有经过任何判断和过滤。<* 参考
/ g. I) l( M& f, i+ M) xhttp://bugscan.net/manage/node/83$ K# N ^+ b q2 k* E2 U# `
http://www.cnseay.com/2515/
) J0 A F. |* o0 u% F" i*>% H2 }3 B( @ ?: M! X! Z1 `: Y
测试方法:! H) A, J# r6 F/ T* l* D: L
1.http://www.dedecms.com/plus/carb ... amp;code=../../tags 上面的Exp是包含根目录下的tags.php文件包含其他后缀请自行构造截断, 使用exp测试时须要自己添加一个code等于alipay或yeepay的cookie
6 o. o. Y# o+ f0 a6 P" X, q4 ^) K N# [2.由于bank和cod这两个文件并没有respond方法,所以如果code等于bank或者cod时将会暴错泄露路径
% J k V4 g9 |! \/ J. X修复方法:
& @ K+ i( t1 D& W/ V7 f* ^目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
0 k/ p5 M" D2 a0 U; n/ T: {. v- |# Chttp://www.dedecms.com/products/dedecms/
$ i4 Z9 }+ m# @% @% R
2 \9 ?( v# ]; e" r; \$ t' T, r; @ h$ l1 \ 临时修复: # G( B6 h+ v* [. M5 E$ S: _
1)Include/payment/alipay.php5 u# q" `" b9 Q$ N, X$ j1 l/ r
大概133行左右
+ q2 F3 x+ a2 U J h require_once DEDEDATA.'/payment/'.$_GET['code'].'.php';1 H: \) v! H& i1 @) Y; j
替换
/ u* Q# o& R1 v! q9 G8 Y" d( u require_once DEDEDATA.'/payment/'.basename($_GET['code']).'.php';
8 P5 i& h4 R' V. N( e% y4 j# Q2) Include/payment/yeepay.php
" X$ a0 e" b4 C C; O7 L, x大概在145行左右
( H* r+ i. G- K; N6 b" [% ]7 X require_once DEDEDATA.'/payment/'.$_REQUEST['code'].'.php';: s$ y8 p7 v3 I2 }3 t- p
替换
: N+ K) o1 v y4 b: o6 b: Q require_once DEDEDATA.'/payment/'.basename($_REQUEST['code']).'.php';
3 `, W, D' U8 U/ b! p ! A1 e8 s' h& a' P3 x+ \& f
|