漏洞版本:
; u9 e. o5 ~7 W- sDedeCms 5.x漏洞描述:
; i# b7 T1 J3 B7 j, GDedeCms是免费的PHP网站内容管理系统。
2 l7 k9 o9 S) S+ P3 [& J# _+ x" v3 X8 _3 K
plus/carbuyaction.php里没有对变量进行严格的过滤$ h3 _( j7 _+ P3 }/ V& C* \
# J( z# Y5 T( m+ \. Z2 F出现漏洞的两个文件为:
2 ?. ^! e7 q" S( ^Include/payment/alipay.php
; n8 G4 E+ X! u- b8 h5 _1 R2 OInclude/payment/yeepay.php
1 I& _% f0 }$ Y1 s q$ E& b7 Q漏洞均出现在respond方法里
7 v0 `0 R$ v" C5 w7 _# a) p5 g- @! |+ ?, p1 `( v3 r
Include/payment/alipay.php
2 ^1 r1 U3 l8 Q3 }9 G4 [......function respond(){if (!empty($_POST)){foreach($_POST as $key => $data){$_GET[$key] = $data;}}/* 引入配置文件 */require_once DEDEDATA.'/payment/'.$_GET['code'].'.php';......
/ b' X% C! r* g
$ y* ?+ z( T) j/ C1 f, _大概在133行左右,$_GET[‘code’]没有经过任何判断和过滤。
; I0 T# ], I6 }% l9 c/ @- MInclude/payment/yeepay.php, ?8 B$ X9 }! S+ I6 Q( K
......function respond(){ /* 引入配置文件 */require_once DEDEDATA.'/payment/'.$_REQUEST['code'].'.php'; $p1_MerId = trim($payment['yp_account']);$merchantKey = trim($payment['yp_key']);......5 f, z" h2 a3 W3 ~# H% ~ a
! |- Y5 i5 i- g+ N大概在145行左右,$_REQUEST['code']没有经过任何判断和过滤。<* 参考
1 O% Z8 } u2 w# i5 P0 thttp://bugscan.net/manage/node/83
9 c. V/ V2 F! g: c, t) p0 Q2 K9 X+ Ehttp://www.cnseay.com/2515/
; j- V5 B5 v7 \9 e3 q/ b& P*>
* [" P& C$ A4 N* J' e8 s( X @6 L测试方法:
+ Y5 K. C4 J. B' F" y; o6 Z1.http://www.dedecms.com/plus/carb ... amp;code=../../tags 上面的Exp是包含根目录下的tags.php文件包含其他后缀请自行构造截断, 使用exp测试时须要自己添加一个code等于alipay或yeepay的cookie
% k) e8 W4 ^# E. A) o( z5 ^2.由于bank和cod这两个文件并没有respond方法,所以如果code等于bank或者cod时将会暴错泄露路径
. F# e! }, W/ Z- h5 f' E* k$ H9 a e修复方法:
X5 P0 z6 K# _3 J/ [目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:5 _2 ?2 e0 ~0 Q3 R
http://www.dedecms.com/products/dedecms/
) |4 v3 Y- X$ X, ?% f! [; |2 m
/ v% X0 o! p6 D8 F) ^ 临时修复: + C# f: [% J0 ]+ q/ L( @
1)Include/payment/alipay.php
- {8 X7 o }2 `6 Q: n 大概133行左右
* ]. F+ [6 |$ [, X/ h% G0 W require_once DEDEDATA.'/payment/'.$_GET['code'].'.php';
& g- Y" c5 F* G" S' x. G9 T替换
: N7 y1 j" p4 `1 ~$ x require_once DEDEDATA.'/payment/'.basename($_GET['code']).'.php';
7 h. }9 [7 P5 y2 ]9 V- ?7 X2) Include/payment/yeepay.php
" |9 Q0 q7 \0 n$ l/ n. N+ q1 a F大概在145行左右5 y8 g, A& h, j& I8 m4 J8 A" W
require_once DEDEDATA.'/payment/'.$_REQUEST['code'].'.php';
4 d1 X- E6 n4 m% a 替换
. k& S" z2 K2 l/ Z5 ?* X require_once DEDEDATA.'/payment/'.basename($_REQUEST['code']).'.php';
/ ~8 k6 f. r% f1 h0 E+ Y 0 Q( ^& s q. ^5 ~% v
|