网络安全实习Day2 文件上传绕过技术

文件上传漏洞 知识

定义

⽂件上传漏洞是指由于程序员未对上传的⽂件进⾏严格的验证和过滤,⽽导致的⽤户可以越过其本身权限向服务器上传可执⾏的动态脚本⽂件。如果过滤不严格,恶意⽤户利⽤⽂件上传漏洞,上传 有害的可以执⾏脚本⽂件到服务器中, 可以获取服务器的权限,或进⼀步危害服务器。

这个恶意脚本文件,又被称为webshell。

文件上传的过程

客户端

选择发送的⽂件->服务器接收->⽹站程序判断->临时⽂件->移动到指定的路径;

服务器

接收的资源程序

文件上传绕过技术

环境准备

安装2018的phpstudy

将upload-labs文件夹添加到phpstudy下载文件夹下面的\PHPTutorial\WWW之中

借助现有的rsec文件夹中的文件,作为上传的文件

如下图,启动phpstudy
在这里插入图片描述

进入http://localhost/upload-labs/网址,如下图示。
在这里插入图片描述

Pass-01 绕过前端 js 检测上传

原理

在⽂件上传时,⽤户选择⽂件时,或者提交时,有些⽹站会对前端⽂件名进⾏验证,⼀般检测后缀名,是否为上传的格式。如果上传的格式不对,则弹出提示⽂字。此时数据包并没有提交到服务器,只是在客户端通过 js ⽂件进⾏校验,验证不通过则不会提交到服务器进⾏处理。

把恶意⽂件改成 js 允许上传的⽂件后缀,如 jpg、gif、png 等,再通过抓包⼯具(BurpSuite)抓取post 的数据包, 把后缀名改成可执⾏的脚本后缀如 php 、asp、jsp、net 等。即可绕过上传。

操作

借助现有的rsec文件夹中的文件,作为上传的文件。

BurpSuite关闭拦截请求,点击“Open Browser”按钮。使用打开的浏览器。进入http://localhost/upload-labs/网址。

在这里插入图片描述

点击Pass-01,选择一个rsec文件夹下面的一个文件。

在这里插入图片描述

开启拦截请求

在这里插入图片描述

点击上传文件,拦截到的信息如下图所示。
在这里插入图片描述

将rsec.jpg改为rsec.php
在这里插入图片描述

点击发送,直到没有代码显示。发送按钮见下图所示。然后关闭拦截请求。

在这里插入图片描述

回到浏览器。
在这里插入图片描述

右键点击打开图片,可以看到新页面如下图所示。

在这里插入图片描述

成功绕过检测。

Pass-02 绕过 contnet-type 检测上传

原理

有些上传模块,会对 http 的类型头进⾏检测,如果是图⽚类型,允许上传⽂件到服务器,否则返回上传失败。因为服务端是通过 content-type 判断类型,content-type 在客户端可被修改。则此⽂件上传也有可能被绕过的⻛险。

操作

类似于Pass-01。网站中点击Pass-02。选择要上传的文件(phpinfo.php)之后,使用BurpSuite开启拦截请求,点击上传拦截到的部分截图如下图所示。

在这里插入图片描述

修改Content-Type如下图所示。

在这里插入图片描述

操作类似Pass-01(点击发送,直到没有代码显示。发送按钮见下图所示。然后关闭拦截请求。)

右键点击上传的图片,选择使用新标签打开图片。跳转到新页面,成功绕过检测。

Pass-03 绕过⿊名单上传

原理

上传模块,有时候会写成⿊名单限制,在上传⽂件的时获取后缀名,再把后缀名与程序中⿊名单进⾏检测, 如果后缀名在⿊名单的列表内,⽂件将禁⽌⽂件上传。

操作

在不同的中间件中有特殊的情况,如果在 apache 可以开启 application/x-httpd-php 在AddType application/x-httpd-php .php .phtml .php3 后缀名为 phtml 、php3 均被解析成php 有的 apache 版本默认就会开启。上传⽬标中间件可⽀持的环境的语⾔脚本即可,如.phtml、php3。

点击phpstudy界面的其他选项菜单,打开配置文件->点开httpd-conf

在这里插入图片描述

将如下图选中行取消注释。AddType 指令的作⽤是在给定的⽂件扩展名与特定的内容类型之间建⽴映射。AddType指令在给定的⽂件扩展名与特定的内容类型之间建⽴映射关系。如下图所示,将.phtml映射为.php。

在这里插入图片描述

在这里插入图片描述

类似Pass-01拦截请求。并且修改后缀为.phtml。

在这里插入图片描述

成功绕过黑名单检测。如下图所示。

在这里插入图片描述

Pass-04 htaccess重写解析绕过上传

原理

在 htaccess ⾥写⼊ SetHandler application/x-httpd-php 则可以⽂件重写成 php ⽂件。要 htaccess 的规则⽣效 则需要在 apache 开启 rewrite 重写模块,因为 apache 是多数都开启这个模块,所以规则⼀般都⽣效。

操作

点击phpstudy界面的其他选项菜单,打开配置文件->点开httpd-conf。如下图所示取消注释。

在这里插入图片描述

如下图所示,选择文件.htaccess。

在这里插入图片描述

上传之后结果如下图所示。

在这里插入图片描述

Pass-05 ⼤⼩写绕过上传

原理

有的上传模块,后缀名采⽤⿊名单判断,但是没有对后缀名的⼤⼩写进⾏严格判断,导致可以更改后缀⼤⼩ 写可以被绕过。如 PHP、 Php、 phP、pHp。

操作

选择文件如下图所示。

![[P5O1.png]]

上传rsec5.jpg抓包后修改⽂件名为 rsec5.PhP,如下图所示。

![[P5O2.png]]

新标签打开图片如下图所示。

![[P5O3.png]]

Pass-06 空格绕过上传攻击

原理

某些操作系统,如Windows,在处理文件名时会自动去除文件名末尾的空格或点号。攻击者可以上传一个文件名以空格结尾的文件,如shell.php (注意文件名末尾有一个空格),服务器可能会去除这个空格,从而将文件解析为.php文件,允许执行其中的脚本。

操作

选择rsec6.jpg文件。

在这里插入图片描述

上传rsec6.jpg,抓包在后缀名后添加空格。

在这里插入图片描述

绕过检测如下图所示。

在这里插入图片描述

Pass-07 利⽤windows系统特征绕过上传

原理

在 windows 中⽂件后缀名. 系统会⾃动忽略.所以 shell.php. 像 shell.php 的效果⼀样。所以可以在⽂件名后⾯加上.绕过。

操作

选择上传文件。

在这里插入图片描述

在拦截到的数据中修改如下,在文件名后面加上"." 。

在这里插入图片描述

成功绕过检测结果如下图所示。

在这里插入图片描述

Pass-08 NTFS 交换数据流::$DATA 绕过上传

原理

如果后缀名没有对::$DATA 进⾏判断,利⽤ windows 系统 NTFS 特征可以绕过上传。

操作

选择上传文件。

在这里插入图片描述

在拦截到的数据中修改如下 。

在这里插入图片描述

右键图片打开新标签是无法访问的。因为无法解析::$DATA

在这里插入图片描述

网址中去掉::$DATA,就可以访问网页了。

在这里插入图片描述

Pass-09 嵌套绕过.空格.

原理

发现⽂件保存时候⽤我们提供的⽂件名,然后过滤逻辑是先过滤.然后过滤空格,name我们.空格.进⾏绕过。

操作

选择上传文件。

在这里插入图片描述

在拦截到的数据中修改如下 。

在这里插入图片描述

成功绕过检测结果如下图所示。

在这里插入图片描述

Pass-10 双写后缀名绕过上传

原理

在上传模块,有的代码会把⿊名单的后缀名替换成空,例如 a.php 会把 php 替换成空,但是可以使⽤双写绕过例如 asaspp,pphphp,即可绕过上传。

操作

选择上传文件。

在这里插入图片描述

在拦截到的数据中修改如下 。

在这里插入图片描述

成功绕过检测结果如下图所示。

在这里插入图片描述

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LagomIsBest

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值