【文件上传漏洞08】.htaccess攻击实验(基于upload-labs-4靶场)

1 Apache配置概述

1.1 全局配置文件httpd.conf

全局配置文件主要用于配置以下功能:

  • 配置prefork模块功能;
  • 配置长连接功能;
  • 配置httpd监听的套接字;
  • 配置worker模块功能;
  • 配置DSO;
  • 配置网站根目录;
  • 配置默认主页;
  • 配置访问控制;
  • 基于IP的访问控制;
  • 用户目录;
  • 日志;
  • 设置字符集;
  • 配置路径别名;
  • 配置CGI;
  • 配置虚拟主机功能;
  • 状态页面;
  • 页面压缩;
  • 基于用户的访问控制。

1.2 分布式配置文件.htaccess

  1. 背景:当我们使用apache部署一个网站代码准备部署到网上的时候,我们手中的apache的httpd.conf大家肯定都知道。这是apache的配置文件,然而我们大多数的网站都是基于云服务器来部署的,还有就是团队协作开发的时候,我们很难直接修改公共的httpd.conf,这时 .htaccess就是httpd.conf的衍生品,它起着和httpd.conf相同的作用。
  2. 概述:.htaccess是一个纯文本文件,它里面存放着Apache服务器配置相关的指令。
  3. 地位:.htaccess是Apache服务器的分布式配置文件,
  4. 作用域:该配置文件会覆盖Apache服务器的全局配置,作用域是当前目录及其子目录。
  5. 基本作用
    • URL重写、自定义错误页面
    • MIME类型配置
    • 访问权限控制等
    • 主要体现在伪静态的应用
    • 图片防盗链
    • 自定义404错误页面
    • 阻止/允许特定IP/IP段
    • 目录浏览与主页
    • 禁止访问指定文件类型
    • 文件密码保护
  6. 如何启用:首先我们找到httpd.conf,在其中进行配置:
    1. 允许重写覆盖相关配置。查找AllowOverride并启用,设置如下图,有的版本默认开启有的不是,最好检查一下。
      在这里插入图片描述
    2. 允许在httpd.conf外重写配置。在.httpd.conf文件中中查找mod_rewrite.so,设置如下图,有的版本默认开启有的不是,最好检查一下。
      在这里插入图片描述

1.3 潜在风险

  1. 如果一个WEB应用允许上传.htaccess文件,那就意味着攻击者可以更改Apache的配置,这是十分危险的。
  2. 由于配置可以被更改,也导致了.htaccess攻击想象空间巨大。

2 实验简介

2.1 实验环境

  1. 靶场:基于WAMP环境的upload-labs靶场,搭建过程可参考文章《基于WAMP环境的upload-labs漏洞测试平台搭建过程》。
  2. 攻击机:安装BurpSuite软件。

2.2 实验前准备

按之前的方法,制作一个图片马info.gif。具体制作过程请参考《服务端文件内容检测与绕过实验+图片马制作方法

3 实验一:.htaccess生成与测试

3.1 实验目的

  1. 掌握生成无名文件.htaccess的方法;
  2. 通过修改.htaccess配置控制各种文件的执行程序。

3.2 生成不带文件名的文件

  1. 新建一个名为"a.txt"的空白文件,然后把“a.txt”后缀改成“a.htaccess”的格式。
  2. 再新建一个名为"b.txt"文件,复制下面的内容:@ren "%~f1" .*
  3. 然后把"b.txt"文件后缀改成“b.bat”文本的格式。
  4. 最后把“a.htaccess”拖到b.bat文件图标上可以去掉文件名而只保留后缀,“a.htaccess”就变了“.htaccess”。

3.3 让.png以PHP程序执行

  1. 打开.htaccess文件,输入以下内容AddType application/x-httpd-php .gif
    在这里插入图片描述
  2. 将该文件复制到靶机upload文件夹下,表示分布式配置对该文件夹及其子文件夹生效。
    在这里插入图片描述
  3. 将info.gif复制到同一文件夹中,并在真实机浏览器访问该文件,可以看到文件内代码被成功执行。
    在这里插入图片描述

3.4 含有php关键字就以PHP程序执行

  1. 打开.htaccess文件,输入以下内容AddHandler php5-script php
    在这里插入图片描述
  2. 将info.gif重命名为info.php.jpg,并在真实机浏览器访问该文件,可以看到文件内代码被成功执行。
    在这里插入图片描述

3.5 让指定文件名的文件以PHP程序执行

  1. 打开.htaccess文件,输入以下内容:
<FilesMatch "aaa">
SetHandler application/x-httpd-php
</FilesMatch>

在这里插入图片描述
2. 将info.php.jpg重命名为aaa,并在真实机浏览器访问该文件,可以看到文件内代码被成功执行。
在这里插入图片描述

4 实验二:upload-labs-4靶场

  1. 测试过程:可以先测试前端JS绕过→MIME绕过→服务端后缀名绕过→文件内容绕过等。
  2. 先上传一个.htaccess,其内容如3.5节所述。可以看到上传成功。
    在这里插入图片描述
  3. 在上传一个PHP探针文件,并将文件名修改为aaa。可以看到上传成功。
    在这里插入图片描述
  4. 右键该图片,并在新标签中打开,可以看到该文件内容被成功执行。
    在这里插入图片描述

5 总结

  1. 当存在文件上传漏洞时,只要恶意代码没有被过滤,就存在被执行的危险。
  2. 掌握修改.htaccess以改变各种文件执行程序的方法。

参考文献

  1. apache配置文件httpd.conf
  2. apache的.htaccess文件作用和相关配置
  3. 在线生成.htaccess文件链接
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值