Как мне получить доступ к родительскому каталогу 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 не имеет известных недостатков в этом отношении.

Другие вопросы по тегам