1 Apache配置概述
1.1 全局配置文件httpd.conf
全局配置文件主要用于配置以下功能:
- 配置prefork模块功能;
- 配置长连接功能;
- 配置httpd监听的套接字;
- 配置worker模块功能;
- 配置DSO;
- 配置网站根目录;
- 配置默认主页;
- 配置访问控制;
- 基于IP的访问控制;
- 用户目录;
- 日志;
- 设置字符集;
- 配置路径别名;
- 配置CGI;
- 配置虚拟主机功能;
- 状态页面;
- 页面压缩;
- 基于用户的访问控制。
1.2 分布式配置文件.htaccess
- 背景:当我们使用apache部署一个网站代码准备部署到网上的时候,我们手中的apache的httpd.conf大家肯定都知道。这是apache的配置文件,然而我们大多数的网站都是基于云服务器来部署的,还有就是团队协作开发的时候,我们很难直接修改公共的httpd.conf,这时 .htaccess就是httpd.conf的衍生品,它起着和httpd.conf相同的作用。
- 概述:.htaccess是一个纯文本文件,它里面存放着Apache服务器配置相关的指令。
- 地位:.htaccess是Apache服务器的分布式配置文件,
- 作用域:该配置文件会覆盖Apache服务器的全局配置,作用域是当前目录及其子目录。
- 基本作用
- URL重写、自定义错误页面
- MIME类型配置
- 访问权限控制等
- 主要体现在伪静态的应用
- 图片防盗链
- 自定义404错误页面
- 阻止/允许特定IP/IP段
- 目录浏览与主页
- 禁止访问指定文件类型
- 文件密码保护
- 如何启用:首先我们找到httpd.conf,在其中进行配置:
- 允许重写覆盖相关配置。查找AllowOverride并启用,设置如下图,有的版本默认开启有的不是,最好检查一下。
- 允许在httpd.conf外重写配置。在.httpd.conf文件中中查找mod_rewrite.so,设置如下图,有的版本默认开启有的不是,最好检查一下。
1.3 潜在风险
- 如果一个WEB应用允许上传.htaccess文件,那就意味着攻击者可以更改Apache的配置,这是十分危险的。
- 由于配置可以被更改,也导致了.htaccess攻击想象空间巨大。
2 实验简介
2.1 实验环境
- 靶场:基于WAMP环境的upload-labs靶场,搭建过程可参考文章《基于WAMP环境的upload-labs漏洞测试平台搭建过程》。
- 攻击机:安装BurpSuite软件。
2.2 实验前准备
按之前的方法,制作一个图片马info.gif。具体制作过程请参考《服务端文件内容检测与绕过实验+图片马制作方法》
3 实验一:.htaccess生成与测试
3.1 实验目的
- 掌握生成无名文件.htaccess的方法;
- 通过修改.htaccess配置控制各种文件的执行程序。
3.2 生成不带文件名的文件
- 新建一个名为"a.txt"的空白文件,然后把“a.txt”后缀改成“a.htaccess”的格式。
- 再新建一个名为"b.txt"文件,复制下面的内容:
@ren "%~f1" .* 。 - 然后把"b.txt"文件后缀改成“b.bat”文本的格式。
- 最后把“a.htaccess”拖到b.bat文件图标上可以去掉文件名而只保留后缀,“a.htaccess”就变了“.htaccess”。
3.3 让.png以PHP程序执行
- 打开.htaccess文件,输入以下内容
AddType application/x-httpd-php .gif - 将该文件复制到靶机upload文件夹下,表示分布式配置对该文件夹及其子文件夹生效。
- 将info.gif复制到同一文件夹中,并在真实机浏览器访问该文件,可以看到文件内代码被成功执行。
3.4 含有php关键字就以PHP程序执行
- 打开.htaccess文件,输入以下内容
AddHandler php5-script php - 将info.gif重命名为info.php.jpg,并在真实机浏览器访问该文件,可以看到文件内代码被成功执行。
3.5 让指定文件名的文件以PHP程序执行
- 打开.htaccess文件,输入以下内容:
<FilesMatch "aaa">
SetHandler application/x-httpd-php
</FilesMatch>
2. 将info.php.jpg重命名为aaa,并在真实机浏览器访问该文件,可以看到文件内代码被成功执行。
4 实验二:upload-labs-4靶场
- 测试过程:可以先测试前端JS绕过→MIME绕过→服务端后缀名绕过→文件内容绕过等。
- 先上传一个.htaccess,其内容如3.5节所述。可以看到上传成功。
- 在上传一个PHP探针文件,并将文件名修改为aaa。可以看到上传成功。
- 右键该图片,并在新标签中打开,可以看到该文件内容被成功执行。
5 总结
- 当存在文件上传漏洞时,只要恶意代码没有被过滤,就存在被执行的危险。
- 掌握修改.htaccess以改变各种文件执行程序的方法。
参考文献
- 《apache配置文件httpd.conf》
- 《apache的.htaccess文件作用和相关配置》
- 在线生成.htaccess文件链接
|