black9
V2EX  ›  PHP

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

  •  1
     
  •   black9 · Jul 29, 2024 · 8258 views
    This topic created in 832 days ago, the information mentioned may be changed or developed.

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

    这一眼就是 php 框架漏洞。

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

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

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

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

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

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