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

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

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

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

    第 1 条附言  ·  79 天前
    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  
       80 天前
    检查服务,比如经典 redis 。
    检查代码,有无 webshell 。
    检查 ssh log ,有无弱口令。
    flywuhu
        2
    flywuhu  
       80 天前
    单纯的一个宝塔,还是宝塔上开着 web 站点?
    dendi009
        3
    dendi009  
    OP
       80 天前
    @flywuhu 宝塔环境 + php 站点, 可以基本可以确定 php 站点 是安全的,有完整的 php 站点请求审计,不可能是 php 网站的 漏洞
    dendi009
        4
    dendi009  
    OP
       80 天前
    @learningman 多台服务器出现了这个情况, 部分安装 redis 部分没安装 ,切端口均不对外,
    php 站点 基本可以排除 webshell , 即使有没检查到的 web 漏洞, 也不会被轻松提权到 root 。 被挂码文件是 root 权限的
    ssh 爆破登入可以 100% 排除
    dendi009
        5
    dendi009  
    OP
       80 天前
    补充说明,这些机器开通时间不一, 时间长的 1 年左右, 时间短的 10 天不到, 大部分机器都是近期开通的。 排除已知 ssh 安全漏洞和内部人为因素 。 肯定是外部入侵导致的
    learningman
        6
    learningman  
       80 天前
    多台出现可能是 ssh 内网横移了,只有有一点被突破就够了
    Dart
        7
    Dart  
       80 天前   ❤️ 2
    我的个人经验:
    1 、业务代码一定要自己开发,毕竟成品如 wordpress 的漏洞你不一定第一时间会打补丁,更不用说你可能会用到的各种插件。
    2 、服务器上千万别用盗版(破解版)
    3 、尽量做到各个服务之间的环境隔离,目前最容易的就是容器化( Docker compose 、K8S 、ECS 等)
    4 、千万别让各个应用共享一个数据库用户,各个应用 /服务分别创建用户
    5 、宝塔这样的第三方运维工具能不用就不用,必须用就用开源主流工具,如 Terraform 、Ansible 这样的。
    6 、如果自己搞不定,可以考虑找个这方面的专家咨询或协助。
    dendi009
        8
    dendi009  
    OP
       80 天前
    @learningman 没有内网, 都是公网 IP ,各不相同的内容,不同 地区机器, 相互直接没有登陆过
    daimaosix
        9
    daimaosix  
       80 天前 via Android   ❤️ 1
    那就是不用宝塔
    felixcode
        10
    felixcode  
       80 天前 via Android
    用了宝塔,只能先默认是宝塔的漏洞了。
    bobryjosin
        11
    bobryjosin  
       80 天前 via Android
    不要用宝塔,最好手动部署
    R18
        12
    R18  
       80 天前 via Android
    起码把你的马发出来吧。服务器被黑我碰到过两种情况一种就是 redis 对外访问还没口令。一种是用的 wp 用了网上的主题和扩展。
    cwyalpha
        13
    cwyalpha  
       80 天前 via iPhone
    pma ?
    ltkun
        14
    ltkun  
       80 天前 via Android
    第一次听到 bt 这个缩写我以为是 bt 下载 庆幸从未用过宝塔这种 debian 系 apt 安装已经够简单了 红帽系 yum slack 的 pacman 这些包管理一个比一个人性化 还想着投机取巧就有点说不过了
    xyjincan
        15
    xyjincan  
       80 天前 via Android
    SELinux 开了没,看看记录
    xyjincan
        16
    xyjincan  
       80 天前 via Android
    坐一个标准环境,啥都不放,看看会不会出问题
    DAPTX4869
        17
    DAPTX4869  
       80 天前
    @xyjincan #15 会用 selinux 的还用装宝塔? 悖论呐
    danhahaha
        18
    danhahaha  
       80 天前
    宝塔配 php 黑客最爱呀,别告诉我你用的是 thinkphp,如果是,那就马场
    danbai
        19
    danbai  
       80 天前
    已经脱离宝塔,脱离 nginx 了。用 caddy
    likunyan
        20
    likunyan  
       80 天前
    好歹发点有用的信息吧
    virusdefender
        21
    virusdefender  
       80 天前
    /www/server/nginx/waf/config 拓展名都没有,php 能解析?文件内容发一下呢
    xia0pia0
        22
    xia0pia0  
       80 天前
    查日志,WEB 日志、系统日志,总会有蛛丝马迹的
    mhycy
        23
    mhycy  
       80 天前
    宝塔端口有对外么?
    bao3
        24
    bao3  
       80 天前 via iPhone   ❤️ 1
    自己手动搭建 php 的环境是不是更安全。生产环境,千万不要使用什么一键安装、什么套件包,你很难相信有没有私货。
    winterx
        25
    winterx  
       80 天前
    宝塔自己夹带私货,建议别用
    dendi009
        26
    dendi009  
    OP
       79 天前
    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
       79 天前
    @bobryjosin 不是自己的机器,跨部门的
    dendi009
        28
    dendi009  
    OP
       79 天前
    @R18 挂码内容是 lua 写的 概率跳转。 被挂了什么内容不是重点。 重点是怎么能一次次挂上去的。 参考最新发的 日志
    dendi009
        29
    dendi009  
    OP
       79 天前
    @virusdefender config 是 在 waf 里面运行 lua 代码, 而且是明文, 代码内容是一定概率跳转 web 请求到 灰色网站上面,跟 config 内容没什么关系
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   1154 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 04:15 · PVG 12:15 · LAX 20:15 · JFK 23:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.