centos7 环境, 被挂码 /www/server/nginx/waf/config , 求排查思路,如果判断挂码来源,标准宝塔环境。
![]() | 1 learningman 2022-11-08 01:05:52 +08:00 检查服务,比如经典 redis 。 检查代码,有无 webshell 。 检查 ssh log ,有无弱口令。 |
2 flywuhu 2022-11-08 01:06:00 +08:00 单纯的一个宝塔,还是宝塔上开着 web 站点? |
3 dendi009 OP @flywuhu 宝塔环境 + php 站点, 可以基本可以确定 php 站点 是安全的,有完整的 php 站点请求审计,不可能是 php 网站的 漏洞 |
4 dendi009 OP @learningman 多台服务器出现了这个情况, 部分安装 redis 部分没安装 ,切端口均不对外, php 站点 基本可以排除 webshell , 即使有没检查到的 web 漏洞, 也不会被轻松提权到 root 。 被挂码文件是 root 权限的 ssh 爆破登入可以 100% 排除 |
5 dendi009 OP 补充说明,这些机器开通时间不一, 时间长的 1 年左右, 时间短的 10 天不到, 大部分机器都是近期开通的。 排除已知 ssh 安全漏洞和内部人为因素 。 肯定是外部入侵导致的 |
![]() | 6 learningman 2022-11-08 01:32:47 +08:00 多台出现可能是 ssh 内网横移了,只有有一点被突破就够了 |
7 Dart 2022-11-08 01:35:41 +08:00 ![]() 我的个人经验: 1 、业务代码一定要自己开发,毕竟成品如 wordpress 的漏洞你不一定第一时间会打补丁,更不用说你可能会用到的各种插件。 2 、服务器上千万别用盗版(破解版) 3 、尽量做到各个服务之间的环境隔离,目前最容易的就是容器化( Docker compose 、K8S 、ECS 等) 4 、千万别让各个应用共享一个数据库用户,各个应用 /服务分别创建用户 5 、宝塔这样的第三方运维工具能不用就不用,必须用就用开源主流工具,如 Terraform 、Ansible 这样的。 6 、如果自己搞不定,可以考虑找个这方面的专家咨询或协助。 |
8 dendi009 OP @learningman 没有内网, 都是公网 IP ,各不相同的内容,不同 地区机器, 相互直接没有登陆过 |
![]() | 9 daimaosix 2022-11-08 03:37:46 +08:00 via Android ![]() 那就是不用宝塔 |
![]() | 10 felixcode 2022-11-08 07:16:01 +08:00 via Android 用了宝塔,只能先默认是宝塔的漏洞了。 |
11 bobryjosin 2022-11-08 07:17:17 +08:00 via Android 不要用宝塔,最好手动部署 |
![]() | 12 R18 2022-11-08 07:17:32 +08:00 via Android 起码把你的马发出来吧。服务器被黑我碰到过两种情况一种就是 redis 对外访问还没口令。一种是用的 wp 用了网上的主题和扩展。 |
13 cwyalpha 2022-11-08 07:41:00 +08:00 via iPhone pma ? |
14 ltkun 2022-11-08 08:02:45 +08:00 via Android 第一次听到 bt 这个缩写我以为是 bt 下载 庆幸从未用过宝塔这种 debian 系 apt 安装已经够简单了 红帽系 yum slack 的 pacman 这些包管理一个比一个人性化 还想着投机取巧就有点说不过了 |
![]() | 15 xyjincan 2022-11-08 08:06:50 +08:00 via Android SELinux 开了没,看看记录 |
![]() | 16 xyjincan 2022-11-08 08:13:24 +08:00 via Android 坐一个标准环境,啥都不放,看看会不会出问题 |
![]() | 18 danhahaha 2022-11-08 08:57:02 +08:00 宝塔配 php 黑客最爱呀,别告诉我你用的是 thinkphp,如果是,那就马场 |
![]() | 19 danbai PRO 已经脱离宝塔,脱离 nginx 了。用 caddy |
![]() | 20 QKgf555H87Fp0cth 2022-11-08 09:49:12 +08:00 好歹发点有用的信息吧 |
![]() | 21 virusdefender 2022-11-08 09:58:16 +08:00 /www/server/nginx/waf/config 拓展名都没有,php 能解析?文件内容发一下呢 |
22 xia0pia0 2022-11-08 10:07:55 +08:00 查日志,WEB 日志、系统日志,总会有蛛丝马迹的 |
![]() | 23 mhycy 2022-11-08 10:18:54 +08:00 宝塔端口有对外么? |
![]() | 24 bao3 2022-11-08 11:22:42 +08:00 via iPhone ![]() 自己手动搭建 php 的环境是不是更安全。生产环境,千万不要使用什么一键安装、什么套件包,你很难相信有没有私货。 |
![]() | 25 winterx 2022-11-08 11:50:45 +08:00 宝塔自己夹带私货,建议别用 |
26 dendi009 OP 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 也没发现被篡改的地方, 哪位老板能支支招,怎么查这个问题 |
27 dendi009 OP @bobryjosin 不是自己的机器,跨部门的 |
28 dendi009 OP @R18 挂码内容是 lua 写的 概率跳转。 被挂了什么内容不是重点。 重点是怎么能一次次挂上去的。 参考最新发的 日志 |
29 dendi009 OP @virusdefender config 是 在 waf 里面运行 lua 代码, 而且是明文, 代码内容是一定概率跳转 web 请求到 灰色网站上面,跟 config 内容没什么关系 |