.htaccess配置文件介绍:
是Apache服务器中的一个配置文件,负责相关目录下的网页配置,能够实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
Unix、Linux系统或任何版本的Apache Web服务器都是支持.htaccess的,但是有的主机服务商不允许自定义自己的.htaccess文件。
理解:
将.htaccess文件上传到一个特定的文档目录中,在.htaccess中放置一个或多个指令文件, 在此目录及其所有子目录都将受此指令的影响,从而能实现上传文件以其他方式执行,即上传漏洞。
打开配置:
如果LoadModule rewrite_module modules/mod_rewrite.so前面有#就将#去掉就打开了rewrite功能模块(我这个也是打开的)
点击vhost.conf: AllowOverride None, 改为 AllowOverride All
(我这个是All)
运用:
第一步:上传.htaccess文件重写解析规则绕过黑名单:
实现:上传.htaccess文件到指定的目录,重写当前目录下的解析规则,上传图片马,打开图片马所在位置将以新指定的方式解析运行
phpstudy官网给出的.htaccess文件运用:
# 启动rewrite引擎 RewriteEngine on # 将index.html 映射到 index.php RewriteRule ^index.html$ /index.php ThinkPHP5.1的.htaccess <IfModule mod_rewrite.c> # 符号链接,也称为符号链接或软链接, 最类似于Windows快捷方式, 没它可能403错误 Options +FollowSymlinks -Multiviews RewriteEngine On # 如果不是目录, 如果不是文件, 才将URL交给下一条规则处理 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] </IfModule>
当我们在浏览器地址栏输入 index.html文件目录是, 实际上访问的是动态页面index.php
一般实际过程中我们用到的.htaccess文件一般是以下情况:
第一种:
#在当前目录下,所有文件都会被解析成php代码执行
<IfModule >
setHandler application/x-httpd-php
</IfModule >
第二种:
仅xxx.png(指定文件)文件被解析PHP代码执行
这个指定文件可以是任何允许上传的文件
然后在里面写入代码
<FilesMatch "xxx.png">
setHandler application/x-httpd-php
</FilesMatch>
第二步:上传写入了执行语句的可上传文件
第三步:一般是用蚁剑或者是菜刀进行连接
缺陷:
性能:
如果AllowOverride启用了.htaccess文件会导致性能的下降:
①Apache需要在所有上级目录中查找.htaccess配置文件,使所有有效的指令都起作用
②对于每一个请求,都需要读取一次.htaccess文件
例:
如果请求/a/b/www中的页面,Apache必须查找以下文件:
/.htaccess、/a/.htaccess、/a/b/.htaccess、/a/b/www/.htaccess
安全:
如果允许用户修改服务器的配置,有不可避免的文件篡改
如果给予用户较少的特权而不能满足其需要,则会带来额外的技术支持请求