Logout succeed
Logout succeed. See you again!

Защита от хакеров Web-приложений PDF
Preview Защита от хакеров Web-приложений
Джефф Форристал, Крис Брумс, Дрю Симонис, Брайн Бегнолл, Майкл Дайновиц, Джей Д. Дайсон, Джо Дьюлэй, Майкл Кросс, Эдгар Даниелян, Дэвид Г. Скабру Защита от хакеров Web(cid:13)приложений ТМ WWeebb aapppplliiccaattiioonnss YYoouurr The Only Way to Stop a Hacker is to Think Like One Jeff Forristal Chris Broomes Drew Simonis Brian Bagnall Michael Dinowitz Jay D. Dyson Joe Dulay Michael Cross Edgar Danielyan David G. Scarbrough WWeebb(cid:13)(cid:13)ппррииллоожжеенниийй Серия «Информационная безопасность» Единственный способ остановить хакера – это думать, как он Перевод с английского Джефф Форристал Виталия Зорина Крис Брумс Дрю Симонис Брайн Бегнолл Майкл Дайновиц Джей Д. Дайсон Джо Дьюлэй Майкл Кросс Эдгар Даниелян Дэвид Г. Скабру Москва УДК 004.056 ББК 32.973.202 Ф79 Ф79 Форристал Д. и др. Защита от хакеров Web(cid:13)приложений / Джефф Форристал, Крис Брумс, Дрю Симонис, Брайн Бегнолл, Майкл Дайновиц, Джей Д. Дайсон, Джо Дьюлэй, Майкл Кросс, Эдгар Даниелян, Дэвид Г. Скабру ; Пер. с англ. В. Зорина – М. : Компания АйТи ; ДМК Пресс.– 496 с. : ил. – (Серия «Информационная безопасность»). ISBN 5(cid:12)98453(cid:12)006(cid:12)6 (АйТи) – ISBN 5(cid:12)94074(cid:12)258(cid:12)0 (ДМК Пресс) В этом издании представлены инструментальные средства для защиты Web-при- ложений и подробно рассмотрены базовые подходы для обеспечения безопасного управления сайтами, разработки безопасного кода, планирования защиты. Книга на- учит читателя «думать, как хакер» и благодаря этому лучше защищать информаци- онные ресурсы сайта и конфиденциальные данные, обеспечивая их целостность. Вни- мание читателей акцентируется на проблеме безопасности от начальной до конечной стадии разработки приложений. Подробно рассматриваются такие важные темы обеспечения успешной защиты Web- приложений от атак, как разработка плана сетевой безопасности, плана безопасности при- ложений и защиты рабочих мест, тестирование, изменение и совершенствование при- кладных методов и средств, а также методы осуществления угроз безопасности. В книге представлен обзор сайтов и форумов для разработчиков, публикующих перечень всех известных текущих угроз и проводящих консультации по проблемам безопасности. УДК 004.056 ББК 32.973.202 Original English language edition published by Syngress Publishing, Inc. Copyright © 2001 by Syngress Publishing, Inc. All rights reserved. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельца авторских прав. Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность тех- нических ошибок все равно остается, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за воз- можный ущерб любого вида, связанный с применением содержащихся здесь сведений. Все торговые знаки, упомянутые в настоящем издании, зарегистрированы. Случайное непра- вильное использование или пропуск торгового знака или названия его законного владельца не должно рассматриваться как нарушение прав собственности. ISBN 1-928994-31-8 (англ.) Copyright © 2001 by Syngress Publishing, Inc. ISBN 5-98453-006-6 (АйТи) © Перевод на русский язык. Компания АйТи ISBN 5-94074-258-0 (ДМК Пресс) © Оформление. ДМК Пресс © Издание. Тетру Содержание Предисловие 19 Как апплеты Глава 1. Методология хакинга 21 злоумышленника Введение 22 переносят вредоносный код: Терминология 23 Краткая история хакинга 23 Мобильный код для при(cid:26) ложений в виде Java(cid:26)ап(cid:26) Хакинг телефонных систем 24 плетов, JavaScript и ActiveX(cid:26) Компьютерный хакинг 25 компонентов– это мощное орудие для передачи дан(cid:26) Мотивы хакера 28 ных по Сети. Но это также и мощное орудие для рас(cid:26) Сравнение этичного пространения вредоносно(cid:26) и злонамеренного хакинга 29 го кода. Вредоносные ап(cid:26) плеты не саморазмножают(cid:26) Сотрудничество со специалистами ся и не предназначены, по безопасности 30 например, для искажения данных, подобно вирусам. Наиболее распространенные типы атак 31 Но они часто становятся средством специфической DoS/DDoS 31 атаки, направленной на Вирусный хакинг 33 хищение данных или при(cid:26) ведение системы к краху. Хищение 40 Распознавание угроз безопасности Web-приложений 44 Скрытая манипуляция 44 Искажение параметра 45 Создание перекрестного сценария 45 Переполнение буфера 45 Заражение cookie-файла 46 Изучение хакерских методов для защиты от взломов 47 Резюме 50 Конспекты 50 Часто задаваемые вопросы 53 6 Защита от хакеров Web(cid:13)приложений Творческий подход Глава 2. Как избежать к программированию: «перемалывания кода» 55 (cid:132)(cid:132)(cid:132)(cid:132)(cid:132) Осознайте возможность Введение 56 постороннего вмешатель(cid:26) ства в ваш код, ожидайте Что означает «перемалыватель кода» 57 непредсказуемого! (cid:132)(cid:132)(cid:132)(cid:132)(cid:132) Сделайте свой код более Следование правилам 60 лаконичным; часть кода, Кодирование – творческий процесс 61 отвечающая за функцио(cid:26) нальность, должна быть Разрешение на идею 63 минимальной. (cid:132)(cid:132)(cid:132)(cid:132)(cid:132) Проверка, проверка, про(cid:26) Обеспечение безопасности верка! Не надо полагаться «перемалывателем кода» 66 только на себя и тем более замалчивать свои ошибки. Кодирование в вакууме 67 Что предпочесть – функциональность или безопасность Web-приложений 69 Но мой код функционален! 73 Резюме 80 Конспекты 81 Часто задаваемые вопросы 82 Как работает Глава 3. Мобильный код– ваш враг 83 мобильный код Введение 84 в Java(cid:13)апплетах и ActiveX(cid:13) Осмысление рисков, компонентах: связанных с мобильным кодом 85 Атаки на браузер 85 Компьютер отправителя (Jaсvоaд(cid:31)Саепопропожчлбтаеыщщт ев еин ефли Uиое Rр AэмLcл(cid:31)tаеiсvтксeетыX рHл(cid:31)оTккноMун мноLпа,й о кноеднт) Атаки на почтового клиента 86 Вредоносные сценарии, или макросы 86 Ваш компьютер Сервер Идентификация основных форм кэолде китщПрроеинтс нояот йкир псыочтчииттиыы всвао феотобсрщяме сан тсиеея рH вTеMрLа или ActiAvпeXпл(cid:31)кеотм понент мобильного кода 87 Макроязыки: Visual Basic for Applications 88 Мобильный код, содержа(cid:26) щийся на Web(cid:26)сервере JavaScript 94 VBScript 98 Java-апплеты 101 ActiveX 105 Почтовые вложения и загруженные исполняемые файлы 109 Защита от атак, использующих мобильный код 113 Приложения, обеспечивающие безопасность 113 Web-инструменты 118 Резюме 120 Содержание 7 Конспекты 121 Часто задаваемые вопросы 122 Инструментальные Глава 4. Уязвимые CGI(cid:13)cценарии 123 средства… Введение 124 Остерегайтесь ввода данных Что такое CGI-сценарий пользователем: и для чего он применяется 124 CGI(cid:26)сценарии и программы Типовые использования CGI-сценариев 127 обычно применяются, когда Когда следует обращаться к CGI 131 код разрешает пользователь(cid:26) ский ввод, но часто данные, Проблемы хостинга CGI-сценария 132 которые предлагает пользо(cid:26) Взлом слабых CGI-сценариев 133 ватель, не проверяются. Кон(cid:26) троль информации, введен(cid:26) Как создавать надежные CGI-сценарии 135 ной пользователем, значи(cid:26) Команда индексного поиска 138 тельно сокращает шансы ха(cid:26) кера на взлом вашей системы CGI-упаковщики 139 с помощью CGI(cid:26)сценария. Языки для создания CGI-сценариев 143 Командный процессор UNIX 144 Perl 145 C/C ++ 145 Visual Basic 146 Преимущества использования CGI-сценариев 146 Правила создания безопасных CGI-сценариев 147 Хранение CGI-сценариев 151 Резюме 154 Конспекты 154 Часто задаваемые вопросы 157 Ознакомьтесь Глава 5. Методы и инструменты досконально хакинга 159 с технологиями хакеров: Введение 160 Цели хакера 161 Вопрос: Что я должен де(cid:26) лать, обнаружив «черный Минимизация количества предупреждений 162 ход» в своем коде? Расширение доступа 163 Ответ: Сначала нужно опре(cid:26) делить, действительно ли Убытки, убытки, убытки 166 это «черный ход». Иногда Поменяться ролями 168 некоторые части кода не имеют никаких аутентифи(cid:26) Пять стадий взлома 169 кационных данных и могут выполнять значимые опера(cid:26) Создание схемы атаки 170 ции, но тем не менее перед Составление плана реализации атаки 172 8 Защита от хакеров Web(cid:13)приложений их вызовом обеспечивается Определение точки входа 173 должная аутентификация. Длительный и продолжающийся доступ 174 Если при тщательном анали(cid:26) зе выявилось, что это «чер(cid:26) Атака 175 ный ход», пригласите со(cid:26) трудника отдела безопаснос(cid:26) Социотехника 177 ти, знающего данный язык Критичная информация 177 программирования, и прове(cid:26) дите аудит кода. Если со(cid:26) Атака «черного хода» 184 трудник решит, что это «чер(cid:26) ный ход», то следует выяс(cid:26) Закодированный пароль «черного хода» 184 нить, был ли он создан пред(cid:26) Эксплуатация слабостей кода намеренно или случайно. или среды программирования 186 Продаваемые инструментальные средства 187 Hex-редакторы 187 Отладчики 189 Обратные ассемблеры 190 Резюме 193 Конспекты 193 Часто задаваемые вопросы 196 Как проводить Глава 6. Аудит и обратная проверка эффективную кода 199 трассировку выполнения Введение 200 программ: Эффективное трассирование программы 200 (cid:132)(cid:132)(cid:132)(cid:132)(cid:132) Трассировка выполнения Аудит и проверка программы от начала до выбранных языков программирования 203 конца занимает слишком много времени. Проверка языка Java 204 (cid:132)(cid:132)(cid:132)(cid:132)(cid:132) Вам удастся сэкономить Проверка языка JSP 204 время, если вместо этого вы займетесь непосред(cid:26) Проверка языка ASP 204 ственно разрешением из(cid:26) вестных проблем. Проверка языка SSI 205 (cid:132)(cid:132)(cid:132)(cid:132)(cid:132) Такой подход оставляет Проверка языка Python 205 в стороне логику обработ(cid:26) ки приложений. Проверка языка TCL 205 Проверка языка Perl 206 Проверка языка PHP 206 Проверка языка C/C++ 206 Проверка языка ColdFusion 207 Поиск уязвимостей 207 Поиск переполнения буфера 208 Получение данных от пользователя 208 Контроль пользовательского вывода 212 Содержание 9 Контроль доступа/взаимодействия в файловой системе 216 Контроль внешней программы и выполнения кода 219 Проверка языка SQL/запросов к базе данных 221 Контроль организации сети и коммуникационных потоков 224 Обобщение полученной информации 225 Резюме 227 Конспекты 227 Часто задаваемые вопросы 228 Рассмотрите все Глава 7. Безопасность Java(cid:13)кода 229 аспекты модели Введение 230 безопасности Java: Краткий обзор (cid:132)(cid:132)(cid:132)(cid:132)(cid:132) Загрузчики классов. (cid:132)(cid:132)(cid:132)(cid:132)(cid:132) Проверка байт(cid:26)кода. архитектуры безопасности Java 231 (cid:132)(cid:132)(cid:132)(cid:132)(cid:132) Менеджеры безопасности. Модель безопасности Java 232 (cid:132)(cid:132)(cid:132)(cid:132)(cid:132) Электронные цифровые подписи. Sandbox 234 (cid:132)(cid:132)(cid:132)(cid:132)(cid:132) Аутентификация с приме(cid:26) Как Java обеспечивает безопасность 238 нением сертификатов. (cid:132)(cid:132)(cid:132)(cid:132)(cid:132) Подпись JAR(cid:26)файлов. Загрузчики классов 239 (cid:132)(cid:132)(cid:132)(cid:132)(cid:132) Шифрование. Верификатор байт-кода 242 Защищенные Java-домены 247 Потенциальные слабости Java 256 DoS-атака и атаки снижения эффективности служб 256 Сторонние троянские атаки 259 Кодирование функциональных и безопасных Java-апплетов 260 Дайджесты сообщения 261 Цифровые подписи 264 Аутентификация 270 Безопасность JAR с применением ЭЦП 278 Шифрование 281 Рекомендации Sun Microsystems по безопасности Java 288 Резюме 291 Конспекты 292 Часто задаваемые вопросы 293 10 Защита от хакеров Web(cid:13)приложений Ущерб и защита… Глава 8. Безопасность XML 295 Отладка XSL: Введение 296 Взаимодействие таблицы Определение XML 296 с XML(cid:26)документом представ(cid:26) ляет собой довольно слож(cid:26) Логическая структура 298 ный процесс, и к сожалению, ошибки таблицы чаще всего Элементы 299 являются криптографически(cid:26) XML- и XSL/DTD-документы 302 ми. Компания Microsoft пред(cid:26) лагает XSL(cid:26)отладчик, осно(cid:26) Использование XSL-шаблонов 302 ванный на HTML, который Использование XSL-образцов 303 предназначен для выполне(cid:26) ния XSL. Вы сможете просмот(cid:26) DTD 305 реть и исходный код для его Создание Web-приложений улучшения. Отладчик XSL до(cid:26) ступен на сайте: с помощью XML 308 http://msdn.microsoft.com/ downloads/samples/internet/ Риски, связанные с XML 311 xml/sxl_debugger/default.asp. Обеспечение конфиденциальности 312 Безопасность XML 313 XML-шифрование 314 Электронная цифровая подпись XML 319 Резюме 322 Конспекты 322 Часто задаваемые вопросы 324 Разрешайте Глава 9. Создание безопасных выполнение ActiveX(cid:13) ActiveX(cid:13)компонентов компонента, опираясь для работы в Internet 325 на информацию в окне Введение 326 предупреждения: Угрозы, связанные с ActiveX 327 Как избежать типовых уязвимостей ActiveX 329 Уменьшение влияния уязвимостей ActiveX 332 Методология разработки безопасных ActiveX-компонентов 335 Настройка безопасности объектов 336 Безопасность ActiveX-компонентов 337 Подписание компонента 337 Применение Microsoft Authenticode 339 Маркировка компонента 341 Резюме 347 Конспекты 347 Часто задаваемые вопросы 349