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

文件上传漏洞高危点
相册、头像上传
视频、照片分享
附件上传(论坛发帖、邮箱)
文件管理器
文件上传校验方法
客户端校验:通常通过JavaScript在前端进行简单的文件类型检查,但这种校验方式很容易被绕过。
服务端校验:
检查后缀:通过白名单或黑名单的方式限制上传的文件类型,但这种方式存在多种绕过方法,如特殊扩展名、大小写变换、0x00截断、htaccess文件利用等。
检查内容:通过检查文件的文件头信息或文件内容来判断文件类型,如图片马等。
其他校验方法:如根据文件的MIME类型进行判断等。
双写绕过
双写绕过是一种针对黑名单校验的文件上传漏洞绕过方法。当网站后台代码检测到上传的文件后缀名在黑名单中时,可能会将后缀名变为空。此时,攻击者可以通过双写后缀名(如test.pphphp)来绕过黑名单校验,因为系统可能只会去除一个后缀名,导致最终的文件名仍然包含恶意后缀(如.php)。
二、实验目的
三、实验步骤
打开实验环境,了解文件上传漏洞的原理
首先,需要打开“东塔攻防世界”中的“文件上传之双写绕过”靶场环境。通过该环境,可以直观地了解文件上传漏洞的原理和危害。
进行文件上传,抓包分析数据包,选择相应的绕过方法实现上传Webshell
在实验环境中,尝试上传一个包含恶意代码的文件(如PHP文件)。
使用抓包工具(如Wireshark)捕获上传过程中的数据包。
分析数据包,找到文件上传的请求,并尝试修改文件名后缀以绕过黑名单校验。
将文件名后缀双写(如test.pphphp),然后重新发送请求。
如果绕过成功,服务器将保存包含恶意后缀的文件,并可能执行其中的代码。
用蚁剑尝试连接,拿下权限
如果成功上传了Webshell,可以使用蚁剑(一款常用的Webshell管理工具)尝试连接。
在蚁剑中输入Webshell的URL和密码(如果设置了密码),然后尝试连接。
如果连接成功,将能够获取服务器的权限,进而进行进一步的操作。
四、防御方式
对上传的文件在服务器上存储时进行重命名
对上传的文件进行重命名,可以增加攻击者利用文件上传漏洞的难度。例如,可以使用UUID等唯一标识符作为文件名的一部分,这样即使攻击者成功上传了恶意文件,也难以预测其文件名。
禁止上传危险的文件类型,如jsp、jar、war等
在服务器端配置黑名单或白名单,明确禁止上传某些危险的文件类型。同时,要定期更新黑名单或白名单,以应对新的威胁。
只接收指定类型的文件
根据业务需求,只接收特定类型的文件(如图片、视频等)。在服务器端进行严格的文件类型检查,确保上传的文件符合规定。
上传文件做日志记录
对上传的文件进行日志记录,包括上传时间、上传者、文件名等信息。这样可以在发生安全事件时,快速定位并追溯问题来源。
通过以上防御方式,可以有效降低文件上传漏洞的风险,保护Web应用的安全。