摘要

这篇文章是后来才补上的,主要是我担心以后会忘记如何处理。

正文

前段时间,也就是我刚到武汉的第二个星期吧。

站点被人攻击了。

原理很简单:我有一个上传的功能。这个上传功能限制了不能上传html、php等扩展文件内容。这哥们利用apache的规则,给我上传了一个.htaccess与a文件。.htaccess对于apache来说,是管理当前目录下规则的。他给我上传的.htaccess里面拦截请求,然后额外添加了一套逻辑,将a改为a.php,然后调用a.php,妙就妙在这个a.php,是将我当前目录下所有内容发到他的服务器!

后来仔细研究了下,之所以.htaccess放在路径下面,是因为有的虚拟主机,仅仅是一个提供站点功能的主机,你并没有权限进行web服务器的修改。

但是,我就不一样了,我的服务器上的各种配置都是我配的,服务器都是我自己的。所以,我完全可以将.htaccess配置放到web服务器的配置中,由此,问题解决!

在配置文件中,将.htaccess添加到服务器配置里,这个是美化下载用的,也是我之前为啥在文件夹目录下用.htaccess,并不是解决办法。

conf
<Directory "D:/Develop/youarebitch/cloud">
    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{REQUEST_URI}::$1 ^(.*?/)(.*)::\2$
        RewriteRule ^(.*)$ - [E=BASE:%1]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule download/(.*)/sh/(.*) %{ENV:BASE}/vfm-admin/vfm-downloader.php?q=$1&sh=$2 [L]
        RewriteRule download/(.*)/h/(.*) %{ENV:BASE}/vfm-admin/vfm-downloader.php?q=$1&h=$2 [L]
        RewriteRule download/zip/(.*)/n/(.*) %{ENV:BASE}/vfm-admin/vfm-downloader.php?zip=$1&n=$2 [L]
    </IfModule>
</Directory>

<Directory "D:/Develop/youarebitch/cloud/cloud">

    <Files "*.php">
        SetHandler none
        SetHandler default-handler
        Options -ExecCGI
        RemoveHandler .php
    </Files>

    <IfModule mod_php5.c>
        php_flag engine off
    </IfModule>

    Order Deny,Allow
    Deny from all
</Directory>

解决办法也很简单,根目录下,将配置修改为如下。禁用.htaccess中所有可用的命令!

conf
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   AllowOverride FileInfo AuthConfig Limit
#
AllowOverride None

参考文件上传漏洞之.htaccess_欧阳大仙萌萌哒的博客-CSDN博客_htaccess文件上传漏洞