搜索
首页运维安全由追踪溯源发现的不安全解压GetShell实例分析

近日我们帮助某客户追踪溯源一例入侵事件时,发现黑客在获取服务器权限之前利用网站的「ZIP 解压功能」上传了 Webshell。由于此次的漏送利用方式在「攻击载荷的构造」与「实际解压路径」方面较有代表性,并且业界对「不安全解压」漏洞的关注度仍不够。因此我们编写了这篇报告,在报告中讲解了入侵溯源与漏洞发现的过程,并从安全开发和安全狗产品防护方案两个维度提出了一些安全建议,希望对行业有所补益。

值得注意的是,虽然该 CMS 已经做了相关防御配置,若在 CMS 的根目录下直接写入 JSP 文件是无法执行的,会报 403 错误。攻击者利用了 war 包会自动部署的特点,通过「目录穿越」的思路使 war 包跳出该 CMS 的根目录。

一、入侵溯源

某公司运维人员在深夜值班时发现系统存在一定异常,为了尽**查问题,客户联系了我司,海青实验室随后介入,进行溯源和分析,并提供后续的处置方案。

通过查看 Tomcat 的日志文件/logs/localhost_access_log.yyyy-MM-dd.txt可以发现,查看日志可以发现,攻击者曾经对网站的登录接口实施了爆破(对「POST /cmscp/login.do」接口的访问频率很高),如图所示。

注:爆破成功时的 HTTP 状态码是 302,而爆破失败时的 HTTP 状态码是 303。

为了判断攻击者是否上传网站木马,使用网站安全狗的 Webshell AI 检测引擎对 Tomcat 的 webapps 目录进行扫描,可发现名为「/admin/login.jsp」的文件被识别为 Webshell(黑客对这一 Webshell 的命名具有一定的迷惑性),如图所示。

由追踪溯源发现的不安全解压GetShell实例分析

经过进一步人工确认,可判断该 jsp 文件确为 Webshell。并且它与 admin.war 这一文件的自动部署有关,如图所示。

由追踪溯源发现的不安全解压GetShell实例分析

那么这一 war 包是如何被上传到服务器的呢?继续对日志文件进行分析,在分析的时候重点关注「可能为文件上传功能的接口」。可以初步判断,黑客曾在使用该 Webshell 之前使用ZIP 上传ZIP 解压功能,如图所示。

由追踪溯源发现的不安全解压GetShell实例分析

找到服务器上被文件解压接口调用的 test5.zip 文件,对之进行分析可以发现 admin.war 所处的路径是「test5.zip\..\..\..」。因而,该 ZIP 文件是黑客精心构造的恶意文件,它将使得该 war 包的解压路径不再是预设的「/uploads/1」目录,而是 Tomcat 的「webapps」目录,如图所示。

由追踪溯源发现的不安全解压GetShell实例分析

注:本文的恶意 zip 文件的生成方式

(1)执行以下 python 脚本,生成 test5.zip:

import zipfile if __name__ == "__main__": try:binary = b'<script>alert("helloworld")</script>'zipFile = zipfile.ZipFile("test5.zip", "a", zipfile.ZIP_DEFLATED) info = zipfile.ZipInfo("test5.zip")zipFile.writestr("../../../safedog.html", binary)zipFile.close()except IOError as e: raise e

(2)将包含有 Webshell 的 war 包拖拽到「test5.zip」,如图所示。

由追踪溯源发现的不安全解压GetShell实例分析

二、代码审计

经过前面的入侵溯源分析可以初步断定,这次攻击与该 CMS 的「ZIP 解压接口」(GET /cmscp/core/web_file_2/unzip.do?ids={ids}&parentId={parentId})密切相关。该接口对应了 WebFileUploadsController.java 的 unzip 方法,如图所示。

由追踪溯源发现的不安全解压GetShell实例分析

对 unzip 方法进行跟进,发现它的具体实现在 WebFileControllerAbstractor.java 中。可以发现,在对 zip 文件进行解压的时候,调用了 AntZipUtil 类的 unzip 方法,如图所示。

由追踪溯源发现的不安全解压GetShell实例分析

对 AntZipUtil 类的 unzip 方法进行跟进,可发现该方法未对 ZIP 压缩包里的文件名进行参数校验,就进行文件的写入。这样的代码写法会引发目录穿越漏洞,如图所示。

由追踪溯源发现的不安全解压GetShell实例分析

目前,海青实验室已将该漏洞提交 CNVD,并通知厂商进行修复。

三、总结

通过这则实例可以发现,解压功能的安全性可能对网站安全造成较大危害(以 Spring Integration Zip 开发组件为例,它也曾被爆出 CVE-2018-1261 这一「不安全解压漏洞」)。若网站的业务涉及了解压功能,建议更加重视安全开发的维度,除此以外安全狗也提供了相应的产品防御方案。

在安全开发方面,建议研发人员在实现解压算法时,从以下几个方面进行自查与限制:

(1)是否限制压缩包内文件的扩展名

例如:.war、.jsp、jspx、.jsp::$DATA(只影响 Windows 主机)

(2)是否限制压缩包内文件的实际解压路径

(3)是否限制压缩包内文件的总大小(以防压缩包**引发的拒绝服务攻击)

(4)是否赋予Web 应用目录合理的权限

此外,我们也建议用户选择可靠专业的安全产品,例如安装了安全狗产品的用户,一旦发生安全事件,将会自动收到系统发出的告警短信,以尽快介入处置,避免产生更大的损失。

由追踪溯源发现的不安全解压GetShell实例分析

在「安全狗产品防御」方面,建议用户使用「网站安全狗」和「云御」的网站后台防护以及服务器狗的文件目录守护功能,云御和网站安全狗的网页后台路径保护功能可以实现针对网站后台暴破行为的防护。

云御后台防护功能如图所示:

由追踪溯源发现的不安全解压GetShell实例分析

网站安全狗后台防护功能如图所示:

由追踪溯源发现的不安全解压GetShell实例分析

服务器文件夹目录守护功能:

由追踪溯源发现的不安全解压GetShell实例分析

  

以上是由追踪溯源发现的不安全解压GetShell实例分析的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:亿速云。如有侵权,请联系admin@php.cn删除

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。