Web-сервер глазами хакера

Аннотация

Рассмотрена система безопасности Web серверов и типичные ошибки, совершаемые Web разработчиками при написании сценариев на языках PHP, ASP и Perl. Приведены примеры взлома реальных Webсайтов, имеющих уязвимости. В теории и на практике рассмотрены распространенные хакерские атаки: DoS, Include, SQL инъекции, межсайтовый скриптинг, обход аутентификации и др. Описаны основные приемы защиты от атак и рекомендации по написанию безопасного программного кода. Компакт диск содержит листинги из книги, программы автора.

Купить книгу онлайн

Введение

Интернет захватывает все новые и новые области, и мы уже можем управлять даже бытовой техникой через всемирную сеть. Интернет пытаются встроить в холодильник, чтобы он сам заказывал заканчивающиеся продукты и другую бытовую технику, причем не только кухонную.

Все это красиво, но только на словах и на выставках. Если посмотреть на нашу реальность, то в быту Интернет пока не прижился. Возможно, что это из-за высокой цены устройств (а в нашей стране и Интернета), а может из-за боязни хакеров. Лично я на данный момент не готов предоставить управление через Интернет даже самыми безобидными бытовыми приборами. Простейший пример – если хакер получит управление холодильником, то он сможет отключить его, и все продукты пропадут. Если под управление попадет микроволновая печь, то она может сгореть. Дело в том, что ее нельзя включать пустой, да и работа с продуктами при перегреве может привести к возгоранию. И после этого мы будем рады, если сгорит только микроволновая печь, а не вся квартира.

Действительно ли хакеры так страшны? А может быть они не настолько всесильны и страх развеян благодаря журналистам? Да, журналисты любят приукрашать и любят тему Интернет взломов. Но хакеры действительно опасны.

Хотя нет, больше всего опасны непрофессиональные программисты и администраторы. Да, ошибаются все, я сам не без греха. Но иногда встречается откровенный непрофессионализм, когда нет даже самых простых попыток обеспечить WEB серверу достойную защиту. Вот именно такие люди опасны. Чаще всего, это слесари, грузчики и работники других профессий, абсолютно не связанные с компьютерами, которые только недавно подключились к Интернету и решили, что смогут создать свой сайт.

В данной книге будет рассматриваться система безопасности WEB серверов. Мы узнаем, как хакеры нападают на сервера, как находят уязвимости и используют их для получения конфиденциальной информации или для получения сверх возможностей (прав доступа).

Мы будем рассматривать методы взломов на практике и на примерах реальных WEB сайтов. Да, именно реальных сайтах и WEB серверах, чтобы вы могли увидеть всю опасность не профессионализма программистов и администраторов. Все примеры взломов мы будем подробно разбирать, и я постараюсь предложить возможные варианты решения проблем и исправления ошибок, допущенных программистами и администраторами.

Зачем мы будем рассматривать атаки хакеров? С одной стороны этот материал можно воспринимать как инструкции по взлому, но с другой стороны, только так можно построить реальную защиту. Невозможно защищаться, если вы не будете знать, откуда может прийти угроза.

Допустим, что вы полководец и хотите защитить свою территорию от вторжения. Вы можете выкопать вокруг своих земель ров, заминировать дороги и растянуть колючую проволоку, но это не даст результата, если вы не выясните, откуда может прийти угроза. Все затраты будут бессмысленными, если неприятель готовит воздушный удар. Поэтому, сначала выясняем, откуда может прийти неприятель и как он может действовать, а потом уже будем искать достойный ответ. Именно так мы и будем действовать – рассматривать возможную угрозу, а потом искать возможную защиту.

Что подразумевается под взломом WEB сервера? Это взлом сайта или сервиса, который обрабатывает WEB страницы? Мы будем рассматривать проблему комплексно. Это и железо, это и ОС, WEB сервер, база данных и сами сценарии, которые выполняются на WEB сервере. Железо и ОС мы будем поверхностно, по мере того, как понадобиться нам та, или иная информация. Просто я не думаю, что стоит лишний раз говорить о том, как защищать BIOS компьютера и загрузчик, просто этот вопрос уж слишком отдален от тематики книги.


Содержимое

Оглавление Введение 1
Что не вошло в книгу 2
Благодарности 3

Глава 1. Основы безопасности

5
1.1. Социальная инженерия 5
1.2. Основы взлома 8
1.3. Исследование 10
1.3.1. Определение типа операционной системы 14
1.3.2. Определение имен работающих служб 15
1.3.3. Использование эксплоитов 16
1.3.4. Автоматизация 18
1.4. Взлом Web-сервера 23
1.4.1. Взлом с помощью поисковой системы 25
1.5. Подбор паролей 27
1.6. Троянские программы 29
1.7. Denial of Service (DoS) 32
1.7.1. Distributed Denial Of Service (DDoS) 35
1.8. Программы для подбора паролей 36
1.9. Получение прав определенного пользователя 38
1.10. Меры безопасности 39
1.10.1. Защита Web-сервера 40
1.10.2. Модули безопасности Apache 42
1.11. Права доступа 45
1.11.1. Права сценариев Web-сервера 45
1.11.2. Права системных сценариев 45
1.11.3. Права доступа к СУБД 46
1.12. Сложные пароли 50
1.13. Не все так безнадежно 50
1.14. Ошибки есть, их не может не есть 52
1.14.1. Самостоятельно написанные программы 53
1.14.2. Программы, написанные под заказ 53
1.14.3. Решения Open Source 54

Глава 2. Простые методы взлома

57
2.1. Накрутка голосования 57
2.1.1. Вариант накрутки № 1 58
2.1.2. Вариант накрутки № 2 59
2.1.3. Вариант накрутки № 3 59
2.1.4. Защита от накрутки 60
2.2. Флуд 62
2.2.1. Бомбардировка регистрациями 63
2.2.2. Защита от флуда 65
2.3. Опасная подписка на новости 66

Глава 3. Взлом PHP-сценариев

71
3.1. Неверное обращение к файлам 72
3.1.1. Пример реальной ошибки 72
3.1.2. Проблема include 77
3.1.3. Инъекция кода 83
3.2. Классика жанра: phpBB 85
3.3. Ничего лишнего 91
3.4. Автоматическая регистрация переменных 95
3.4.1. Метод GET 97
3.4.2. Метод POST 100
3.4.3. Уязвимость 103
3.4.4. Другие методы 104
3.4.5. Инициализация переменных 107
3.5. Принцип модульности 114
3.5.1. Конфигурационные файлы 115
3.5.2. Промежуточные модули 117
3.5.3. Скрытые функции 121
3.6. Проверка корректности параметров 122
3.7. Проблема регулярных выражений 124
3.8. Регулярные выражения Perl 124
3.9. Опасность переменных окружения 127

Глава 4. Работа с системными командами

129
4.1. Вызов системных команд 129
4.2. Защита от выполнения произвольных команд 134
4.3. Загрузка файлов 136
4.3.1. Проверка корректности файлов изображений 141
4.3.2. Проверка корректности текстовых файлов 144
4.3.3. Сохранение файлов в базе данных 145
4.3.4. Обращение к файловой системе 145
4.3.5. Угроза безопасности 149
4.4. Функция eval 149

Глава 5. SQL-инъекция (PHP + MySQL)

151
5.1. Поиск 152
5.2. Ошибка 155
5.2.1. Сбор информации 159
5.2.2. Использование уязвимости 165
5.2.3. Доступ к файловой системе 166
5.2.4. Поиск уязвимости 167
5.2.5. Процент опасности 168
5.2.6. Возможные проблемы 172
5.2.7. От теории к практике 173
5.3. Настройка защиты от SQL-инъекции 178
5.4. Настройка интерпретатора PHP 181
5.5. Защита СУБД 184
5.6. Некоторые рекомендации 185
5.7. Поиск уязвимого PHP-сценария 188
5.7.1. Ошибка в каталогах программ 188
5.7.2. О футболе 192
5.7.3. Macromedia ColdFusion 197

Глава 6. SQL-инъекция (ASP + MS SQL Server)

199
6.1. Практика взлома 199
6.2. Особенности MS SQL Server 212
6.2.1. Опасные процедуры MS SQL Server 212
6.2.2. Распределение прав доступа 216
6.2.3. Опасные SQL-запросы 218
6.2.4. Рекомендации по безопасности MS SQL Server 221

Глава 7. Основные уязвимости Perl-сценариев

225
7.1. Работа с файловой системой 226
7.2. SQL-инъекция 230
7.3. Выполнение системных команд 234
7.4. Подключение файлов 234

Глава 8. DoS-атака на Web-сайт

237
8.1. Долго выполняющиеся SQL-запросы 237
8.2. Оптимизация работы с СУБД 238
8.2.1. Оптимизация SQL-запросов 239
8.2.2. Оптимизация базы данных 242
8.2.3. Выборка необходимых данных 244
8.2.4. Резюме 246
8.3. Оптимизация PHP 246
8.3.1. Кэширование вывода 246
8.3.2. Кэширование Web-страниц 247
8.4. Блокировки 251
8.5. Другие ресурсы 252

Глава 9. Авторизация

255
9.1. Аутентификация на Web-сервере 255
9.2. Собственная система аутентификации 257

Глава 10. XSS

259
10.1. Основы XSS 259
10.2. Перехватываем данные 263
Заключение 265
Приложение. Описание компакт-диска 267
Литература 269
Предметный указатель 271
VI Оглавление V Оглавление

Отзывы

Добавить Комментарий

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне