Security

在 apache 的路徑中拒絕帶有父 .. 的 URL

  • January 8, 2020

我想知道是否有一種簡單的方法可以使 apache httpd 拒絕(403)路徑中包含父級..的任何 URL。

到目前為止,我已經嘗試過(為簡單起見,忽略了flase正面)

<LocationMatch "\.\.">
Order allow,deny
Deny from all
</LocationMatch>

但這沒有用。目錄裡面有Allow from all。我是在正確的軌道上還是有更簡單的方法來做到這一點(就像 90 年代的 Fasttrack 一樣)。

我會使用ModSecurity來做到這一點:

SecRule REQUEST_URI "../" "log,deny,msg:'Directory Traversal Attack Detected'"

使用一些請求進行測試:

http://domain.com/../../../../etc/passwd

並檢查審核日誌,您會看到如下內容:

[modsecurity] [client x.x.x.x] [domain domain.com] [302] [/20120816/20120816-1529/20120816-152911-1np2Nn8AAAEAA Aq6EU0AAAAG] [file "/etc/httpd/modsecurity.d/modsecurity_crs_10_config.conf"] [line "305"] [msg "Directory Traversal Attack Detected"] Access denied with code 403 (phase 2). Pattern match "../" at REQUEST_URI.

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