漏洞版本:
; z# A1 z8 p" ^1 y3 j8 }( v, o) VDedeCms 5.x漏洞描述:
" W& q+ g2 }0 K$ v( N6 T$ `# oDedeCms是免费的PHP网站内容管理系统。
! M l/ R$ T1 b; A9 |: E. S
! \+ z, ^# N7 R- p0 h i2 nplus/carbuyaction.php里没有对变量进行严格的过滤
1 v S1 l) }0 T1 o1 [' L2 ?" [3 r1 ~6 l z* ^5 Q5 B# h2 z, s# g
出现漏洞的两个文件为:
! m% w# N. x% f6 I5 VInclude/payment/alipay.php
( V* ~0 G. `% m# K# t0 sInclude/payment/yeepay.php
2 w9 x3 |' v) v. `) k漏洞均出现在respond方法里
( d7 ^0 Q: P0 T1 R% w( h" A7 V
5 X& a1 K+ @) \0 P7 g1 rInclude/payment/alipay.php 9 f* `7 [* p' v0 S3 m* { t9 A, T
......function respond(){if (!empty($_POST)){foreach($_POST as $key => $data){$_GET[$key] = $data;}}/* 引入配置文件 */require_once DEDEDATA.'/payment/'.$_GET['code'].'.php';......
) @! T4 I$ M/ Y2 y / I" o: T+ Y; A1 Y! }' @0 |+ Q
大概在133行左右,$_GET[‘code’]没有经过任何判断和过滤。+ k( ^$ v3 i) M/ Q v0 q; Z
Include/payment/yeepay.php' I- T) ~7 Q. Q) F! Q& Q4 [
......function respond(){ /* 引入配置文件 */require_once DEDEDATA.'/payment/'.$_REQUEST['code'].'.php'; $p1_MerId = trim($payment['yp_account']);$merchantKey = trim($payment['yp_key']);......
% V, }# y v! I- I
! h* Z4 ?$ r" v: G6 P/ o大概在145行左右,$_REQUEST['code']没有经过任何判断和过滤。<* 参考' {/ g" X- f, j3 b
http://bugscan.net/manage/node/832 R N1 t2 J; C6 G) Z9 Q( \
http://www.cnseay.com/2515/
7 ^! ~* o: M5 R# L& g; i, e*>. ^- `) c4 F: K7 U% L
测试方法:
; h5 q2 p" @$ ^4 t* m1.http://www.dedecms.com/plus/carb ... amp;code=../../tags 上面的Exp是包含根目录下的tags.php文件包含其他后缀请自行构造截断, 使用exp测试时须要自己添加一个code等于alipay或yeepay的cookie " h, M) @- A* s/ C
2.由于bank和cod这两个文件并没有respond方法,所以如果code等于bank或者cod时将会暴错泄露路径
5 \8 ~9 P! ]# o1 u+ Q i. b修复方法:
. s. m, W( B u6 n4 i目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
8 u' r9 ~6 u; T, \% [% khttp://www.dedecms.com/products/dedecms/# d- y6 E; e+ H2 V5 ^
& {/ G/ Q/ a$ e" o8 S
临时修复: 1 v( o- C% h/ V1 ^$ W
1)Include/payment/alipay.php
* O" c" T8 [5 k* |$ g4 V 大概133行左右9 a: M' |2 F( ]$ q: V0 x+ ^' _, I
require_once DEDEDATA.'/payment/'.$_GET['code'].'.php';
: l( }5 f# Q B替换, g# O4 x0 m3 o) K& a# L
require_once DEDEDATA.'/payment/'.basename($_GET['code']).'.php';
- n9 b6 l. \3 i J3 N2) Include/payment/yeepay.php$ X4 _: R+ ^5 r0 N1 Q
大概在145行左右6 i% X I4 f! D3 y+ D
require_once DEDEDATA.'/payment/'.$_REQUEST['code'].'.php';
6 u, o$ k6 P8 ?2 s2 e 替换
& R( T! r3 n6 z require_once DEDEDATA.'/payment/'.basename($_REQUEST['code']).'.php';5 [0 P8 a8 Z" E2 [
7 r6 E9 b" w" e I: {" M
|