Apache-2.2

Apache 錯誤地解析以 /index.php/ 開頭的路徑的請求

  • May 14, 2020

在查看訪問日誌時,我注意到 Apache 返回 200 狀態的以下自動漏洞掃描:

POST /index.php/api/Uploadify/preview HTTP/1.1

沒有針對此 VHost 的重寫規則,並且文件/URL 不存在。我似乎無法為此找到 Apache 指令,Google 確信我想創建這種行為,而不是禁用它。

有人可以向我解釋為什麼 Apache 解析此 URL,和/或如何使其返回 404?

阿帕奇的AcceptPathInfo

此行為由AcceptPathInfoApache 2.22.4中的指令控制:

該指令控制是否接受或拒絕包含跟隨實際文件名(或現有目錄中不存在的文件)的尾隨路徑名資訊的請求。尾隨路徑名資訊可用於 PATH_INFO環境變數中的腳本。

例如,假設位置/test/指向僅包含單個文件的目錄here.html。然後請求 /test/here.html/more/test/nothere.html/more都收集/morePATH_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/.

<LocationMatch ".php/">
   Order deny,allow
   Deny from all
</LocationMatch>
<LocationMatch ".php/">
   Require all denied
</LocationMatch>

引用自:https://serverfault.com/questions/1017047