当前位置:   article > 正文

【文件上传漏洞-06】分布式配置文件攻击实验—以upload-labs-4为例_uploadlabs 4

uploadlabs 4

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>
  • 1
  • 2
  • 3

在这里插入图片描述

(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>
  • 1
  • 2
  • 3

在这里插入图片描述
在这里插入图片描述

(2)上传zzz探针文件。上传一个PHP探针文件,并将文件名修改为zzz。可以看到上传成功。
在这里插入图片描述

(3)右键该图片,并在新标签中打开,可以看到该文件内容被成功执行。
在这里插入图片描述

5 总结

(1)当存在文件上传漏洞时,只要恶意代码没有被过滤,就存在被执行的危险。
(2)掌握修改.htaccess以改变各种文件执行程序的方法。
(3).htaccess文件主要是为了让上传的文件可在服务器执行。之前的00截断也是为了让上传的文件可在服务器执行。

参考文章

[1] 《apache配置文件httpd.conf
[2] 《apache的.htaccess文件作用和相关配置
[3] 在线生成.htaccess文件链接

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号