当前位置:网站首页>【文件上传漏洞-06】分布式配置文件攻击实验—以upload-labs-4为例
【文件上传漏洞-06】分布式配置文件攻击实验—以upload-labs-4为例
2022-07-26 14:28:00 【像风一样9】
目录
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:\phpStudy\PHPTutorial\WWW下新建文件夹Upload,在Upload文件夹下按3.2节生成.htaccess文件,并输入以下内容AddType application/x-httpd-php .png。注意,.png也可以为.gif之类的图片文件
(2)生成info.gif文件。在C:\phpStudy\PHPTutorial\WWW\Upload目录下新建info.php文件,文件内容为<?php phpinfo(); ?>。之后将info.php改为info.gif

(3)访问并验证。在kali虚拟机中用浏览器访问该文件,可以看到文件内代码被成功执行。
3.4 文件名中含php关键字就以PHP程序执行
(1)在C:\phpStudy\PHPTutorial\WWW\Upload目录下,打开.htaccess文件,输入以下内容AddHandler php5-script php
(2)将info.png复制后重命名为info.php.jpg
(3)访问并验证。在kali虚拟机中用浏览器访问该文件,可以看到文件内代码被成功执行。
3.5 让指定文件名的文件以PHP程序执行
(1)在C:\phpStudy\PHPTutorial\WWW\Upload目录下,打开.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文件链接
边栏推荐
- 31. Opinion based relational pivoting forcross domain aspect term extraction reading notes
- @A thousand lines of work, ride the cloud together!
- Transc knowledge representation model
- Basic knowledge about memory chips
- C # use shift > > and operation and & to judge whether the two binary numbers have changed
- Devops system of "cloud native" kubesphere pluggable components
- 【方差分析】之matlab求解
- maya将模型导入到unity
- 【1.2.投资的收益和风险】
- Kubernetes ---- pod configuration resource quota
猜你喜欢
随机推荐
Leetcode148 sort linked list (merge method applied to merge)
Use cpolar to build a commercial website (apply for website security certificate)
智能家居行业发展,密切关注边缘计算和小程序容器技术
【干货】MySQL索引背后的数据结构及算法原理
Figure introduction to neural network core dataset
[deep learning] fully connected network
mysql5.7通过文件zip方式安装-九五小庞
Plato farm is expected to further expand its ecosystem through elephant swap
Leetcode question type priority queue (TOPK question)
~6. ccf 2021-09-1 数组推导
基于用户画像的在线健康社区用户流失预测研究
图神经网络Core数据集介绍
Plato Farm有望通过Elephant Swap,进一步向外拓展生态
基于专利多属性融合的技术主题划分方法研究
Low power multi-channel wfas1431 wireless data acquisition and transmission instrument operation process description
全校软硬件基础设施一站式监控 ,苏州大学以时序数据库替换 PostgreSQL
如何评价测试质量?
Network pictures are transferred locally, causing the kernel to exit
【深度学习】全连接网络
Joint entity and event extraction model based on multi task deep learning






![[ostep] 02 virtualized CPU - process](/img/0b/3f151ccf002eb6c0469bf74072a3c5.png)

