在检查访问日志时,我注意到 Apache 返回了以下自动漏洞扫描的 200 状态:
POST /index.php/api/Uploadify/preview HTTP/1.1
此 VHost 没有重写规则,文件/URL 也不存在。我似乎找不到 Apache 指令,Google 确信我想创建此行为,而不是禁用它。
有人能向我解释为什么 Apache 解析这个 URL,以及/或者如何让它返回 404 吗?
答案1
阿帕奇的AcceptPathInfo
AcceptPathInfo
此行为由Apache 中的指令控制2.2和2.4:
此指令控制是否接受或拒绝包含实际文件名(或现有目录中不存在的文件)后面的尾随路径名信息的请求。尾随路径名信息可在环境变量中提供给脚本
PATH_INFO
。例如,假设位置
/test/
指向仅包含单个文件的目录。然后对和的here.html
请求 都收集为 。/test/here.html/more
/test/nothere.html/more
/more
PATH_INFO
默认情况下
核心处理程序拒绝
PATH_INFO
正常文件其他处理程序(例如 mod_cgi、mod_isapi 或 mod_php)通常接受
PATH_INFO
。
如果您想要明确禁用所有处理程序的此功能,请使用:
AcceptPathInfo Off
PHP-FPM
似乎AcceptPathInfo
不适用于 PHP-FPM,例如,如果有如下代理处理程序:
<FilesMatch "\.php$">
SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
</FilesMatch>
<Proxy "fcgi://localhost/">
</Proxy>
在这种情况下,您可以例如禁止访问所有包含的 URL .php/
。
Apache 2.2
LocationMatch
&访问控制:<LocationMatch ".php/"> Order deny,allow Deny from all </LocationMatch>
Apache 2.4
LocationMatch
&访问控制:<LocationMatch ".php/"> Require all denied </LocationMatch>