Apache-2.2
Apache 錯誤地解析以 /index.php/ 開頭的路徑的請求
在查看訪問日誌時,我注意到 Apache 返回 200 狀態的以下自動漏洞掃描:
POST /index.php/api/Uploadify/preview HTTP/1.1
沒有針對此 VHost 的重寫規則,並且文件/URL 不存在。我似乎無法為此找到 Apache 指令,Google 確信我想創建這種行為,而不是禁用它。
有人可以向我解釋為什麼 Apache 解析此 URL,和/或如何使其返回 404?
阿帕奇的
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>
在這種情況下,您可以例如禁止訪問所有包含
.php/
.
- Apache 2.2
LocationMatch
和訪問控制:<LocationMatch ".php/"> Order deny,allow Deny from all </LocationMatch>
- Apache 2.4
LocationMatch
和訪問控制:<LocationMatch ".php/"> Require all denied </LocationMatch>