关卡简介

upload-lab的第四关,挑战者需要绕过文件上传的限制,成功上传一个能在服务器上执行的恶意文件。该关卡的目标是利用 .htaccess 文件进行绕过,这是一个常见且强大的文件上传漏洞利用方法。

什么是 .htaccess 文件?

.htaccess 文件是 Apache HTTP 服务器上的一个配置文件,它允许管理员在目录级别进行配置。通过 .htaccess 文件,用户可以实现URL重写、目录访问控制、MIME 类型设置等功能。在文件上传漏洞利用中,.htaccess 文件常用于修改服务器对文件的处理方式,从而执行恶意代码。

主要功能

  1. URL 重定向
  • 将一个 URL 重定向到另一个 URL,常用于网站迁移或页面重命名后保持链接的有效性。
  1. URL 重写
  • 使用 mod_rewrite 模块将复杂的URL转换为用户友好的URL
  1. 访问控制
  • 基于 IP 地址或其他条件限制对某些资源的访问。
  1. 密码保护
  • 为目录设置密码保护,要求用户输入用户名和密码才能访问。
  1. 设置 MIME 类型
  • 为特定文件类型设置 MIME 类型,以便浏览器正确处理文件。
  1. 文件访问控制
  • 禁止访问特定文件或目录,比如保护 .htaccess 文件本身不被访问。
  1. 压缩
  • 启用内容压缩,减少传输的数据量,提高网页加载速度。
  1. 缓存控制
  • 设置浏览器缓存策略,优化网站性能。

解题思路

本题没有过滤.htaccess文件,可以通过上传.htaccess文件来为一个webshell文件更改后缀,来帮助webshell进行绕过。

解题步骤

  1. 准备 .htaccess 文件:

由于服务器可能限制了常用的脚本文件,我们可以通过上传一个 .htaccess 文件来改变服务器对文件的处理方式。创建一个名为 .htaccess 的文件,内容如下:

<FilesMatch "1.png">
setHandler application/x-httpd-php
</FilesMatch>

这段配置的作用是将 1.png 文件解析为 PHP 代码。

  1. 上传 .htaccess文件 :

Pass04关卡的上传页面,我们先上传 .htaccess 文件 。
成功上传了.htaccess文件

  1. 准备恶意文件并上传

我们需要准备一个恶意的 PHP 文件。创建一个名为 1.png 的文件,该文件名要与上一步的一一对应。内容如下:

<?php phpinfo() ?>

1.png文件上传到服务器中,如下图:
成功把webshell上传了

  1. 访问并执行恶意代码:

上传完成后,访问上传文件所在的 URL。 如果一切顺利,你会看到页面如下图显示:

总结

upload-lab 第四关展示了通过 .htaccess 文件绕过文件上传限制的攻击方法。这种攻击利用了服务器配置的灵活性,通过巧妙地修改文件解析方式,成功实现了恶意代码的执行。通过理解和实践这种攻击方式,安全研究人员和开发者可以更好地防御类似的文件上传漏洞,提升系统的安全性。