全网AI资源网站搭建

电脑端+手机端+微信端=数据同步管理

免费咨询热线:13114099110

网络安全技术研究之文件上传漏洞的原理与原理

发布时间:2023-11-16 10:04   浏览次数:次   作者:派坤优化

本公众号提供的工具、教程、学习路线、优质文章均为原创或采集自网络。 它们旨在提高网络安全技术水平。 它们仅用于技术研究。 请遵守国家相关法律法规。 请不要将它们用于非法目的。 如果您对文章内容有任何疑问,可以尝试加入讨论群或者私信。 如有侵权,请联系编辑处理。

2 内容快速概述

1. 文件上传漏洞介绍

文件上传漏洞是指由于程序员对用户文件上传的控制不够或处理缺陷网站漏洞检查,导致用户可以超越自身权限向服务器上传可执行的动态脚本文件。 这里上传的文件可以是木马、病毒、恶意脚本等,这种攻击方式是最直接有效的。 “文件上传”本身没有问题。 问题在于服务器如何处理和解释文件上传后的情况。 如果服务器的处理逻辑不够安全,将会导致严重的后果。

文件上传漏洞本身就是一个危害极大的漏洞,并且该漏洞的利用范围无限扩大。 大多数上传漏洞被利用后,攻击者都会留下这些漏洞,以方便后续进入系统。 当攻击者被放置或插入到​​受影响的系统中后,他可以利用它更容易、更隐蔽地在服务中做任何他想做的事。

2、文件上传漏洞原理:

在文件上传功能中,如果服务器端脚本语言没有对上传的文件进行严格的验证和过滤,导致恶意用户上传恶意脚本文件,就可能获得执行服务器端命令的能力。 这是一个文件上传漏洞。

文件上传漏洞对于Web应用程序来说是一个非常严重的漏洞。 一般情况下,Web应用程序会允许用户上传一些文件,比如头像、附件等信息。 如果Web应用没有对用户上传的文件进行有效的检查和过滤,恶意用户就会上传一句话木马等,从而控制Web网站的目的。

网络安全技术研究之文件上传漏洞的原理与原理(图1)

3、文件上传漏洞高危触发点

只要有文件上传功能的地方都可能存在文件上传漏洞,比如相册、头像上传、视频照片分享等。 论坛帖子、邮箱等可以上传附件的地方,也是上传泄露的高危区域。 此外,文件管理器等功能也可能被攻击者利用。

值得注意的是,如果移动端存在类似的操作,那么同样的原理也会导致文件上传漏洞的风险。

网络安全技术研究之文件上传漏洞的原理与原理(图2)

4.前端检测:

主要通过代码检测,非常容易被绕过。

一、原理:

Web应用系统虽然对用户上传的文件进行验证,但验证是通过前端代码完成的。 由于恶意用户可以通过抓包软件修改前端或篡改上传文件,因此基于js的验证很容易被绕过。

2、如何判断当前页面是否使用前端is验证方式:

前端验证通过后,表单提交成功后会通过浏览器发出网络请求。 但如果前端验证不成功,则不会发出本次网络请求; 您可以在浏览器的网元中检查是否发出了网络请求。

3.绕过方法: 3.1删除js绕过:

只需删除代码中事件中上传文件时验证上传文件相关的代码即可:

或者不能加载全部js,也可以将html源码复制到本地,然后修改对应的代码并在本地提交。

5、后端检测_后缀名检测漏洞: 1、原理:

通常对文件的扩展名后缀进行检测,主要是通过黑白名单进行过滤和检测。 如果不符合完整的过滤规则,则不允许上传。

2、黑名单: 2.1 原理:

黑名单检测:通常有一个特殊文件,其中包含常见的危险脚本文件。 例如:2.4.3或更早版本的黑名单:

2.2 绕过方法:解析漏洞截断上传案例绕过

例如:aSp 和 pHp。

黑名单扩展被忽视

例如: asa 和 cer asp: asa cer aspx jsp: jspx jspf php: php php3 php4 php5 phtml pht exe: exee

使用的命名方案

shell.php。 shell.php 中的空格 shell.php:1.jpg shell.php::$DATA shell.php:1.jpg 中,后缀名后面的点和空格将被删除。

双写旁路

有时在检测过程中,背景会用空格替换敏感字符。 这种情况下,我们可以使用双写来绕过它。 例如:

3、白名单: 3.1 原理:

白名单检测:一般有一个特殊文件,其中包含普通文件:jpg png GIF

3.2 绕过方法:解析漏洞并截断上传 6.后端检测_00截断: 1.原理:

虽然Web应用已经过验证,但由于文件上传后的路径可以由用户控制,因此攻击者可以采用手动添加字符串标识符0X00的方法来截断后续拼接内容,导致后续内容被截断。无效,后续内容也无效。 该内容可以帮助我们绕过黑白名单的检测。

2.绕过思路:

在C语言中,空字符有特殊的含义,它代表字符串连接的结束。 这里我们使用PHP语言,它是一种高级语言。 底层采用C语言实现。 也就是说PHP中也可以实现空字符的字符串拼接结束功能。 但是我们不能在URL中直接使用null,这样会导致无法识别; 我们查看了ASCII对照表,发现ASCII对照表中的第一个字符是空字符,它对应的十六进制是00,这里我们可以用十六进制使用特殊的00来代替空字符,让它截断下面的内容内容。

用于抓包,因为这里是通过URL传递的文件上传后的存储路径,所以需要对十六进制的00进行URL编码。 编码的结果是,这样就可以对后面的内容进行截断和拼接。 文件名不再有效:

七、后端检测_MIME检测: 1、什么是MIME:

MIME(邮件)多用途互联网邮件扩展类型。 它是一种将具有特定扩展名的文件设置为由应用程序打开的方法。 当访问带有扩展名的文件时,浏览器将自动使用指定的应用程序打开它。

绕过上传限制-服务器端绕过MIME检测:

网络安全技术研究之文件上传漏洞的原理与原理(图3)

2.常见的MIME类型:

text/plain(纯文本) text/html(HTML 文档) text/(js 代码) /xhtml+xml(XHTML 文档) image/gif(GIF 图像) image/jpeg(JPEG 图像) image/png(PNG 图像) video /mpeg(MPEG 动画)/octet-(二进制数据)/pdf(PDF 文档)

3、检测方法:

在文件上传过程中,服务器会为我们上传的文件生成一个数组。 该数组中的一项是文件的类型。 服务器检测文件时,会检测脚本中的黑白名单以及该数组中的项目。 比较一下,如果符合要求,则允许上传该文件。

网络安全技术研究之文件上传漏洞的原理与原理(图4)

4、MIME绕过原理:

一些Web应用系统通过-type字段确定文件类型。 黑客可以捕获数据包并将-type字段更改为常见的图像类型,例如image/gif,从而绕过验证。

八、后端检测_文件头检测漏洞: 1、原理:

在每个文件(包括图片、视频或其他非 ASCII 文件)的开头(以十六进制表示)实际上有一个区域显示文件的实际使用情况。 这是文件头标记。 我们可以通过十六进制编辑器打开该文件网站漏洞检查,并添加服务器允许的文件头来绕过检测。

2. 常用文件头:

注:以下文件头格式为十六进制格式:

GIF:47 49 46 38 39 61 png:89 50 4E 47 0D 0A 1A 0A JPG:FF D8 FF E0 00 10 4A 46 49 46

在绕过文件头时,我们可以将上述文件头添加到我们的一句话木马内容的前面,以达到绕过文件头检测的目的。

9.后端检测_内容检测图片马绕过: 1.漏洞原理:

一般情况下,文件内容验证是通过函数检测来判断文件是否为有效的文件镜像。 如果是,则允许上传,否则不允许上传。 本实验是将一句话木马插入到【合法】镜像文件中,然后使用管理工具进行远程连接。

2.图马制作:

准备一张图片,这里是a.png,和一句木马,使用如下命令合成一张图片马3.php:a.php内容:

复制

网络安全技术研究之文件上传漏洞的原理与原理(图5)

命令:

copy a.png /b + a.php /a 3.php  
/b:指定以二进制格式复制、合并文件,用于图像或者声音类文件
/a:指定以ascii格式复制、合并文件用于txt等文本类文件

复制

网络安全技术研究之文件上传漏洞的原理与原理(图6)

注:该命令的含义是:使用copy命令将a.png图像文件以二进制文件的形式添加到a.php文件中,并以ASCII的形式输出为3.php文件文本文件。

3.解析图像马:

一般解析图片马需要结合解析漏洞或者文件包含来解析图片马;

10、解析漏洞: 1、文件解析漏洞: 1.1 利用漏洞的前提条件::

特定的Web应用程序并不禁止上传文件,Web服务器提供商允许用户上传自定义文件。

1.2 原理:

。 文件(或“分布式配置文件”),全称是(超文本条目)。 提供了一种更改目录配置的方法,方法是将包含一个或多个指令的文件放置在特定文档目录中以作用于该目录及其所有子目录。 作为用户,您可以使用的命令是有限的。 管理员可以通过命令进行设置。

1.3 使用方法:

上传覆盖文件,重写解析规则,在脚本模式下用脚本马解析上传的图片。

1.4. 文件内容:

.文件解析规则的添加可以通过组合的方式来完成,但是要自己测试一下。


SetHandler application/x-httpd-php   #在当前目录下,如果匹配到evil.gif文件,则被解析成PHP代码执行
AddHandler php5-script .gif          #在当前目录下,如果匹配到evil.gif文件,则被解析成PHP代码执行

复制

2、漏洞分析: 2.1 漏洞原理:

解析文件的规则是从右到左开始。 如果后缀名无法识别,则将从右向左解析文件。 例如,test.php.ab的“.a”和“.b”后缀无法被识别和解析,因此test.php.ab将被解析为test.php。

2.2 受影响版本:

1.x 2.2.x

3、IIS6.0解析漏洞:

IIS6.0解析漏洞有两种类型: 1、目录解析:名为xx.asp的文件夹中的文件将作为ASP文件执行。 2、文件解析:xx.asp;.jpg 此类格式错误的文件名在“;”后面直接被忽略,即作为xx.asp文件执行。

IIS6.0默认的可执行文件除了asp之外还有.asa.cer.cdx这三种类型。

4.IIS7.0| IIS7.5 | Nginx解析漏洞:4.1原理:

Nginx拿到文件路径(更专业的叫URI)/test.jpg/test.php后,看到后缀是.php,就认为该文件是php文件,转交给php处理。 当php看到/test.jpg/test.php不存在时,它删除了最后一个/test.php。 当它看到 /test.jpg 存在时,就将 /test.jpg 视为要执行的文件,因为后缀是 . jpg,php认为这不是php文件,所以返回。 这就涉及到PHP的一个选项:cgi。 默认值为1,表示开启。 打开此选项 PHP 可以修复文件路径。

例如,当php遇到文件路径/1.jpg/2.txt/3.php时,如果/1.jpg/2.txt/3.php不存在,则将最后一个/3.php删除。 然后判断/1.jpg/2.txt是否存在。 如果存在,则将 /1.jpg/2.txt 视为文件 /1.jpg/2.txt/3.php。 如果 /1.jpg/2.txt 仍然不存在,则继续删除/2.txt,以此类推。 4.2 漏洞形式:

4.3 另外两个解析漏洞:

%20\0.php

11、条件竞争漏洞:

条件竞争漏洞是一个服务器端漏洞。 由于服务器并发处理来自不同用户的请求,如果并发处理不当或者相关操作的逻辑顺序设计不合理,就会出现此类问题。 。

上传文件的源码中没有对上传文件进行验证。 文件直接上传。 上传成功后进行判断:如果文件格式符合要求,则重命名;如果符合,则重命名。 如果文件格式不符合要求,该文件将被删除。

由于服务器并发(同时)处理多个请求,如果用户a上传木马文件,由于代码执行需要时间,而用户b在此过程中访问了用户a上传的文件,会出现以下三种情况:

1、访问时间点上传成功前,该文件不存在。

2、访问时间点,文件刚刚上传成功,尚未进行判断。 该文件存在。

3、确定访问时间点后,文件被删除,不再有该文件。

12.二次渲染漏洞: 1.二次渲染原理:

我们上传文件后,网站会对图片进行二次处理(格式、尺寸要求等),服务器会对里面的内容进行替换和更新。 处理完成后,会根据我们原来的图片生成一张新的图片,并放在与网站对应的标签上显示。

2.绕过:

1、配合文件包含漏洞:在网站二次处理后的图片中插入一句话木马,即在图片重新渲染后会保留的数据部分插入一句话,确保不会二次加工时不得使用。 删除它。 这样,第二次渲染图中就有了一句话,在匹配的文件中就得到了漏洞。 2、可以比条件:这里二次渲染的逻辑有漏洞。 先上传文件,再判断。 如果符合要求,则保存。 如果不符合要求,请删除。 可以利用条件竞争来进行爆炸性上传。

3、如何判断图像是否经过二次处理?

对比待上传图片和上传后图片的大小,用十六进制编辑器打开图片,看看上传后保留了哪些数据,改变了哪些数据。

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。