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

具体导航

https://xz.aliyun.com/t/8267