htaccess文件的深入学习
基本概念
.htaccess
允许用户在此目录及子目录中按照.htaccess
配置文件中的规则来解析。
需要注意的是:.htaccess
中的配置会覆盖全局配置,另外如果子目录中也有.htaccess
,其优先级会高于父目录,也就是会覆盖父目录中的规则。
管理员可以通过修改apache
配置文件中的AllowOverride
来开启.htaccess
的解析。
.htaccess
中有 #
单行注释符, 且支持\
拼接上下两行。
配置文件
启动.htaccess
AllowOverride All #启动.htaccess文件的使用
也可以将.htaccess
修改为其他名
AccessFileName .config #将.htaccess修改为.config
常见用途
.htaccess
主要用途并不是给你日站,主要用来设置301重定向,自定义404错误页面,改变文件拓展名,允许/阻止特定的用户或者目录的访问,配置默认文档等功能。
参考手册:http://www.htaccess-guide.com/
SetHandler
SetHandler application/x-httpd-php
此时当前目录及其子目录下所有文件都会被当做 php 解析
SetHandler server-status
访问任意不存在的文件,加参数 ?refresh=5 来实现每隔 5s 自动刷新监控性能
AddHandler
AddHandler cgi-script .xxx
将扩展名为 .xxx 的文件作为 CGI 脚本来处理
AddType
AddType application/x-httpd-php .gif
将以 gif 为后缀的文件当做 php 解析
AddType application/x-httpd-php png jpg gif
将以 .png .jpg .gif 多个后缀当做 php 解析
修改php_value
.htaccess
还可以修改个别的php的默认配置,可造成恶意解析、源码泄露、preg_match绕过等。
用法:
php_value name value
示例:
php_value auto_prepend_file images.png
访问一个 php 文件时,在该文件解析之前会先自动解析 images.png 文件。
php_value pcre.backtrack_limit 0
php_value pcre.jit 0
设置正则回朔次数来使正则匹配的结果返回为 false 而不是0 ,从而可以绕过正则。
php_flag engine 0
可以将 engine 设置为 0,在本目录和子目录中关闭 php 解析,造成源码泄露
利用方式
将images.png 当做 PHP 执行
<FilesMatch “images.png”>
SetHandler application/x-httpd-php
将 .jpg 当做 PHP 文件解析
AddType application/x-httpd-php .png
文件包含
通过 php_value 来设置 auto_prepend_file或者 auto_append_file 配置选项包含一些敏感文件, 同时在本目录或子目录中需要有可解析的 php 文件来触发。
.htaccess 分别通过这两个配置选项来包含 /etc/passwd,并访问同目录下的 index.php文件。
auto_prepend_file
1 php_value auto_prepend_file /etc/passwd
auto_append_file
1 php_value auto_append_file /etc/passwd