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

news2025/1/17 6:02:10

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.coloradmin.cn/o/2214447.html

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

相关文章

接口中的静态常量在项目中的使用,以及固长列表和变长列表

先来看一段代码 public interface WrapIgnoreList {List<String> KNIFE4J Arrays.asList("/doc.html","/swagger-resources","/swagger-resources/configuration","/v3/api-docs","/v2/api-docs","/webjars/**…

ApplicationContext获取对象时注解丢失问题及 Arthas 验证方法

引言 在使用 Spring 框架时遇到的一个常见问题&#xff1a;通过 ApplicationContext 获取到的对象无法获取到注解。 本文的目的&#xff1a;探讨这个问题的原因&#xff0c;并展示如何使用 Arthas 工具来验证和解决问题。 问题描述 描述具体的问题场景&#xff1a;通过 Appli…

MySQL—关于数据库的CRUD—(增删改查)

文章目录 关于数据库的使用&#xff1a;1. 数据库的背景知识&#xff1a;2. MYSQL数据库软件的使用&#xff08;MYSQL安装的问题在另一篇博客中讲解&#xff09;。&#xff08;1&#xff09;启动MYSQL数据库软件&#xff08;2&#xff09;开始使用数据库程序&#xff1a;1&…

【微信小程序_13_页面配置与网络数据请】

摘要:本文介绍了微信小程序的页面配置与网络数据请求。页面配置文件可对单个页面进行个性化设置,与全局配置冲突时以页面配置为准。网络数据请求有严格限制,包括只能用 HTTPS 接口并添加到信任列表。可通过wx.request()发起 GET 和 POST 请求,能在页面加载时自动请求数据。…

机器学习-决策树详解

决策树 决策树简介 学习目标 1.理解决策树算法的基本思想 2.知道构建决策树的步骤 【理解】决策树例子 决策树算法是一种监督学习算法&#xff0c;英文是Decision tree。 决策树思想的来源非常朴素&#xff0c;试想每个人的大脑都有类似于if-else这样的逻辑判断&#xff…

使用 python 下载 bilibili 视频

本文想要达成的目标为&#xff1a;运行 python 代码之后&#xff0c;在终端输入视频链接&#xff0c;可自动下载高清 1080P 视频并保存到相应文件夹。 具体可分为两大步&#xff1a;首先&#xff0c;使用浏览器开发者工具 F12 获取请求链接相关信息&#xff08;根据 api 接口下…

Java多线程--实现跑马小游戏

线程的实现方式 继承Thread类&#xff1a;void run()方法没有返回值&#xff0c;无法抛异常实现Runnable接口&#xff1a;void run()方法没有返回值&#xff0c;无法抛异常实现Callable接口&#xff1a;V call() throws Exception 返回结果&#xff0c;能够抛异常 实现Callab…

分类预测|基于鹦鹉优化宽度神经网络的数据分类预测Matlab程序 PO-BLS多特征输入多类别输出

分类预测|基于鹦鹉优化宽度神经网络的数据分类预测Matlab程序 PO-BLS多特征输入多类别输出 文章目录 前言分类预测|基于鹦鹉优化宽度神经网络的数据分类预测Matlab程序 PO-BLS多特征输入多类别输出 一、PO-BLS模型PO-BLS&#xff1a;鹦鹉优化宽度神经网络分类预测原理1. 宽度神…

06DSP学习-利用syscfg配置DAC

在做实验的过程中&#xff0c;有些变量(例如逆变器的电压相位、计算过程中的数字量)是没有办法通过示波器观察的&#xff0c;因此需要将数字量转换为模拟量&#xff0c;一般转换成电压。 DSP有三个片上DAC&#xff0c;本篇博客学习如何使用syscfg配置DAC F28379D DAC介绍 TM…

【opencv】以A4纸为参照物测量物体尺寸(包含:偏移纠正,轮廓检测,绘制轮廓函数)

文章目录 测试结果原图python代码ObjectMeasuremetn.pyutils.py测试结果 原图 python代码 ObjectMeasuremetn.py import cv2 import numpy as np import utilswebcam = False path = ../da

记录一次hiveserver2卡死(假死)问题

问题描述 给开发人员开通了个账号&#xff0c;连接hive进行查询&#xff0c;后来发现&#xff0c;hive服务有时候会卡死&#xff0c;查询不了&#xff0c;连不上&#xff08;所有账号/客户端都连不上hive&#xff09;&#xff0c;但在chd里面看监控&#xff0c;服务器资源状态…

SpringBoot 之 配置 RestTemplate + 跳过https 验证

上截图 目录文件结构 在配置文件下创建下面两个文件 文件内容 HttpsClientHttpRequestFactory.java package org.fri.config;import org.apache.http.ssl.SSLContexts; import org.apache.http.ssl.TrustStrategy; import org.springframework.context.annotation.Configur…

用自己的数据集复现YOLOv5

yolov5已经出了很多版本了&#xff0c;这里我以目前最新的版本为例&#xff0c;先在官网下载源码&#xff1a;GitHub - ultralytics/yolov5: YOLOv5 &#x1f680; in PyTorch > ONNX > CoreML > TFLite 然后下载预训练模型&#xff0c;需要哪个就点击哪个模型就行&am…

JavaSE——String类详解

目录 一、String类简介 二、关于字符串拼接的号 三、StringJoiner类——通过连接符拼接字符串 四、String类常用方法详解 五、instanceof关键字 一、String类简介 String是被final修饰的类&#xff0c;不能被继承&#xff0c;因此不能使用匿名内部类。String是一个常量&a…

leetocode二叉树(六)-翻转二叉树

题目 226.翻转二叉树 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。、 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1]示例 2&#xff1a; 输入&#xff1a;root [2,1,3] 输出&#x…

【STM32项目】基于stm32四足跳舞机器人设计与实现(完整工程资料源码)

目录 前言 一、设计目的&#xff1a; 1.1 设计背景 1.2 设计意义 1.3 设计功能 二、硬件部分 2.1 sg90舵机&#xff08;8个&#xff09; 2.2 stm32f103c8t6&#xff08;1个&#xff09; 2.3 OLED显示屏&#xff08;1个&#xff09; 2.4 HC-05蓝牙模块&#xff08;1个&#xff…

C语言malloc超级详细用法和calloc 扩展

前提 在C语言中&#xff0c;malloc&#xff08;内存分配&#xff09;用于动态分配内存。它是标准库中的一部分&#xff0c;包含在 <stdlib.h> 头文件中。使用 malloc 可以在运行时请求所需的内存空间&#xff0c;而不是在编译时就确定内存大小。 语法 在cplusplus中mall…

LeetCode岛屿数量

题目描述 给你一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。 岛屿总是被水包围&#xff0c;并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外&#xff0c;你可以假设该网…

Elasticsearch生产应用(进阶版),不知道怎么提升生产ES集群性能,看这篇就可以了

这里借助kibana进行修改相应的配置 elasticsearch集群的部署&#xff0c;详情请看上一篇文章&#xff1a; Elasticsearch最新版快速入门看这个就可以了-CSDN博客 基础ES集群运维篇可以查看 Elasticsearch 生产应用&#xff08;实用版&#xff09;&#xff0c;知晓这些&…

“探索Adobe Photoshop 2024:订阅方案、成本效益分析及在线替代品“

设计师们对Adobe Photoshop这款业界领先的图像编辑软件肯定不会陌生。如果你正考虑加入Photoshop的用户行列&#xff0c;可能会对其价格感到好奇。Photoshop的价值在于其强大的功能&#xff0c;而它的价格也反映了这一点。下面&#xff0c;我们就来详细了解一下Adobe Photoshop…