Как системный администратор, я должен сделать безопасную сборку сайта на 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, deflate
Пользователь-агент: Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 28.0.1500.63 Safari / 537.36
Accept: /
отклик
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: nobody: / не существует: / 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) Понять уязвимость (https://en.wikipedia.org/wiki/Directory_traversal_attack). Я верю, что ты уже сделал это.
2) Воспроизвести уязвимость. Найдите его самостоятельно в соответствии с 1) и своими знаниями о том, что делает ваша организация, или спросите стороннюю организацию, которая обнаружила это. Если они не могут предоставить хотя бы один конкретный пример уязвимости (например, URI), попросите вернуть ваши деньги 🙂 Было бы полезно более одного примера.
3) Теперь у вас должно быть достаточно информации для исправления вашего сервера. Это может быть в Apache и / или PHP, и / или где-то еще, но нет никакой возможности сказать это с помощью информации, представленной в вопросе. Если вы все еще не можете это исправить на этом этапе, не стесняйтесь задать еще один вопрос здесь.
4) Проверьте, что то, что вы обнаружили в 2), больше не происходит после изменения вашего сервера.
РЕДАКТИРОВАТЬ (дополнительная информация предоставлена)
Сторонние разработчики были достаточно любезны, чтобы ответить на ваш вопрос: «Как исправить эту уязвимость. Ваш сценарий должен фильтровать метасимволы из пользовательского ввода». Попросите их опубликовать свой ответ здесь, и вы можете принять его 🙂
Других решений пока нет …