文件上传-后端验证

以下全以PHP代码为例

1、Content-Type(MIME检测)

原理:

数据包会根据文件后缀来确定文件类型(Content-Type)

网站服务器(后端)通过Content-Type来验证文件是否合法

php 复制代码
<?php
if($_FILES['a']['type'] != "image/gif")
{
    die("Sorry,we only allow uploading GIF images");
}    
?>

绕过:

修改Content-Type为允许的格式(常见image/png)

2、文件后缀

原理:

后端代码通过文件后缀来验证文件是否合法

绕过:

  • 大小写(有些情况无法解析.Php)

  • php5、php7(有些情况无法解析.Php)

  • .htaccess(限于Apache,Nginx很少支持)

  • .user.ini(PHP环境均可以)

    目标目录下index.php调用了.user.ini

    上传.user.ini(auto_prepend_file=1.png)

    上传允许的文件格式1.png(1.png中存在后门代码)

3、文件内容验证

**测试限制内容:**先随便输点数据(111能否上传)看是否为内容验证,依次去除一句话木马的各部分,判断限制了哪些内容。

**原理:**正则表达式匹配。

绕过:

  • 更换一句话木马写法(4种,待补充)
  • 命令变量分割( a = ' e v a ' . ' l ' ; a='eva'.'l'; a='eva'.'l';a(POST[xxx]))
  • 尝试其他语言代码(不推荐,实在没办法了再尝试)
  • 日志+UA头木马
  • 远程包含绕过(过滤点,可以使用长地址)

4、文件头

前面测试都无法上传,尝试添加文件头

**绕过:**添加合法文件头(比如GIF89A)

5、删除上传文件

  1. 什么都删除
  2. 判断后门、删除
    • 上传.user.ini直接包含远程文件

绕过:

  • 条件竞争:上传前持续访问,上传一瞬间访问执行

    执行创建新文件的代码

    执行先读取再发送到远程服务器的代码

相关推荐
chase。11 分钟前
【学习笔记】RoboForge:让文本指令“落地”到人形机器人——一个物理优化与隐式驱动的端到端框架
笔记·学习·机器人
三秋树12 分钟前
Fastjson RCE 复现 【01】1.2.24 版本利用及原理分析
安全·黑客·测试
老陈头聊SEO16 分钟前
掌握SEO基础技能,从零起步实现流量提升新突破
其他·搜索引擎·seo优化
烛衔溟17 分钟前
TypeScript 特殊类型与空值安全
安全·typescript·前端开发·空值处理
一个脚本boy19 分钟前
【troll2靶机的完整详细渗透测试过程附靶机链接】
web安全·网络安全
chase。20 分钟前
【学习笔记】从经典算法到通用神经运动规划器
笔记·学习·算法
牛奶咖啡1329 分钟前
免费笔记软件且优先本地私有化——Joplin、Obsidian
笔记·obsidian·joplin·待办事项应用程序·开源笔记应用·可私有化本地笔记应用·笔记的同步与插件安装
EasyDSS38 分钟前
企业级私有化部署视频直播点播平台EasyDSS如何构建企业远程会议安全防线
安全·音视频
dgw26486338091 小时前
深信服数据传输安全-NPN-(1)
安全
忙什么果1 小时前
transformer学习笔记1
笔记·学习·transformer