IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 关于文件上传漏洞的二三事 -> 正文阅读

[PHP知识库]关于文件上传漏洞的二三事

目录

什么是文件上传漏洞?

漏洞怎么产生?

常见利用方式

前端/客户端检测

服务器端检测

文件内容检测

……

如何防御


什么是文件上传漏洞?

Web通常都具备上传功能。卖家上传花里胡哨的图片,你在能在购物网站上看到琳琅满目的商品,从而被诱惑购买。你觉得你的头像不够非主流,所以你才精心挑选一张霸气侧漏的图片来作为你的头像。文件上传功能已经成为了网上冲浪的一部分,但是稍有不慎就会产生难以挽回的损失······

程序员在写代码时考虑不够充分或是过于信任客户,对上传功能的控制不足或处理缺陷,让不法用户可以越过其本身权限向服务器上传可执行的脚本文件。比如木马,病毒,webshell等等。不乏用户将恶意代码植入服务器中后,在利用一些工具进行连接,以达到其不可告人的目的。

webshell是以asp,php,jsp等网页文件形式存在的一种命令执行环境,可以理解为网页后门

漏洞怎么产生?

服务器配置不当

对上传文件的限制不足

上传文件的限制被绕过

文件路径截断

常见利用方式

使用pikachu靶场进行学习研究,操作均在虚拟环境中完成

前端/客户端检测

可以查看页面源代码,得知检测在前端

那么有什么意义呢?

按照正常操作,我们必须上传一张图片

先写一个php文件,其中包含一句话木马<?php @eval($_POST['cmd']);?>

然后将该文件上传,于是我们失败了

但是因为是前端检查文件类型,所以可以尝试去绕过前端的检查,在此可以修改前端代码,也可以按照下面的方法

没有关系,我们可以先将其改名为1.jpg,绕过前端检查后,在burpsuite中修改其后缀,将filename的1.jpg改为1.php即可

?页面提示上传成功,并且提示了上传路径

然后用菜刀进行连接即可

服务器端检测

这次检查的是mime类型,我们直接上传一个php文件,然后抓包

只需要将content-type更改为 image/jpg 即可上传成功

MIME 是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问时,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio、图象image等,后面定义具体的种类。

这一关就是检查MIME的类型来判断上传文件是否合法。

因为我们这次上传的文件代码内容为 phpinfo(),利用该代码可以查看php信息

尝试访问该链接

文件内容检测

打开网页,点击提示后,提示让我们先了解 getimagesize,那就去了解呗

得知该函数可以测定图像文件的大小并返回图像的尺寸以及文件类型及图片高度与宽度,也就是说这个函数会通过读取文件头,返回图片的长、宽等信息,如果没有相关的图片文件头,函数会报错。

那我们可以在代码前添加一个图片的头,比如

也可以使用图片木马,上传成功后利用文件包含漏洞执行代码

我这一关有问题,故不做演示

……

相关绕过方法还有很多,在此只是简单的举了几个例子,其他的可以参考upload-labs相关文章。

如何防御

每种漏洞的防御都离不开开发者的安全意识,开发者要时刻以用户不可信的态度去编写代码,最大可能的限制漏洞的产生一面,才能避免造成巨大的损失。

对文件上传漏洞来说,最好能在客户端和服务器端对用户上传的文件名和文件路径等项目分别进行严格的检查。客户端的检查虽然可以借助工具绕过,但是这也可以阻挡一些基本的试探。服务器端的检查尽可能使用白名单过滤的方法,这样能防止大小写等方式的绕过,同时还需对%00截断符进行检测,对HTTP包头的content-type也和上传文件的大小也需要进行检查。

在运行阶段运维人员要时刻注意观察日志,并且经常使用工具对web服务器进行扫描,对可能的攻击行为早做分析,早做处理。

over!!

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-11-11 12:31:11  更:2021-11-11 12:31:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/14 14:46:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码