从文件上传到浅谈.htaccess文件的作用

0x01、什么是.htaccess文件?

.htaccess文件是apache服务器下的配置文件,里面存放着Apache服务器配置相关的指令,负责相关目录下的网页配置。

.htaccess与apche下httpd.conf配置文件起着相同的作用,当我们使用apache来开发一个网站时,我们可以通过修改apache中httpd.conf这个配置文件来修改apache的一些相关配置。但有些时候,我们并无法直接进入已部署的服务器来修改httpd.conf文件,这时,我们就可以通过修改.htaccess文件来修改appache的相关配置。

0x02、.htaccess的作用

.htaccess主要有以下作用:文件的访问权限,允许/阻止指定ip或ip段,初始页面设置,URL重写,错误页面的重定向,图片防盗链,MIME类型配置,文件密码保护等。

0x03、文件的权限访问控制

设置指定文件的访问权限

1
2
3
4
<Files "flag.php"> 
order allow,deny
deny from all //改为allow from all,则允许访问
</Files>

Files命令禁止指定文件flag.php被访问

在这里插入图片描述
也可以使用正则来过滤,需要在Files后加一个~符号

1
2
3
4
<Files ~ ".?\.log">  //匹配所有的.log文件
Order allow,deny
Deny from all
</Files>

也可以使用通配符表示

1
2
3
4
<Files  *.log>
order allow,deny
deny from all
</Files>

还可以使用FilesMatch 指令

1
2
3
4
<FilesMatch ".(log)$">
Order allow,deny
Deny from all
</FilesMatch>

以上三种方法都可以禁止所有的.log文件被访问

在这里插入图片描述

设置整个目录的访问权限

1
2
3
4
<Files ~ ".*"> 	//匹配所有文件
order allow,deny
deny from all
</Files>

或者不使用Files

1
2
order allow,deny 
deny from all

限制ip、ip段对整个文件夹的访问

如果只想限制某个ip对文件的访问权限,只需将上述的deny from all 改为deny from xxx.xxx.xxx.xxx 即可

1
2
3
order allow,deny 
allow from all
deny from 192.168.1.5

允许所有,禁止192.168.1.5,这样就限制了指定ip对文件夹的访问

限制ip段的访问

1
2
3
Order Allow,Deny
Allow from all
Deny from 192.168.1

禁止192.168.1.1-192.168.254这个ip段对文件夹的访问

0x04、URL、错误页面重定向

把flag.php重定向到index.php

1
2
RewriteEngine On 
Redirect /temp/flag.php /temp/index.php

当访问flag.php时就会直接跳转到index.php
在这里插入图片描述
也可以使用正则来匹配

1
2
RewriteEngine on 
RewriteRule .(log)$ index.php

访问.log文件就会重定向到index.php

301重定向

为了使域名唯一,增加用户的体验,网站一般都会设置301重定向,比如当你输入baidu.com时,网站就会重定向到http://www.baidu.com

1
2
3
RewriteEngine On
RewriteCond %{HTTP_HOST} !^baidu.com$ [NC]
RewriteRule ^(.*)$ http://www.baidu.com/$1 [L,R=301]

错误页面重定向

定义错误页面主要是为了增强用户的体验,毕竟并不是所以用户都知道404是什么意思

1
2
ErrorDocument 404 /temp/error.php
ErrorDocument 500 /temp/error2.php

在这里插入图片描述

0x05、图片防盗链

什么叫防盗链?有些网站出于某种目的盗用他人网站上的图片链接放到自己的网站上,这样不仅损害了他人的利用,还增加了他人网站上服务器的负担,浪费了大量的流量。不过还好.htaccess用防盗链的功能,具体用法如下:

1
2
3
4
RewriteEngine On  	//开启Rewrite模块   
RewriteCond %{HTTP_REFERER} !^$ [NC] //允许用户在浏览器地址栏中直接输入图片地址时图片文件的显示
RewriteCond %{HTTP_REFERER} !myweb.cn [NC] //设置允许访问的HTTP来源
RewriteRule .*\.(jpg|gif|png)$ http://myweb/error.html [R,NC,L] //定义被盗链时替代的页面

当除了本站以外的网站引用本网站的图片时,就会跳到error.html页面

0x06、文件解析

文件上传时经常遇到先上传一个.htaccess文件,然后再上传有木马的图片,图片就会被当成php文件解析的情况。

以upload-labs第4关为例

本关几乎限制了所有的黑名单,但唯独没有限制.htaccess文件

.htaccess文件内容如下:、

1
2
3
<FilesMatch  "eval.jpg">
SetHandler application/x-httpd-php
</FilesMatch>

eval.jpg就会被当做php文件来解析

先上传.htaccess文件
在这里插入图片描述
再上传eval.jpg文件
在这里插入图片描述
最后访问
在这里插入图片描述
.htaccess文件中除了用SetHandler命令,还可以用AddType指令来实现此功能

1
AddType application/x-httpd-php .jpg

0x07、总结

.htaccess文件的功能远不止这些,这次刚好是在做文件上传时碰到了,就随便总结一点,剩下以后碰到了再做总结。

文章目录
  1. 1. 0x01、什么是.htaccess文件?
  2. 2. 0x02、.htaccess的作用
  3. 3. 0x03、文件的权限访问控制
  4. 4. 0x04、URL、错误页面重定向
  5. 5. 0x05、图片防盗链
  6. 6. 0x06、文件解析
  7. 7. 0x07、总结
|