漏洞版本:
) K. J- M5 k* i2 O( r* A VDedeCms 5.x漏洞描述:4 b6 w+ q! J, [+ }* ]4 F5 p i1 e+ |
DedeCms是免费的PHP网站内容管理系统。
$ B' m0 I6 R$ F
6 X, i& u9 d: z: Y) B) {* mplus/carbuyaction.php里没有对变量进行严格的过滤1 T0 ?- f n5 p2 ?% z
* I- R! c! t; f0 P! A
出现漏洞的两个文件为:; t' H% S0 H9 T9 h! _
Include/payment/alipay.php/ ]! E! e- I7 g' u0 A5 O# f
Include/payment/yeepay.php
2 w+ R" o" X# p5 j/ \( F0 I V漏洞均出现在respond方法里2 B$ M0 ^! O( N8 ^
9 {, m, l% t/ @
Include/payment/alipay.php
+ c. |4 P E; m8 G0 F7 y......function respond(){if (!empty($_POST)){foreach($_POST as $key => $data){$_GET[$key] = $data;}}/* 引入配置文件 */require_once DEDEDATA.'/payment/'.$_GET['code'].'.php';......
: ~7 s0 v% n5 R. B 2 X- L5 w$ a6 j( j1 f
大概在133行左右,$_GET[‘code’]没有经过任何判断和过滤。
' U1 x ~ S2 \- Y% b7 l) k/ AInclude/payment/yeepay.php0 C$ H. {- q8 T, E& M
......function respond(){ /* 引入配置文件 */require_once DEDEDATA.'/payment/'.$_REQUEST['code'].'.php'; $p1_MerId = trim($payment['yp_account']);$merchantKey = trim($payment['yp_key']);......
5 U1 c5 g8 b: C
3 L+ `' T, H( q9 k大概在145行左右,$_REQUEST['code']没有经过任何判断和过滤。<* 参考
I) X a; W9 G3 ^9 Lhttp://bugscan.net/manage/node/83
% Z, G4 b, K- r% k" F5 y8 v! @2 L% Ihttp://www.cnseay.com/2515/ H$ }8 g/ j' ?6 P+ u: Y: w/ ]
*>
% ?& v, P6 F! r1 O测试方法:
' U) f6 O, D" I) O4 W' h5 q1.http://www.dedecms.com/plus/carb ... amp;code=../../tags 上面的Exp是包含根目录下的tags.php文件包含其他后缀请自行构造截断, 使用exp测试时须要自己添加一个code等于alipay或yeepay的cookie v4 O! t* `. ~. c, O
2.由于bank和cod这两个文件并没有respond方法,所以如果code等于bank或者cod时将会暴错泄露路径7 R3 d# g/ F ~2 |
修复方法:* v* }# J/ y' _; t& g; ^- T
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
- `0 a7 [* J$ i) Zhttp://www.dedecms.com/products/dedecms/9 `( {( `9 D1 u) C5 \
5 P5 O( U1 M$ j( m7 a* \
临时修复:
* p+ z8 T5 H& p1 ]. x5 k! k1)Include/payment/alipay.php
D# a4 R8 w- v, U! | 大概133行左右; Q# L. R* Y9 y, o2 y% e' q
require_once DEDEDATA.'/payment/'.$_GET['code'].'.php';9 v% o) T9 c5 M$ @
替换) i X0 m8 ^' z/ f
require_once DEDEDATA.'/payment/'.basename($_GET['code']).'.php';. i$ t$ b+ B" F: ]0 X
2) Include/payment/yeepay.php0 q$ S% Q6 j' [9 u
大概在145行左右7 z$ c% `7 {' f+ _
require_once DEDEDATA.'/payment/'.$_REQUEST['code'].'.php';/ L$ T9 h0 J9 P; r, k1 [4 e
替换
+ L. V" p( y: g2 [# h6 u require_once DEDEDATA.'/payment/'.basename($_REQUEST['code']).'.php';
- e0 |4 s# m i# J - O) `2 ~% A* {/ j: N. T' |
|