Webshell通常指以JSP、ASP、PHP等网页脚本文件形式存在的一种服务器可执行文件,一般带有文件操作、命令执行功能,是一种网页后门。攻击者在入侵网站后,通常会将Webshell后门文件与网站服务器Web目录下正常的网页文件混子一起,使用浏览器或专用客户端进行连接,从而得到一个服务器操作环境,已到达控制服务器的目的。
Webshell分类
根据不同的脚本名称,常见的Webshell脚本类型有JSP、ASP、PHP等。
JSP型Webshell脚本
- JSP全称Java Server Pages,是一种动态Web资源的开发技术。JSP是在传统的网页HTML文件(*.htm,*.html)中插入java程序段(scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。
- JSP型Webshell脚本如下:
-
- <%Runtime.getRuntime().exec(request.getParameter("i"));%>
ASP型Weshell脚本
- ASP全称Active Server Page,是服务器开发专用脚本。它可以与数据库其他程序进行交互,是在IIS中运行的一种程序。
- ASP型Webshell脚本如下:
-
- <%eval request("cmd")%>
PHP型Webshell脚本
- PHP全称Hypertext Preprocessor,是一种通用开源脚本语言,主要适用于Web开发领域。PHP可支持常见的数据库及操作系统,可快速地执行动态网页。
<?php
$a=exec($_GET["input"]);
echo $a;
?>
Webshell用途
站长工具
- Webshell的一般用途是通过浏览器来对网站所在的服务器进行运维管理。随着Webshell的发展,其作用演变为在线编辑文件、上传和下载文件、数据库操作、执行命令等。
持续远程控制
- 当攻击者利用漏洞或其他方法完成Webshell植入时,为了防止其他攻击者再次利用,其会修补该网站的漏洞,已到达网站被其单独、持续控制。而Webshell本身所拥有的密码验证可以确保其在未遭受暴力破解工具攻击的情况下,只可能被其上传者利用。
权限提升
- Webshell的执行权限与Web服务器的权限息息相关,若当前Web服务器是root权限,则Webshell也将获得root权限。在一般情况下,Webshell为普通用户权限,此时攻击者为了进一步提升控制能力,会通过设置任务计划、内核漏洞等方法获取root权限。
极强的隐蔽性
- 部分恶意网页脚本可以嵌套在正常网页运行,且不容易被查杀。一旦Webshell上传成功,其功能也将被视为送在服务的一部分,流量传输也将通过Web服务本身进行,因此拥有极强的隐蔽性。
Webshell检测方法
基于流量的Webshell检测
- 基于流量的Webshell检测方便部署,我们可以通过镜像流量直接分析原始信息。基于payload的行为分析,我们不仅可对已知的Webshell进行检测,还可以识别出未知的、伪装性强的Webshell,对Webshell的访问特征(IP/UA/Cookie)、payload特征、path特征、时间特征等进行关联,以时间为索引,可还原攻击事件。
基于文件的Webshell检测
- 我们通过检测文件是否加密(混淆处理),创建Webshell样本hash库,可对比分析可疑文件。对文件的创建时间、修改时间、文件权限等进行检测,已确认是否为Webshell。
基于日志的Webshell检测
- 对常见的多种日志进行分析,可帮助我们有效识别Webshell的上传行为等。通过综合分析,可回溯整个攻击过程。
Webshell防御方法
- 网页中一旦被植入Webshell,攻击者就能利用它获取服务器系统权限、控制“肉鸡”发起DDos攻击、网站篡改、网页挂马、内部扫描、暗链/黑链植入等一些列攻击。因此,针对Webshell的防御至关重要,以下为一些防御方法。
配置必要的防火墙
- 配置防火墙,开启策略,防止暴力不必要的服务为攻击者提供利用条件。
进行安全加固
- 对服务器进行安全加固,如,关闭远程桌面功能、定期更换密码、禁止使用最高权限用户运行程序、使用HTTPS加密协议等。
加强权限管理
- 对敏感目录进行权限设置,限制上传目录的脚本执行权限,不允许配置执行权限等。
安全Webshell检测工具
- 根据检测结果对已发现的可疑Webshell痕迹立即隔离查杀,并排查漏洞。
排查程序存在的漏洞
- 对存在的漏洞,及时修补。可以通过专业人员的协助排查漏洞及入侵原因。
时常备份数据库等重要文件
保持日常维护
- 注意服务器中是否有来历不明的可执行脚本文件。
采用白名单机制
- 不在白名单内的一律禁止上传,上传目录权限遵循最小权限原则