当前位置:首页 > 问答 > 正文

dedecms 支付安全 include/payment/alipay.php支付模块注入漏洞修复方法

紧急!织梦CMS支付宝支付模块惊现漏洞,站长速速自查修复

场景再现
凌晨三点,老张被急促的手机警报声惊醒,后台监控显示,他的建材网站半小时内产生了17笔异常订单——所有商品均被同一IP以0.01元的价格拍下,紧急排查后发现,黑客正是利用了织梦CMS支付宝支付模块的注入漏洞...

漏洞详情

根据2025年8月最新安全通告,织梦CMS(DedeCMS)的支付宝支付接口文件/include/payment/alipay.php存在严重SQL注入漏洞,攻击者无需登录即可通过伪造支付参数,直接操作数据库,轻则篡改订单金额,重则窃取用户支付信息。

手动修复方案(三步搞定)

第一步:定位问题文件

登录服务器找到这个文件:
网站根目录/include/payment/alipay.php
建议先做好备份,用记事本或专业编辑器打开

第二步:关键代码修改

找到约第120行附近的订单校验代码(不同版本位置可能略有差异),原始漏洞代码类似:

dedecms 支付安全 include/payment/alipay.php支付模块注入漏洞修复方法

$sql = "SELECT * FROM `#@__member_operation` WHERE buyid='$out_trade_no'";

修改为以下安全写法:

$sql = "SELECT * FROM `#@__member_operation` WHERE buyid='".addslashes($out_trade_no)."'";
// 或者更安全的预处理方式
$dsql->SetQuery("SELECT * FROM `#@__member_operation` WHERE buyid=?", [$out_trade_no]);

第三步:全面加固建议

  1. 参数过滤:在所有接收$_GET/$_POST的地方添加

    $out_trade_no = isset($_GET['out_trade_no']) ? htmlspecialchars(trim($_GET['out_trade_no'])) : '';
  2. 权限校验:在文件开头增加管理员验证

    dedecms 支付安全 include/payment/alipay.php支付模块注入漏洞修复方法

    if(!isset($cfg_adminlogin)) exit('Access Denied');
  3. 日志监控:在支付回调处添加异常记录

    file_put_contents('data/paylog_'.date('Ymd').'.txt', date('H:i:s').' 异常请求:'.$_SERVER['REMOTE_ADDR'].PHP_EOL, FILE_APPEND);

临时应急方案

如果来不及修改代码,可立即采取:

  • 通过服务器防火墙屏蔽对/include/payment/alipay.php的直接访问
  • 在支付页面添加图形验证码
  • 暂时关闭支付宝即时到账功能

后续防护

  1. 立即检查/data/目录下是否存在异常.php文件
  2. 修改数据库表前缀(默认#@__建议更换)
  3. 定期关注织梦CMS官方补丁更新

站长须知:该漏洞已被黑客大规模利用,平均每小时就有数十个织梦站点被攻破,建议所有使用支付宝支付的站点在48小时内完成修复,已发现部分案例中被植入后门导致整站沦陷。

dedecms 支付安全 include/payment/alipay.php支付模块注入漏洞修复方法

(注:本文修复方案适用于DedeCMS V5.7-V6.0版本,其他版本请根据实际情况调整)

发表评论