漏洞复现——Apache HTTPD多后缀解析漏洞

本文揭示了Apache Httpd服务器的一个文件解析漏洞,利用该漏洞,攻击者可以通过上传包含特定后缀的文件来绕过白名单限制,使文件被解析为PHP文件执行。此漏洞与Apache和PHP版本无关,主要由用户配置不当引起。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

漏洞原理:Apache Httpd支持一个文件拥有多个后缀,不同的后缀执行不同的命令,也就是说当我们上传的文件中只要后缀名含有php,该文件就可以被解析成php文件,利用Apache Httpd这个特性,我们就可以绕过上传文件的白名单。

漏洞版本:该漏洞和Apache和PHP版本无关,属于用户配置不当造成的解析漏洞

复现步骤:

正常上传文件,会返回文件上格式不支持

将文件后缀改为如下图,再上传

成功上传,现在可以去查看上传的文件:

 

 

 

转载于:https://www.cnblogs.com/xiaoqiyue/p/10355400.html

<think>我们正在处理用户关于Apache HTTPD后缀解析漏洞的查询。根据用户的要求,我们需要提供漏洞的详情、可能的利用方式以及修复方法。同时,我们需要参考提供的引用内容,并确保回答结构清晰、可靠。 根据引用[1]和引用[2]: - 漏洞原因:Apache HTTPD服务器在解析文件时,允许一个文件有后缀(以点分割)。它会从最右边开始识别后缀名,如果遇到无法识别的后缀,则向左继续识别。如果配置中使用了`AddHandler`指令(例如`AddHandler application/x-httpd-php .php`)来处理PHP文件,那么只要文件名中包含`.php`后缀(即使它并不是最后一个后缀),该文件就会被当作PHP文件解析。 - 漏洞影响:攻击者可以上传一个看似非PHP的文件(例如`filename.php.jpg`),但由于其中包含`.php`后缀Apache会将其作为PHP文件解析并执行其中的恶意代码。 - 漏洞与版本无关,属于配置不当导致。 修复方法: 1. 修改配置,避免使用`AddHandler`指令,而是使用`FilesMatch`指令来精确匹配文件类型。例如: ```apache <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch> ``` 这样配置后,只有以`.php`结尾的文件才会被当作PHP文件解析。 2. 禁止上传目录执行脚本:在文件上传目录的配置中,移除PHP处理程序,确保上传目录下的文件不会被当作脚本执行。例如: ```apache <Directory "/var/www/upload"> php_flag engine off # 或者对于Apache 2.4,可以使用: # SetHandler None </Directory> ``` 3. 清理文件后缀:在应用程序中,对上传的文件名进行严格检查,确保只有一个后缀且是允许的类型。 4. 使用`mod_rewrite`阻止恶意请求:可以添加规则来阻止包含后缀的请求,特别是包含`.php`的请求。 5. 确保其他后缀不被错误解析:检查服务器配置,确保没有其他非必要后缀被配置为可执行脚本。 相关问题: 1. 如何验证Apache服务器是否存在后缀解析漏洞? 2. 除了后缀解析漏洞Apache HTTPD还有哪些常见的安全漏洞? 3. 如何配置Apache服务器以提高文件上传功能的安全性? 4. 在Nginx服务器中,是否也存在类似的后缀解析漏洞?如何防范?</think>### Apache HTTPD 后缀解析漏洞详情 #### 漏洞原理 Apache HTTPD 在处理文件时存在一个特性:**允许单个文件拥有后缀名**(如 `file.php.jpg`)。解析规则如下: 1. 从**最右侧后缀开始识别**(如 `.jpg`) 2. 若无法识别则**向左依次检测**后缀名 3. 遇到可识别的后缀(如 `.php`)时,**直接按该类型解析文件**[^1][^2] **关键触发条件**: ```apache # 危险配置示例(漏洞根源) AddHandler application/x-httpd-php .php ``` 当存在此配置时,上传 `malicious.php.jpg` 文件会被解析PHP 脚本执行,因为服务器识别到 `.php` 后缀[^1]。 #### 漏洞利用方式 1. **文件上传绕过** - 攻击者上传伪装文件:`shell.php.jpg` 或 `shell.php.123` - Apache 解析时识别 `.php` 后缀,执行其中的恶意代码 - 经典攻击载荷: ```php <?php system($_GET['cmd']); ?> ``` 2. **结合其他漏洞** - 配合文件上传功能缺陷,突破白名单限制 - 通过路径拼接触发解析(如 `/uploads/user_avatar.php.jpg`) #### 修复方法 1. **修改 Apache 配置**(根本解决方案) ```apache # 替换危险的 AddHandler 指令 <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch> ``` 此配置**严格匹配以 `.php` 结尾的文件**,忽略后缀情况[^1]。 2. **限制上传目录执行权限** ```apache <Directory "/var/www/uploads"> # 禁止执行脚本 php_flag engine off Options -ExecCGI </Directory> ``` 3. **应用程序层防护** - 文件上传时**重命名文件**(如生成随机文件名) - 检查文件内容而非依赖后缀名 - 使用 MIME 类型检测(如 `finfo_file()`) 4. **补充方案** - 升级到 Apache 2.4.26+ 并启用 `AllowOverride None` - 使用 WAF 规则拦截异常后缀组合(如 `.php.`) > **注意**:该漏洞Apache/PHP 版本无关,纯属配置问题[^1]。修复后需测试 `test.php.jpg` 是否返回源码而非执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值