首页 > 编程语言 >【PHP代码审计】文件上传

【PHP代码审计】文件上传

时间:2024-10-08 14:02:37浏览次数:9  
标签:审计 文件 函数 漏洞 字符串 PHP 上传 FILES

一、认识上传漏洞

文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力,这种攻击方式是最直接和有效的文件上传本身是没问题的,有问题的是文件上传后,服务器怎么处理,解析文件。通过服务器的处理逻辑做的不够安全,则会导致上传漏洞。

二、上传漏洞的条件

1.文件可上传
2.知道上传文件的路径
3.上传的文件可被解析

三、上传漏洞的相关知识

$ FILES  //全局数组
$_FILES['myFile"]['name'] //显示客户端文件的原名称
$_FILES['myFile’]['type'] //文件的 MIME 类型,例如"image/gif"
$_FILES['myFile]['size"] //已上传文件的大小,单位为字节
$_FILES['myFile"][tmp_name"] //储存的临时文件名,一般是系统默认
$_FILES['myFile]['error'] //该文件上传相关的错误代码

四、相关函数

move_uploaded_file(file,newloc) //函数将上传的文件移动到新位置
strtolower() //函数把字符串转换为小写。
trim() //函数移除字符串两侧的空白字符或其他预定义字符。
strrchr() //函数查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。
strireplace() //函数替换字符串中的一些字符(不区分大小写)。
getimagesize() //函数用于获取图像大小及相关信息,成功返回一个数组,失败则返回FALSE 并产生一条E WARNING 级的错误信息。
exif_imagetype() //读取一个图像的第一个字节并检查其签名substr0 函数返回字符串的一部分。
fopen() //函数打开文件或者 URL。
fread() //函数读取文件(可安全用于二进制文件)
fwrite()) //函数写入文件(可安全用于二进制文件)0

五、判断上传漏洞的类型

六、上传漏洞的检测方式

客户端校验:

使用JS来判断后缀名

服务端校验:

1.对数据包的MIME进行检查

2.后缀名黑名单校验

3.后缀名白名单校验

4.文件头检查

5.二次渲染

6.条件竞争

七、代码分析

具体代码可以去看upload-libs

标签:审计,文件,函数,漏洞,字符串,PHP,上传,FILES
From: https://www.cnblogs.com/o-O-oO/p/18451497

相关文章

  • 【PHP代码审计】命令执行
    RemoteCodeExecute远程代码执行原理:应用程序在调用一些能够将字符串转换为代码的函数(例如php中的eval中),没有考虑用户是否控制这个字符串,将造成代码执行漏洞。函数eval()//把字符串作为PHP代码执行assert()//检查一个断言是否为FALSE,可用来执行代码preg_replace()//......
  • 【PHP代码审计】文件包含漏洞
    文件包含原理文件包含是因为服务器端某些程序对用户提交参数过滤不当造成的该程序一般具有以读取方式输出文件内容或者下载文件,前者也可以叫做任意文件读取,两者本质上是一样的。通常在以下情况下存在该漏洞。文件包含函数include()include_once()require()require_once()fo......
  • 【PHP代码审计】危险函数
    什么是危险函数?函数设计出来就是让人使用的,之所以危险,是因为其功能过于强大,开发人员特别是刚从业的人员很少会完整阅读完整个文档,再或者是没有意识到当给这些函数传递一些非常规的,外部可控的参数会带来什么影响。$GET//数组,存放着所有通过URL参数传递的数$POST//数组,......
  • 【PHP代码审计】过滤函数
    一、SQL过滤函数addslashes()stripslashes()addcslashes()stripcslashes()mysql_escape_string()mysql_real_escape_string()PHP魔术引号Addslashes()返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号()、双引号(”)、反斜线()......
  • phpvulhunter工具:静态 php 代码审计
    phpvulhunter是一款PHP源码自动化审计工具,通过这个工具,可以对一些开源CMS进行自动化的代码审计,并生成漏洞报告。1、安装首先从github上进行获取:gitclonehttps://github.com/OneSourceCat/phpvulhunter2、下载完成后,将工程目录放置于WAMP等PHP-Web运行环境中即可。访......
  • FTP连接池与多线程上传下载算法实现(C语言)
    FTP连接池与多线程上传下载算法实现(C语言)设计思路伪代码示例C代码示例为了避免多线程环境下FTP连接池在故障重连时导致的竞争条件和coredump问题,我们需要设计一个精细的连接池管理系统,确保在连接重连时,其他线程不会尝试使用该连接。以下是一个简化的设计思路和示......
  • PhpStrom2024.1永久激活及激活过程中出现的问题
    PhpStrom2024.1及激活工具下载激活工具:https://www.alipan.com/s/Aj5EEMxgLZCPhpStrom:https://www.alipan.com/s/cx69krtGXaw PhpStrom安装与激活1、下载并根据提示安装PhpStrom2、下载激活工具并将文件夹放在常用位置(文件夹名称与文件夹路径不可有中文)3、打开scripts文件......
  • Linux--审计工具Audit
    一、简介Linux审计系统提供了一种方式来跟踪系统上与安全相关的信息,根据预配置的规则,审计会生成日志条目,来尽可能多地记录系统上所发生的事件的相关信息。对于关键任务环境而言至关重要,可用来确定安全策略的违反者及其所执行的操作,便于在发生网络入侵等安全事件时,能够为追踪溯源......
  • php网站登录密码忘记了的三种解决办法
    如果你忘记了PHP网站的登录密码,可以通过以下三种方法来解决这个问题:1.通过数据库直接修改密码步骤如下:登录数据库:使用命令行工具(如 mysql 或 phpMyAdmin)登录到数据库。例如,通过命令行登录MySQL数据库:mysql-uroot-p选择对应的数据库:选择包含用户表......
  • phpinfo函数的作用
    phpinfo() 函数是PHP中的一个内置函数,主要用于显示关于PHP配置的各种信息。这些信息包括PHP版本、已加载的扩展、环境变量、HTTP头信息、目录路径设置等。这对于调试和了解当前PHP运行环境非常有用。作用包括:显示PHP的版本号。列出所有已启用的扩展及其版本信息......