关卡简介
在upload-lab的第四关,挑战者需要绕过文件上传的限制,成功上传一个能在服务器上执行的恶意文件。该关卡的目标是利用 .htaccess 文件进行绕过,这是一个常见且强大的文件上传漏洞利用方法。
什么是 .htaccess 文件?
.htaccess 文件是 Apache HTTP 服务器上的一个配置文件,它允许管理员在目录级别进行配置。通过 .htaccess 文件,用户可以实现URL重写、目录访问控制、MIME 类型设置等功能。在文件上传漏洞利用中,.htaccess 文件常用于修改服务器对文件的处理方式,从而执行恶意代码。
主要功能
- URL 重定向:将一个 URL 重定向到另一个 URL,常用于网站迁移或页面重命名后保持链接的有效性。
- URL 重写:使用 mod_rewrite 模块将复杂的URL转换为用户友好的URL。
- 访问控制:基于 IP 地址或其他条件限制对某些资源的访问。
- 密码保护:为目录设置密码保护,要求用户输入用户名和密码才能访问。
- 设置 MIME 类型:为特定文件类型设置 MIME 类型,以便浏览器正确处理文件。
- 文件访问控制:禁止访问特定文件或目录,比如保护 .htaccess 文件本身不被访问。
- 压缩:启用内容压缩,减少传输的数据量,提高网页加载速度。
- 缓存控制:设置浏览器缓存策略,优化网站性能。
解题思路
本题没有过滤.htaccess文件,可以通过上传.htaccess文件来为一个webshell文件更改后缀,来帮助webshell进行绕过。
解题步骤
(1) 准备 .htaccess 文件:
由于服务器可能限制了常用的脚本文件,我们可以通过上传一个 .htaccess 文件来改变服务器对文件的处理方式。创建一个名为 .htaccess 的文件,内容如下:
<FilesMatch "1.png">
setHandler application/x-httpd-php
</FilesMatch>
这段配置的作用是将 1.png 文件解析为 PHP 代码。
(2) 上传.htaccess文件 :
在Pass04关卡的上传页面,我们先上传 .htaccess 文件 。
成功上传了.htaccess文件
(3) 准备恶意文件并上传
我们需要准备一个恶意的 PHP 文件。创建一个名为 1.png 的文件,该文件名要与上一步的一一对应。内容如下:
<?php phpinfo() ?>
把1.png文件上传到服务器中,如下图:
成功把webshell上传了
(4) 访问并执行恶意代码:
上传完成后,访问上传文件所在的 URL。如果一切顺利,你会看到页面如下图显示:
总结
upload-lab 第四关展示了通过 .htaccess 文件绕过文件上传限制的攻击方法。这种攻击利用了服务器配置的灵活性,通过巧妙地修改文件解析方式,成功实现了恶意代码的执行。通过理解和实践这种攻击方式,安全研究人员和开发者可以更好地防御类似的文件上传漏洞,提升系统的安全性。
推荐阅读: