靶场科普 | 文件上传之双写绕过

靶场科普 | 文件上传之双写绕过
最新回答
活给自己看

2023-08-07 16:14:52

靶场科普 | 文件上传之双写绕过

一、实验介绍

  1. 文件上传漏洞简介

    文件上传漏洞是指在文件上传的功能处,若服务端脚本语言未对上传的文件进行严格验证和过滤,恶意用户可能会上传恶意脚本文件,从而获取执行服务端命令的能力。这种漏洞对Web应用来说是一种非常严重的安全威胁。Web应用通常会允许用户上传头像、附件等信息,如果未对用户上传的文件进行有效检查过滤,恶意用户可能会上传一句话木马等Webshell,进而控制整个Web网站。

  2. 文件上传漏洞高危点

    相册、头像上传

    视频、照片分享

    附件上传(论坛发帖、邮箱)

    文件管理器

  3. 文件上传校验方法

    客户端校验:通常通过JavaScript在前端进行简单的文件类型检查,但这种校验方式很容易被绕过。

    服务端校验

    检查后缀:通过白名单或黑名单的方式限制上传的文件类型,但这种方式存在多种绕过方法,如特殊扩展名、大小写变换、0x00截断、htaccess文件利用等。

    检查内容:通过检查文件的文件头信息或文件内容来判断文件类型,如图片马等。

    其他校验方法:如根据文件的MIME类型进行判断等。

  4. 双写绕过

    双写绕过是一种针对黑名单校验的文件上传漏洞绕过方法。当网站后台代码检测到上传的文件后缀名在黑名单中时,可能会将后缀名变为空。此时,攻击者可以通过双写后缀名(如test.pphphp)来绕过黑名单校验,因为系统可能只会去除一个后缀名,导致最终的文件名仍然包含恶意后缀(如.php)。

二、实验目的

  1. 掌握文件上传的功能和原理。
  2. 理解上传Webshell的流程和原理。
  3. 通过实践掌握双写绕过的办法。

三、实验步骤

  1. 打开实验环境,了解文件上传漏洞的原理

    首先,需要打开“东塔攻防世界”中的“文件上传之双写绕过”靶场环境。通过该环境,可以直观地了解文件上传漏洞的原理和危害。

  2. 进行文件上传,抓包分析数据包,选择相应的绕过方法实现上传Webshell

    在实验环境中,尝试上传一个包含恶意代码的文件(如PHP文件)。

    使用抓包工具(如Wireshark)捕获上传过程中的数据包。

    分析数据包,找到文件上传的请求,并尝试修改文件名后缀以绕过黑名单校验。

    将文件名后缀双写(如test.pphphp),然后重新发送请求。

    如果绕过成功,服务器将保存包含恶意后缀的文件,并可能执行其中的代码。

  3. 用蚁剑尝试连接,拿下权限

    如果成功上传了Webshell,可以使用蚁剑(一款常用的Webshell管理工具)尝试连接。

    在蚁剑中输入Webshell的URL和密码(如果设置了密码),然后尝试连接。

    如果连接成功,将能够获取服务器的权限,进而进行进一步的操作。

四、防御方式

  1. 对上传的文件在服务器上存储时进行重命名

    对上传的文件进行重命名,可以增加攻击者利用文件上传漏洞的难度。例如,可以使用UUID等唯一标识符作为文件名的一部分,这样即使攻击者成功上传了恶意文件,也难以预测其文件名。

  2. 禁止上传危险的文件类型,如jsp、jar、war等

    在服务器端配置黑名单或白名单,明确禁止上传某些危险的文件类型。同时,要定期更新黑名单或白名单,以应对新的威胁。

  3. 只接收指定类型的文件

    根据业务需求,只接收特定类型的文件(如图片、视频等)。在服务器端进行严格的文件类型检查,确保上传的文件符合规定。

  4. 上传文件做日志记录

    对上传的文件进行日志记录,包括上传时间、上传者、文件名等信息。这样可以在发生安全事件时,快速定位并追溯问题来源。

通过以上防御方式,可以有效降低文件上传漏洞的风险,保护Web应用的安全。