V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
dendi009
V2EX  ›  Linux

标准宝塔环境 NGINX 被挂码问题排查

  •  
  •   dendi009 · 2022-11-08 00:59:53 +08:00 · 4233 次点击
    这是一个创建于 778 天前的主题,其中的信息可能已经有所发展或是发生改变。

    centos7 环境, 被挂码 /www/server/nginx/waf/config , 求排查思路,如果判断挂码来源,标准宝塔环境。

    第 1 条附言  ·  2022-11-08 23:07:02 +08:00
    type=PROCTITLE msg=audit(11/08/2022 11:35:38.933:42110) : proctitle=/usr/sbin/crond -n
    type=PATH msg=audit(11/08/2022 11:35:38.933:42110) : item=1 name=/www/server/nginx/waf/config inode=2315713966 dev=fd:00 mode=file,644 ouid=root ogid=root rdev=00:00 obj=system_u:object_r:default_t:s0 objtype=CREATE cap_fp=none cap_fi=none cap_fe=0 cap_fver=0
    type=PATH msg=audit(11/08/2022 11:35:38.933:42110) : item=0 name=/www/server/nginx/waf/ inode=2148973883 dev=fd:00 mode=dir,755 ouid=root ogid=root rdev=00:00 obj=unconfined_u:object_r:default_t:s0 objtype=PARENT cap_fp=none cap_fi=none cap_fe=0 cap_fver=0
    type=CWD msg=audit(11/08/2022 11:35:38.933:42110) : cwd=/
    type=SYSCALL msg=audit(11/08/2022 11:35:38.933:42110) : arch=x86_64 syscall=open success=yes exit=10 a0=0x7fb668026ab0
    a1=O_WRONLY|O_CREAT|O_TRUNC a2=0666 a3=0x24 items=2 ppid=75054 pid=125380 auid=unset uid=root
    gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=(none)
    ses=unset comm=crond exe=/usr/sbin/crond subj=system_u:system_r:crond_t:s0-s0:c0.c1023 key=config

    现在能确认到 /usr/sbin/crond -n 这个命令过程执行了 create 操作。
    直接 SHELL 执行, /usr/sbin/crond -n
    回显 "crond: can't lock /var/run/crond.pid, otherpid may be 109408: Resource temporarily unavailable"
    crond 守护进程状态正常, 通过 rpm -ql 在 逐个对比 文件 md5 也没发现被篡改的地方,
    哪位老板能支支招,怎么查这个问题
    29 条回复    2022-11-09 00:17:13 +08:00
    learningman
        1
    learningman  
       2022-11-08 01:05:52 +08:00
    检查服务,比如经典 redis 。
    检查代码,有无 webshell 。
    检查 ssh log ,有无弱口令。
    flywuhu
        2
    flywuhu  
       2022-11-08 01:06:00 +08:00
    单纯的一个宝塔,还是宝塔上开着 web 站点?
    dendi009
        3
    dendi009  
    OP
       2022-11-08 01:16:09 +08:00
    @flywuhu 宝塔环境 + php 站点, 可以基本可以确定 php 站点 是安全的,有完整的 php 站点请求审计,不可能是 php 网站的 漏洞
    dendi009
        4
    dendi009  
    OP
       2022-11-08 01:18:40 +08:00
    @learningman 多台服务器出现了这个情况, 部分安装 redis 部分没安装 ,切端口均不对外,
    php 站点 基本可以排除 webshell , 即使有没检查到的 web 漏洞, 也不会被轻松提权到 root 。 被挂码文件是 root 权限的
    ssh 爆破登入可以 100% 排除
    dendi009
        5
    dendi009  
    OP
       2022-11-08 01:21:20 +08:00
    补充说明,这些机器开通时间不一, 时间长的 1 年左右, 时间短的 10 天不到, 大部分机器都是近期开通的。 排除已知 ssh 安全漏洞和内部人为因素 。 肯定是外部入侵导致的
    learningman
        6
    learningman  
       2022-11-08 01:32:47 +08:00
    多台出现可能是 ssh 内网横移了,只有有一点被突破就够了
    Dart
        7
    Dart  
       2022-11-08 01:35:41 +08:00   ❤️ 2
    我的个人经验:
    1 、业务代码一定要自己开发,毕竟成品如 wordpress 的漏洞你不一定第一时间会打补丁,更不用说你可能会用到的各种插件。
    2 、服务器上千万别用盗版(破解版)
    3 、尽量做到各个服务之间的环境隔离,目前最容易的就是容器化( Docker compose 、K8S 、ECS 等)
    4 、千万别让各个应用共享一个数据库用户,各个应用 /服务分别创建用户
    5 、宝塔这样的第三方运维工具能不用就不用,必须用就用开源主流工具,如 Terraform 、Ansible 这样的。
    6 、如果自己搞不定,可以考虑找个这方面的专家咨询或协助。
    dendi009
        8
    dendi009  
    OP
       2022-11-08 01:56:58 +08:00
    @learningman 没有内网, 都是公网 IP ,各不相同的内容,不同 地区机器, 相互直接没有登陆过
    daimaosix
        9
    daimaosix  
       2022-11-08 03:37:46 +08:00 via Android   ❤️ 1
    那就是不用宝塔
    felixcode
        10
    felixcode  
       2022-11-08 07:16:01 +08:00 via Android
    用了宝塔,只能先默认是宝塔的漏洞了。
    bobryjosin
        11
    bobryjosin  
       2022-11-08 07:17:17 +08:00 via Android
    不要用宝塔,最好手动部署
    R18
        12
    R18  
       2022-11-08 07:17:32 +08:00 via Android
    起码把你的马发出来吧。服务器被黑我碰到过两种情况一种就是 redis 对外访问还没口令。一种是用的 wp 用了网上的主题和扩展。
    cwyalpha
        13
    cwyalpha  
       2022-11-08 07:41:00 +08:00 via iPhone
    pma ?
    ltkun
        14
    ltkun  
       2022-11-08 08:02:45 +08:00 via Android
    第一次听到 bt 这个缩写我以为是 bt 下载 庆幸从未用过宝塔这种 debian 系 apt 安装已经够简单了 红帽系 yum slack 的 pacman 这些包管理一个比一个人性化 还想着投机取巧就有点说不过了
    xyjincan
        15
    xyjincan  
       2022-11-08 08:06:50 +08:00 via Android
    SELinux 开了没,看看记录
    xyjincan
        16
    xyjincan  
       2022-11-08 08:13:24 +08:00 via Android
    坐一个标准环境,啥都不放,看看会不会出问题
    DAPTX4869
        17
    DAPTX4869  
       2022-11-08 08:26:34 +08:00
    @xyjincan #15 会用 selinux 的还用装宝塔? 悖论呐
    danhahaha
        18
    danhahaha  
       2022-11-08 08:57:02 +08:00
    宝塔配 php 黑客最爱呀,别告诉我你用的是 thinkphp,如果是,那就马场
    danbai
        19
    danbai  
       2022-11-08 09:07:20 +08:00
    已经脱离宝塔,脱离 nginx 了。用 caddy
    QKgf555H87Fp0cth
        20
    QKgf555H87Fp0cth  
       2022-11-08 09:49:12 +08:00
    好歹发点有用的信息吧
    virusdefender
        21
    virusdefender  
       2022-11-08 09:58:16 +08:00
    /www/server/nginx/waf/config 拓展名都没有,php 能解析?文件内容发一下呢
    xia0pia0
        22
    xia0pia0  
       2022-11-08 10:07:55 +08:00
    查日志,WEB 日志、系统日志,总会有蛛丝马迹的
    mhycy
        23
    mhycy  
       2022-11-08 10:18:54 +08:00
    宝塔端口有对外么?
    bao3
        24
    bao3  
       2022-11-08 11:22:42 +08:00 via iPhone   ❤️ 1
    自己手动搭建 php 的环境是不是更安全。生产环境,千万不要使用什么一键安装、什么套件包,你很难相信有没有私货。
    winterx
        25
    winterx  
       2022-11-08 11:50:45 +08:00
    宝塔自己夹带私货,建议别用
    dendi009
        26
    dendi009  
    OP
       2022-11-08 17:15:14 +08:00
    type=PROCTITLE msg=audit(11/08/2022 11:35:38.933:42110) : proctitle=/usr/sbin/crond -n
    type=PATH msg=audit(11/08/2022 11:35:38.933:42110) : item=1 name=/www/server/nginx/waf/config inode=2315713966 dev=fd:00 mode=file,644 ouid=root ogid=root rdev=00:00 obj=system_u:object_r:default_t:s0 objtype=CREATE cap_fp=none cap_fi=none cap_fe=0 cap_fver=0
    type=PATH msg=audit(11/08/2022 11:35:38.933:42110) : item=0 name=/www/server/nginx/waf/ inode=2148973883 dev=fd:00 mode=dir,755 ouid=root ogid=root rdev=00:00 obj=unconfined_u:object_r:default_t:s0 objtype=PARENT cap_fp=none cap_fi=none cap_fe=0 cap_fver=0
    type=CWD msg=audit(11/08/2022 11:35:38.933:42110) : cwd=/
    type=SYSCALL msg=audit(11/08/2022 11:35:38.933:42110) : arch=x86_64 syscall=open success=yes exit=10 a0=0x7fb668026ab0
    a1=O_WRONLY|O_CREAT|O_TRUNC a2=0666 a3=0x24 items=2 ppid=75054 pid=125380 auid=unset uid=root
    gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=(none)
    ses=unset comm=crond exe=/usr/sbin/crond subj=system_u:system_r:crond_t:s0-s0:c0.c1023 key=config

    现在能确认到 /usr/sbin/crond -n 这个命令过程执行了 create 操作。
    直接 SHELL 执行, /usr/sbin/crond -n
    回显 "crond: can't lock /var/run/crond.pid, otherpid may be 109408: Resource temporarily unavailable"
    crond 守护进程状态正常, 通过 rpm -ql 在 逐个对比 文件 md5 也没发现被篡改的地方,
    哪位老板能支支招,怎么查这个问题
    dendi009
        27
    dendi009  
    OP
       2022-11-08 18:12:22 +08:00
    @bobryjosin 不是自己的机器,跨部门的
    dendi009
        28
    dendi009  
    OP
       2022-11-08 18:14:00 +08:00
    @R18 挂码内容是 lua 写的 概率跳转。 被挂了什么内容不是重点。 重点是怎么能一次次挂上去的。 参考最新发的 日志
    dendi009
        29
    dendi009  
    OP
       2022-11-09 00:17:13 +08:00
    @virusdefender config 是 在 waf 里面运行 lua 代码, 而且是明文, 代码内容是一定概率跳转 web 请求到 灰色网站上面,跟 config 内容没什么关系
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3084 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 13:06 · PVG 21:06 · LAX 05:06 · JFK 08:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.