Всем привет. Сейчас я расскажу и покажу об уязвимостях на одном веб-ресурсе. И что в этом такого, скажете вы, на просторах интернета много таких сайтов. Да, в этом не было бы ничего особенного, если бы это не был сайт госучреждения.
Прогуливаясь по региональному форуму, я нашел тему, где была ссылка на данный ресурс. Ради интереса я зашел и решил осмотреться. Первое что бросилось в глаза, это ссылки вида http://*******************.aspx?id=xxx. Видимо id определяет, что же показать. Не долго думая, добавляем к цифрам буквы и о чудо…
На первых страницах любой книги про разработку веб-приложений пишут о такого рода ошибках, и о том, как их избежать.
На сайте есть разного рода документы. Интересно где они хранятся? Я бы назвал папку files, вполне логично. Ну что же вводим нужный адрес, и…
Да, предположение верное, очевидно, что эта папка доступна для записи. Осталось найти, как эти файлы туда попадают. Все это тоже лежит на поверхности, но я сознательно не буду описывать, как залился шелл-скрипт, скажу лишь, что это возможно. Идем дальше и видим форму, чтобы задать вопрос министру. Первым делом вводим не корректные данные, и…
Много интересного порой показывает стек вызовов. Находим в контактах почту, и проверяем догадку. Догадка верна.
Я не читаю чужую почту, и здесь поступлю также. Но, в папках видно интересное название «МинФин». Сюда складывается почта от регионального минфина, в основном шлют обновления разных программ, но по опыту знаю, что порой могут прислать пароли и явки. Да, интересный экземпляр, квинтэссенция того как никогда не нужно делать.
Выводы напрашиваются сами собой.
Для разработчиков:
- Читайте книги. До вас было множество хороших программистов, которые прошли уже много ошибок, написали книги, чтобы поделиться опытом. Не повторяйте чужих ошибок.
- Всегда проверяйте данные поданные из браузера. Задавайте переменные в запросе через параметры, безопасным образом.
- Используйте try … catch блоки. Всегда может возникнуть ошибка, и стек вызовов будет содержать много интересного. Оборачивайте небезопасный код, и обрабатывайте ошибки.
- Не храните пароли в коде никогда. Пароль может и должен меняться, храните конфигурацию в отдельных файлах, доступ к которому закрыт извне.
- Не разрабатываете сферические сайты, помните, что вокруг полно пытливых умов. Проверяйте все на корректность, не вносите заведомо правильные данные.
Для администраторов:
- Читайте документацию по продуктам, которые вы используете.
- Не давайте разрешений «всем разрешено все». В данном примере, это правило позволило свободно гулять по директориям сервера.
- Всегда уделяйте безопасности время.
- Один ящик для «министерства» это сурово. Зарегистрируйте домен и привяжите к нему почту, это стоит не дорого, бюджет любого госучреждения может это позволить.
- Возмите за правило раз в месяц менять пароль.
Очень обидно, что при создании сайтов в госсекторе поступают таким образом, нанимая неквалифицированных программистов. Плохо, что нет единой платформы для госсектора, позволяющей создавать веб-ресурсы быстро и безопасно. Плохо, что даже нельзя выделить нормальную электронную почту. Возможно, что это региональный пример, в вокруг все гораздо лучше. Становится страшно от таких веб-сайтов, хорошо, что это было региональное министерство культуры, а ведь с таким подходом могут быть и более серьезные сайты, с которых можно «слить» более ценную информацию. Надеюсь, что теперь это региональное министерство культуры узнает еще и о «культуре» программирования.
P.S. Адреса сознательно убраны, регион не называется, но я уверен, что опытный читатель все найдет.
Автор: Jurik