网站被挂马植入webshell导致网站瘫痪案例

news2025/1/11 17:12:50

一、问题现象

下午两点,刚刚睡醒,就接到了客户打来的电话,说他们的网站挂(这个用词很不准确,但是感觉到问题的严重性)了,询问是怎么发生的,之前做了什么操作,客户的回答是:什么都没做,突然就不行了!对于这样的回答,我早已习惯,因为要想从客户那里得到有用的咨询,基本上很难,因为客户不是专业人士,所以只能根据客户的描述,一步步去判断问题。

通过客户给出的这个提示,问题判断方向有如下几个方面:

  • 1、网站无法访问了,可能服务down了。也可能服务器宕机了。
  • 2、网站访问很慢,基本打不开,所以客户就认为宕机了,但是此时服务和服务器可能还处于启动状态。
  • 3、客户自身网络问题,或者DNS问题?

带着疑问,开始了故障排查。

二、问题排查

作为一个运维老鸟,我的一贯思路就是眼见为实,既然客户说网站不能访问了,那我还需要自己测试一下,打开浏览器,输入域名,网站久久不能打开,直到超时。看来确实网站打不开了。

2.1、初步排查

接着,开始登录服务器把脉,客户网站的架构是nginx+tomcat,我首先通过ssh登录到nginx服务器上,连接速度还是很快的,登录上去后,先执行下top命令,检查下系统整体运行状态,如下图所示:

5d5020bf6aa14ed2867bf107eb6c132d.png

这是一个centos7.9的系统,nginx服务器的硬件配置是32Gb内存,2颗8核物理CPU,nginx通过负载均衡将动态、静态请求发送给后端的多个tomcat上,tomcat运行在另外两台独立的服务器上,硬件配置为2颗8核物理CPU,64GB内存。

从图中可以看出,服务器CPU资源有一定负载,但是不高,32GB的内存资源还比较充足,cached了不少内存,这部分都是可以使用的。另外16个nginx进程每个平均占用CPU负载在30%-40%之间。整体来看,系统资源还是比较充足的,初步判断,不是nginx服务器的问题。

接着,继续登录到tomcat所在的服务器,仍然通过top命令查看系统整体资源状态,如下图所示:

6256724978b2471495c8f96e30f1c08a.pngtomcat服务器也是一个centos7.9的系统,系统整体负载偏高(最高14),64Gb的物理内存,可用的仅剩下200M左右,虽然cached了48GB左右,另外可以看到有三个java进程,每个进程占用cpu资源都在100%以上,并且一直持续了几个小时,这里有些异常,最后,关注了一下,启动java进程的是apsds这个普通用户。

然后继续查看,发现这三个java进程,其实是启动了三个tomcat实例,每个tomcat实例都是一个独立的服务,接着,再去查看第二个tomcat物理服务器,发现跟现在这个无论是硬件配置、还是软件部署环境,都完全一致,也就是两台tomcat启动了6个tomcat实例,通过前端的nginx做负载均衡整合,对外提供web服务。

2.2、第二次排查

通过简单的一遍服务器状态过滤,发现可能出问题的是tomcat服务器,于是将精力集中在tomcat服务器上,于是,重新登录tomcat机器,查看tomcat访问日志,通过对日志的查看,发现了一些异常,因为有很多不熟悉的静态页面被访问,如下图所示:

7d7d334828ed4a06824c176d67219c22.png图中966.html这个页面感觉有问题,因为客户的网站静态页面是自动生成的,生成的页面后缀是.htm的,而不是html,这是其一,其二,通过查看966.html这个页面的访问次数,吓了一大跳,一天的时间,300多万次访问,这明显不正常,因为客户网站平时的访问量都在10万以内,根本不可能这么高。 

接着,继续查看访问日志,发现类似966.html的这种页面访问非常多,每个页面的访问量都很大,于是,就到/htm/966.html对应的网站目录下,一探究竟吧,进入网站根目录下的htm目录,又发现了一些异常,如下图所示:

93867881255040dfab9619e9404f2236.png这个目录是网站生成的静态页面目录,可以看到有基于htm的静态页面,这些页面以gk开头,是客户网站自动生成的正常文件,另外还有很多以html结尾的静态文件,这些文件不清楚是怎么来的,此外,还看到有个1.jsp的文件,这个就更诡异了,在静态页面目录下,不可能放一个jsp文件啊,经过与客户的咨询以及与研发的沟通,确认这些以html结尾的静态文件以及1.jsp文件都不是网站本身生成或使用的,那么重点来了,先来看看这些文件的内容吧。 

首先查看以html结尾的静态文件内容是什么吧,这里就以这个996.html文件为例,通过浏览器访问996.html文件,顿时,傻眼了!!!请看下图:fd8ada2abfe843f09d71ad7b90093dfa.png

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/179425.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Bash 脚本实例:获取符号链接的目标位置

我们都熟悉 Linux 中的符号链接,通常称为符号链接或软链接,符号链接是指向任何文件系统中的另一个文件或目录的特定文件。本文将介绍 Linux 中符号链接的基础知识,并创建一个简单的 bash 脚本来获取符号链接的目标位置。符号链接的类型主要有…

【栈和队列】java实现栈和队列以及集合中的栈和队列

前言: 大家好,我是良辰丫🏍🏍🏍,今天我带领大家去学习栈和队列的相关知识,💞💞💞栈和队列在数据结构中是相对简单的,但是应用还是蛮多的&#xff…

分享142个ASP源码,总有一款适合您

ASP源码 分享142个ASP源码,总有一款适合您 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下..., 142个ASP源码下载链接:https://pan.baidu.com/s/1TxdTrCJpO08rKLCUzIh0hQ?pwdyhka 提取码&#x…

微信小程序+云函数+腾讯云对话机器人API(ChatBot)

文章目录 前言 一、小程序云开发是什么? 二、步骤 1. 在app.js中绑定好云环境id,并且选好当前环境以及选好云文件夹 2. 去到腾讯云API Explorer中选好Region地区和Query这个必填参数,然后进行代码生成 3. 在上面的API Explorer网站点击前往获…

Python局部函数及用法

Python 函数内部可以定义变量,这样就产生了局部变量,有读者可能会问,Python 函数内部能定义函数吗?答案是肯定的。Python 支持在函数内部定义函数,此类函数又称为局部函数。那么,局部函数有哪些特征&#x…

Redis实现好友关注 | 黑马点评

目录 一、关注和取关 二、共同关注 三、关注推送(feed流) 1、Timeline模式的方案 拉模式 推模式 推拉结合模式 总结 2、推模式实现关注推送 需求 feed流分页问题 feed流的滚动分页 实现推送到粉丝的收件箱 …

(学习笔记)opencv和dlib的基础操作

来源:投稿 作者:LSC 编辑:学姐 本篇文章将讲述作者对opencv和dlib基础操作的学习笔记。 首先来看opencv的11种基础操作 (1)imread 读取图片 (2)resize 图片缩放 (3)cvtColor 灰度化 (4)threshold 阈值化 (5)bitwise_not 图像取反 (6)a…

JavaEE-初识网络

目录一、局域网二、广域网三、网络通信基础3.1 IP地址3.2 端口号3.3 协议四、协议分层五、封装和分用一、局域网 局域网,网络种类,覆盖范围一般是方圆几千米之内,其具备的安装便捷、成本节约、扩展方便等特点使其在各类办公室内运用广泛。局…

有序列表标签与无序列表标签

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title></title> </head> <body bgcolor"bisque"> <!-- 在ol有序列表标签和ul无序列表标签…

【初识数据库】进入数据库的大门+数据库基本操作

前言&#xff1a; 大家好&#xff0c;我是良辰丫&#x1f353;&#x1f353;&#x1f353;&#xff0c;这个专栏我将带领大家去探索数据库的汪洋大海&#xff0c;我主要使用的数据库软件是MySQL&#xff0c;数据库软件大同小异&#xff0c;嘿嘿嘿&#xff0c;废话不多说&#x…

分布式事务Seata学习笔记

目录 1.Seata 是什么 2. Seata快速开始 2.1 Seata Server&#xff08;TC&#xff09;环境搭建 db存储模式Nacos(注册&配置中心)部署 3. Seata Client快速开始 4.demo源码:springcloudAlibaba: Alibaba微服务学习demo 1.Seata 是什么 Seata 是一款开源的分布式事务…

神级程序员上网都在看什么?

同样都是上网&#xff0c;为什么大神总能在最短时间内汲取最有效的信息呢&#xff1f; 不怕大神不上网&#xff0c;就怕大神上网比你精&#xff01;其实&#xff0c;你与大神的区别都藏在细节中。 这些神级网站都是我偷看他们电脑抄来的&#xff08;误&#xff09;&#xff0c;…

超链接(还称热连接)标签

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>超链接(还称热连接)</title> </head> <body> <!-- 超链接的特点&#xff1a; 1、有…

Python内置函数

5.6 Python内置函数 Python自带的所有内置函数如下&#xff1a; Python函数 以上为Python3.10中所有的内置函数&#xff0c;其中绝大部分在前面的学习当中都已经接触过了。这里在补充介绍下没有提到或学习到的函数。 5.6.1 callable(object) 描述 如果参数 object 是可调…

Java面试题,mysql相关基础问题(全是自己的总结,如有不对,敬请斧正)

mysql相关基础问题一、mysql中int类型单引号问题二、静态SQL与动态SQL1. 静态SQL2. 动态SQL3. 动态SQL与静态SQL的区别与联系一、mysql中int类型单引号问题 今天写mysql的时候发现了一个问题&#xff0c;在查询的时候不小心把int类型的id加上引号查询了&#xff0c;但是也能查…

Day08 C++STL入门基础知识五——vector容器(下) 插入删除-数据存取-交换容器-预留空间【全面深度剖析+例题代码展示】

More haste, less speed. 欲速则不达 文章目录1. 承接上文2. 插入操作2.1 函数原型(总括)2.2 尾插尾删2.2.1 操作2.2.2 代码展示2.2.3 测试结果2.3 迭代器插入2.3.1 操作2.3.2 代码展示2.3.3 测试结果2.4 think小思考2.4.1 小疑问2.4.2 思路2.4.3 代码展示2.4.4 测试结果3. 删除…

数据结构---堆

堆 定义 基本操作 建堆 堆排序 优先队列 一、堆的定义&#xff1a; 堆必须是一个完全二叉树 还得满足堆序性 什么是完全二叉树呢&#xff1f; 完全二叉树只允许最后一行不为满 且最后一行必须从左到右排序 最后一行元素之间不可有间隔&#xff0c;中间不可有空缺 如下几棵树…

CSS基础学习

HTMLCSSJavaScript 结构表现交互 学习内容&#xff1a; CSS是什么CSS怎么用&#xff08;快速入门&#xff09;CSS选择器&#xff08;重点难点&#xff09;美化网页&#xff08;文字&#xff0c;阴影&#xff0c;超链接&#xff0c;列表&#xff0c;渐变…&#xff09;盒子模型…

基于电压型磁链观测器的异步电机矢量控制学习

导读&#xff1a;本期主要介绍电压型磁链观测器&#xff08;voltage flux observer&#xff09;在静止坐标系下的表现形式&#xff0c;应用在异步电机矢量控制系统中。如需要文中的仿真模型&#xff0c;关注微信公众号&#xff1a;浅谈电机控制&#xff0c;获取。一、引言磁链估…

万字长文--详解Node.js(快速入门)

Node.js基础与扩展Node.js1、初识Node.js与内置模块1.1 Node.js初识1.2 fs文件系统模块1.3 path路径模块1.4 http模块2、模块化2.1 模块化的基本概念2.2 Node.js中模块化2.3 npm与包2.4 模块的加载机制3、Express3.1 初识Express3.2 Express路由3.3 Express中间件3.4 使用Expre…