.htaccess和.user.ini文件构造后门
一、.htaccess
.htaccess 是Apache HTTP Server的文件目录系统级别的配置文件的默认的名字。它提供了在主配置文件中定义用户自定义指令的支持。其主要作用有URL重写、自定义错误页面、访问权限控制等。也就是说我们可以通过这个文件来达到更改Apache配置的目的。.htaccess的用途范围主要针对当前目录。
1、开启.htaccess支持
启用.htaccess,需要修改httpd.conf,启用AllowOverride,即将原有配置:
Options FollowSymLinks
AllowOverride None
改为
Options FollowSymLinks
AllowOverride All
2、通过.htaccess文件来控制文件的访问权限
我们在很多时候会遇到这样的情况,可以上传后门文件到服务器上,但是改上传目录不能禁止外部访问,或者是不解析脚本,但如果他开启了.htaccess的支持,我们就可以通过它来重写Apache配置(只对当前目录有效),然后执行我们的脚本文件。比如下面的情况:
可以看到服务器支持.htaccess,它禁止了E:/WWW/tes/这个目录下的php文件的访问和解析。
假如这是个上传目录,我们就可以通过上传.htaccess文件来重写apache配置,从而达到我们上传后门的目的。
.htaccess文件内容:
<FilesMatch ".php"> Order Allow,Deny Allow from all </FilesMatch>
然后再访问我们的php文件。
这时候,就可以成功解析php文件了。当然我们也可以构造其他后缀的后门文件上传,让它可以解析就可以了,在本地的phpstudy环境中,AddType的指定有问题,就在linux环境下测试了,相信平时我们遇到的情况大多也是在linux环境中。
构造其他后缀名支持php解析,.htaccess文件如下:
AddType application/x-httpd-php .png php_flag engine 1
利用的时候可以结合实际情况,来达到其他的目的。需要对apache的配置熟悉些。
二、.user.ini
自 PHP 5.3.0 起,PHP 支持基于每个目录的 .htaccess 风格的 INI 文件。此类文件仅被 CGI/FastCGI SAPI 处理。除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。在 .user.ini 风格的 INI 文件中除了PHP_INI_SYSTEM以外的模式 INI 设置都可被识别。
这里需要借助php配置项中的两个核心配置:auto_append_file、auto_prepend_file
这两个配置的作用其实就是:auto_prepend_file 在页面顶部加载文件,auto_append_file 在页面底部加载文件,他是通过 require来自动调用文件的,所以我们的.user.ini文件的内容就可以是:
auto_prepend_file = 123.gif
然后我们访问正常的index.php文件,就会包含123.gif中的phpinfo()了。
浙公网安备 33010602011771号