
Рассмотрена система безопасности Web серверов и типичные ошибки, совершаемые Web разработчиками при написании сценариев на языках PHP, ASP и Perl. Приведены примеры взлома реальных Webсайтов, имеющих уязвимости. В теории и на практике рассмотрены распространенные хакерские атаки: DoS, Include, SQL инъекции, межсайтовый скриптинг, обход аутентификации и др. Описаны основные приемы защиты от атак и рекомендации по написанию безопасного программного кода. Компакт диск содержит листинги из книги, программы автора.
ЗАКАЗАТЬ КНИГУ СОДЕРЖАНИЕ ВВЕДЕНИЕ
| Оглавление Введение | 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 Оглавление |