Как предотвратить атаку через каталоги в Apache2 Ubuntu 14?
Как системный администратор, я должен сделать безопасную сборку сайта на PHP. Сканер уязвимостей выдает предупреждение об атаке через каталог. Я погуглил много сайтов, но не нашел правильного решения. Я уже отключаю индексирование, а также помещаю директорию deny в /.
Обход каталогов можно предотвратить с помощью конфигурации Aapache или PHP?
Пожалуйста, руководство по этому вопросу.
Помощь была бы очень признательна.
Более подробно вопрос по мере необходимости.
Сторонние разработчики уже обнаруживают уязвимости и загружают файлы / etc / passwd методом GET.
здесь подробнее.
Описание уязвимости Этот сценарий, возможно, уязвим для атак через каталог.
Обратный путь в каталогах - это уязвимость, позволяющая злоумышленникам получить доступ
ограниченные каталоги и выполнять команды вне корневого каталога веб-сервера.
Эта уязвимость влияет
Обнаружено: Сценарии (Directory_Traversal.script).
Детали атаки
URL-адрес в кодировке GET ofile был установлен на../../../../../../../../../../etc/passwd
Содержимое файла найдено:
корень: х: 0: 0: корень: / корень: / Bin / Баш
Просмотр заголовков HTTP
Запрос
ПОЛУЧИТЬ удалить
ofile=../../../../../../../../../../etc/passwd HTTP/1.1
Реферер: удален
Cookie: PHPSESSID = 7lnb7v198ul8691398urchg833;
ccity = 6cd5165e7bce89782ed37abe9401604a01cb6056s% 3A3% 3A% 22AGR% 22% 3B;
Ланг =13d4e1ed1ec441aca81746dd05751ce248f3fff5s%3A2%3A%22mA% 22% 3B;
YII_CSRF_TOKEN = f5e14954e37e2975baa3eec9007f1d89ee8b0302s% 3A40% 3A% 2234cb9e79ba1cafe5dbc69403f245dbcf708adb9b% 22% 3B
Хост: удален
Подключение: Keep-alive
Accept-Encoding: gzip, выкачать
Пользователь-агент: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/28.0.1500.63 Safari/537.36
Принять: /
отклик
HTTP/1.1 200 ОК
Дата: четверг, 10 марта 2016 г. 08:32:38 GMT
Сервер: Apache
X-Powered-By: PHP / 5.5.9-1ubuntu4.5
Истекает: четверг, 19 ноября 1981 года, 08:52:00 по Гринвичу
Cache-Control: нет хранилища, нет кэша, необходимо повторно проверить, пост-проверка =0, предварительная проверка = 0
Прагма: без кеша
Content-Transfer-Encoding: двоичный
Длина контента: 1348
Содержание-Диспозиция: встроенная; имя файла =.. /.. /.. /.. /.. /.. /.. /.. /.. /.. / и т.д. / пароль
Keep-Alive: тайм-аут =60, максимум =781
Подключение: Keep-Alive
Тип контента: приложение / pdf
Содержание файла
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534: синхронизация:/bin:/bin/sync games:x:5:60: игры: / usr / игры:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin прокси: x: 13: 13: прокси:/bin:/usr/sbin/nologin www-данные:x:33:33:www-data:/var/www:/usr/sbin/nologin:x:34:34: резервная копия: / var / backups: / usr / sbin / nologin список:x:38:38: Менеджер списков рассылки:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:41: Отчеты об ошибках в Gnats Система (администратор):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534: никто: / не существует:/usr/sbin/nologin libuuid:x:100:101::/var/lib/libuuid: syslog:x:101:104::/home/syslog:/bin/false mysql:x:102:106:MySQL Server,,,:/ не существует: / bin / ложная шина сообщений:x:103:107::/var/run/dbus:/bin/false landscape:x:104:110::/var/lib/landscape:/bin/false sshd:x:105:65534::/var/run/sshd:/usr/sbin/nologin ntp:x:106:114::/home/ntp:/bin/false tpl-nag:x:1001:1002::/home/tpl-
Воздействие этой уязвимости Используя уязвимости обхода каталогов, злоумышленники выходят из корневого каталога и получают доступ к файлам в других каталогах. В результате злоумышленники могут просматривать запрещенные файлы или выполнять команды, что приводит к полной компрометации веб-сервера.
Как исправить эту уязвимость Ваш скрипт должен фильтровать метасимволы из пользовательского ввода.
1 ответ
1) Понять уязвимость ( https://en.wikipedia.org/wiki/Directory_traversal_attack). Я верю, что ты уже сделал это.
2) Воспроизвести уязвимость. Найдите его самостоятельно в соответствии с 1) и своими знаниями о том, что делает ваша организация, или спросите стороннюю организацию, которая обнаружила это. Если они не могут предоставить хотя бы один конкретный пример уязвимости (например, URI), попросите вернуть ваши деньги:) Было бы полезно более одного примера.
3) Теперь у вас должно быть достаточно информации для исправления вашего сервера. Это может быть в Apache и / или PHP, и / или где-то еще, но нет никакой возможности сказать это с помощью информации, представленной в вопросе. Если вы все еще не можете это исправить на этом этапе, не стесняйтесь задать еще один вопрос здесь.
4) Проверьте, что то, что вы обнаружили в 2), больше не происходит после изменения вашего сервера.
РЕДАКТИРОВАТЬ (более подробная информация предоставляется)
Сторонние разработчики были достаточно любезны, чтобы ответить на ваш вопрос: "Как исправить эту уязвимость. Ваш сценарий должен фильтровать метасимволы из пользовательского ввода". Попросите их опубликовать свой ответ здесь, и вы можете принять его:)