概述
目录
- 1 Apache配置概述
- 1.1 全局配置文件httpd.conf
- 1.2 分布式配置文件.htaccess
- 1.3 潜在风险
- 2 实验简介
- 2.1 实验环境
- 2.2 前期准备
- 3 实验一:.htaccess生成与测试
- 3.1 实验目的
- 3.2 生成.htaccess文件
- 3.3 将.png文件当作PHP文件执行
- 3.4 文件名中含php关键字就以PHP程序执行
- 3.5 让指定文件名的文件以PHP程序执行
- 4 实例:upload-labs-4靶场
- 5 总结
- 参考文章
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服务器的分布式配置文件,是一个纯文本文件,它里面存放着Apache服务器配置相关的指令。该配置文件会覆盖Apache服务器的全局配置,作用域是当前目录及其子目录。
基本作用
- URL重写、自定义错误页面
- MIME类型配置
- 访问权限控制等
- 主要体现在伪静态的应用
- 图片防盗链
- 自定义404错误页面
- 阻止/允许特定IP/IP段
- 目录浏览与主页
- 禁止访问指定文件类型
- 文件密码保护
启用.htaccess文件的条件
- 1)httpd.conf文件允许重写覆盖相关配置。查找AllowOverride并启用,设置如下图,有的版本默认开启有的不是,最好检查一下。
- 2)允许在httpd.conf外重写配置。在.httpd.conf文件中中查找mod_rewrite.so,设置如下图,有的版本默认开启有的不是,最好检查一下。
1.3 潜在风险
如果一个WEB应用允许上传.htaccess文件,那就意味着攻击者可以更改Apache的配置,这是十分危险的。
由于配置可以被更改,也导致了.htaccess攻击想象空间巨大。例如:
- 1)将.png文件当作PHP文件执行
- 2)文件名中含php关键字就以PHP程序执行
- 3)让指定文件名的文件以PHP程序执行
2 实验简介
2.1 实验环境
靶场:基于WAMP环境的upload-labs靶场,搭建过程可参考文章《【环境搭建-03】基于WAMP环境的upload-labs漏洞靶场的搭建》。
攻击机:kali虚拟机,自带BurpSuite软件。
靶场与攻击机处于同一个局域网下。
2.2 前期准备
准备好一个文件,该文件可能是木马,也可能是其他任意文件,本实验以php探针作为测试文件,来验证是否存在文件上传漏洞以及绕过漏洞检测的方法。
文件名为:phpinfo.php,文件内容:<?php phpinfo();?>。
3 实验一:.htaccess生成与测试
3.1 实验目的
掌握生成无名文件.htaccess的方法;
通过修改.htaccess配置控制各种文件的执行程序。
3.2 生成.htaccess文件
(1)新建一个名为"新建文本文档.txt"的空白文件
(2)打开该新建文本文档,复制下面的内容:AddType application/x-httpd-php .png
。
(3)点击文件→另存为→选择文件类型→设文件名.htaccess。
3.3 将.png文件当作PHP文件执行
(1)生成.htaccess文件。在网站根目录C:phpStudyPHPTutorialWWW下新建文件夹Upload,在Upload文件夹下按3.2节生成.htaccess文件,并输入以下内容AddType application/x-httpd-php .png
。注意,.png也可以为.gif之类的图片文件
(2)生成info.gif文件。在C:phpStudyPHPTutorialWWWUpload目录下新建info.php文件,文件内容为<?php phpinfo(); ?>
。之后将info.php改为info.gif
(3)访问并验证。在kali虚拟机中用浏览器访问该文件,可以看到文件内代码被成功执行。
3.4 文件名中含php关键字就以PHP程序执行
(1)在C:phpStudyPHPTutorialWWWUpload目录下,打开.htaccess文件,输入以下内容
AddHandler php5-script php
(2)将info.png复制后重命名为info.php.jpg
(3)访问并验证。在kali虚拟机中用浏览器访问该文件,可以看到文件内代码被成功执行。
3.5 让指定文件名的文件以PHP程序执行
(1)在C:phpStudyPHPTutorialWWWUpload目录下,打开.htaccess文件,输入以下内容:
<FilesMatch "zzz">
SetHandler application/x-httpd-php
</FilesMatch>
(2) 将info.php复制后重命名为zzz,
(3)访问并验证。在kali虚拟机中用浏览器访问该文件,可以看到文件内代码被成功执行。
4 实例:upload-labs-4靶场
测试过程:可以先测试前端JS绕过→MIME绕过→服务端后缀名绕过→文件内容绕过等。
(1)上传.htaccess文件。kali虚拟机上打开其火狐浏览器,输入网址http://172.16.1.1/upload-labs/
访问upload-labs,并点击进入第4关。点击浏览选择.htaccess文件,该文件内容如下。点击上传,可见该文件上传成功。
<FilesMatch "zzz">
SetHandler application/x-httpd-php
</FilesMatch>
(2)上传zzz探针文件。上传一个PHP探针文件,并将文件名修改为zzz。可以看到上传成功。
(3)右键该图片,并在新标签中打开,可以看到该文件内容被成功执行。
5 总结
(1)当存在文件上传漏洞时,只要恶意代码没有被过滤,就存在被执行的危险。
(2)掌握修改.htaccess以改变各种文件执行程序的方法。
(3).htaccess文件主要是为了让上传的文件可在服务器执行。之前的00截断也是为了让上传的文件可在服务器执行。
参考文章
[1] 《apache配置文件httpd.conf》
[2] 《apache的.htaccess文件作用和相关配置》
[3] 在线生成.htaccess文件链接
最后
以上就是害羞悟空为你收集整理的【文件上传漏洞-06】分布式配置文件攻击实验—以upload-labs-4为例1 Apache配置概述2 实验简介3 实验一:.htaccess生成与测试4 实例:upload-labs-4靶场5 总结参考文章的全部内容,希望文章能够帮你解决【文件上传漏洞-06】分布式配置文件攻击实验—以upload-labs-4为例1 Apache配置概述2 实验简介3 实验一:.htaccess生成与测试4 实例:upload-labs-4靶场5 总结参考文章所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复