Мне было интересно, есть ли простой способ запретить apache httpd (403) любые URL-адреса, содержащие родительский ..
в пути.
До сих пор я пробовал (для простоты игнорируя положительные моменты вспышки)
<LocationMatch "\.\.">
Order allow,deny
Deny from all
</LocationMatch>
Но это не сработало. В каталоге есть Allow from all
в этом. На правильном ли я пути или есть более простой способ сделать это (как это было в Fasttrack в 90-х).
Я бы сделал это, используя 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.