Продолжаем решать задачки по информационной безопасности web-серверов. Сегодня задачка с портала root-me.org, называется "HTTP - Directory indexing". За решение задачки дают 15 баллов, чуть посложнее начального уровня.
Снова в названии задачки есть подсказка. Видимо, уязвимость будет связана с возможностью просматривать содержимое директории:
По умолчанию веб-сервер возвращает список содержимого директории, если не находит в ней индексного файла.
Пример отображения содержимого директории в браузере.
Ссылки
Решение
Переходим на страницу задания:
http://challenge01.root-me.org/web-serveur/ch4/
Видим пустую страницу, вероятно, для того, чтобы не акцентировать наше внимание на отвлекающих факторах.
Просмотрим код страницы.
Видим закомментированную строку:
<!--- include("admin/pass.html") -->
Делаем предположение, что это кусок забытого разработчиком кода, в котором он подсвечивал себе пароль. Вероятно, по ссылке "admin/pass.html" можно увидеть что-нибудь интересное. Переходим на http://challenge01.root-me.org/web-serveur/ch4/admin/pass.html
Got rick rolled ? ;)
You're not the last :p
Что в вольном переводе означает: "Попался! Не волнуйся, не ты последний".
Не печалимся, кроме файла pass.html у нас есть ещё директория admin. Переходим в неё.
http://challenge01.root-me.org/web-serveur/ch4/admin/.
Да. Веб сервер выводит содержимое директории, поскольку индексного файла нет. Видим, что внутри есть папка backup. Переходим в неё.
http://challenge01.root-me.org/web-serveur/ch4/admin/backup/
И снова видим содержимое с файлом admin.txt. Посмотрим, что внутри.
А внутри флаг. Валидируем.
Флаг подходит, зарабатываем 15 очков.
Безопасность
Запретите выводить содержимое директории на боевом веб-сервере. Это можно сделать с помощью настроек веб-сервера.
.htaccess
Достаточно добавить одну строку в .htaccess:
Options -Indexes
Эта настройка действует на все вложенные папки. Следовательно, добавление данного условия в корневой файл .htaccess запрещает выводить содержимое директории для всего сайта.
Apache
В Apache добавьте в httpd.conf или apache2.conf:
<Directory /your/website/directory>Options -Indexes</Directory>
Расположение файла зависит от операционной системы.
- Debian, Ubuntu
- apache 1.3 /etc/apache/httpd.conf
- apache 2.2 /etc/apache2/apache2.conf
- FreeBSD
- apache 1.3 /usr/local/etc/apache/httpd.conf
- apache 2.2 /usr/local/etc/apache22/httpd.conf
- Linux (CentOS, Fedora)
- /etc/httpd/conf/httpd.conf
- Gentoo
- apache 2.0 /etc/apache2/httpd.conf
nginx
В nginx вывод содержимого директорий запрещён по умолчанию. Но его можно включить в настройках nginx.conf изменив autoindex on на autoindex off.