漏洞版本:' I6 n: D B) @* K7 H+ i
DedeCms 5.x漏洞描述:! x; h. y7 ?2 h- s9 [
DedeCms是免费的PHP网站内容管理系统。
% B% ]2 a3 r. L4 @6 j
/ }* e, k, ]4 W0 l- U+ r& ^plus/carbuyaction.php里没有对变量进行严格的过滤 x/ ?) S: ^6 }
9 |+ J( g! V; r7 F/ E出现漏洞的两个文件为:
4 L2 z6 a% E, c2 WInclude/payment/alipay.php
4 H- s" H/ g( F+ k) T3 ~- b cInclude/payment/yeepay.php
2 n; m. A* |- t2 h: j% O漏洞均出现在respond方法里
7 F' f' X1 {& T0 T* n) w8 y I# H8 Q
Include/payment/alipay.php " C7 i& z# N9 D) Y
......function respond(){if (!empty($_POST)){foreach($_POST as $key => $data){$_GET[$key] = $data;}}/* 引入配置文件 */require_once DEDEDATA.'/payment/'.$_GET['code'].'.php';....../ n! p. W4 [7 Q, u
: J& M4 I" B) f! d: g% m2 n( Q" r0 y3 ?
大概在133行左右,$_GET[‘code’]没有经过任何判断和过滤。6 Y6 w9 a7 t9 d& M: {4 w$ _! F
Include/payment/yeepay.php' @$ _& d* n, P$ R" Q/ _9 B
......function respond(){ /* 引入配置文件 */require_once DEDEDATA.'/payment/'.$_REQUEST['code'].'.php'; $p1_MerId = trim($payment['yp_account']);$merchantKey = trim($payment['yp_key']);......
3 |. Q5 k* _+ D% f: Q5 L
/ Z% l7 X: n9 ?) H9 q2 Q& }大概在145行左右,$_REQUEST['code']没有经过任何判断和过滤。<* 参考
4 G% f u: b& p* d+ G* whttp://bugscan.net/manage/node/83) E( P5 o7 |+ B4 ^/ [% O
http://www.cnseay.com/2515/
# |+ M5 S/ g8 P0 K*>/ A+ F1 Y# k. u3 Q, z( }
测试方法:6 P& @& O" X3 c! y3 ^
1.http://www.dedecms.com/plus/carb ... amp;code=../../tags 上面的Exp是包含根目录下的tags.php文件包含其他后缀请自行构造截断, 使用exp测试时须要自己添加一个code等于alipay或yeepay的cookie
) ~! p7 i8 ~5 \2 U& [8 ^1 U5 I2.由于bank和cod这两个文件并没有respond方法,所以如果code等于bank或者cod时将会暴错泄露路径) v5 V% |% F0 `* h
修复方法:. e5 m! L) ~& [; r) L0 ~
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
- `" b5 S4 a! B+ a( Fhttp://www.dedecms.com/products/dedecms/
, a* Q9 H) \" N) W, @9 I* J+ \1 h4 _ A8 N% c) }& ?! T
临时修复: * {4 O+ v9 w' F6 {. R& m
1)Include/payment/alipay.php6 q3 m, ^7 L6 m
大概133行左右+ P5 s8 D/ R4 h/ u
require_once DEDEDATA.'/payment/'.$_GET['code'].'.php';
0 q- a b- E! h/ D替换# t5 F |7 [4 \, x. I. w d- Q% Z
require_once DEDEDATA.'/payment/'.basename($_GET['code']).'.php';
3 f' m# g) x+ |' w2 g2) Include/payment/yeepay.php
) f- ~- m9 l V$ @大概在145行左右# a: |4 L4 s9 q% U; J& N6 [( b) N
require_once DEDEDATA.'/payment/'.$_REQUEST['code'].'.php';
3 u6 A6 R* J& T8 r: {, _# R 替换9 R, t! j: k" d6 V6 @4 M& E( A* y7 n
require_once DEDEDATA.'/payment/'.basename($_REQUEST['code']).'.php';. X1 `4 G+ K5 U2 |+ |! [$ z8 Y
- ~7 k% \. _* w1 s, [5 v! b2 M
|