Как мне получить доступ к родительскому каталогу public_html в Apache?
Я помню, как читал некоторое время назад, как кто-то может получить доступ к файловой системе вашего компьютера с веб-сайта. Я хочу знать, как это сделать, чтобы я мог проверить и предотвратить это.
Запуск Apache 2.4 в Windows через XAMPP
Мой виртуальный хост настроен так:
<VirtualHost *:80>
ServerName local.scrap
DocumentRoot "D:/Dropbox/www/scrap/public_html/"
<Directory "D:/Dropbox/www/scrap/">
Order allow,deny
Allow from all
Require all granted
</Directory>
ErrorLog "D:/Dropbox/www/scrap/logs/error.log"
</VirtualHost>
Есть index2.html
в scrap/
а также index.html
в scrap/public_html/
хосты настроены на 127.0.0.1 local.scrap
Если я наберу URL http://local.scrap/
Я получаю index.html. Если я наберу URL http://local.scrap/../index2.html
он перенаправляется http://local.scrap/index2.html
Почему URL-адрес../ перенаправляется на путь DocumentRoot?
2 ответа
Часто не злонамеренный пользовательский агент разрешает../ в URL, прежде чем он когда-либо свяжется с сервером. Но даже без этого веб-серверы спроектированы так, чтобы не допускать такого обхода каталога вне корней контекста.
Вы должны проверить с telnet/netcat/s_client, чтобы быть уверенным.
Если в коде приложения веб-сайта есть обход каталога или уязвимость LFI, то это действительно может быть возможно.
Кроме того, некоторые веб-серверы имеют уязвимости обратного пути в каталогах. Однако текущая версия Apache не имеет известных недостатков в этом отношении.