Онлайн поддержка
Все операторы заняты. Пожалуйста, оставьте свои контакты и ваш вопрос, мы с вами свяжемся!
ВАШЕ ИМЯ
ВАШ EMAIL
СООБЩЕНИЕ
* Пожалуйста, указывайте в сообщении номер вашего заказа (если есть)

Войти в мой кабинет
Регистрация
ГОТОВЫЕ РАБОТЫ / ДИПЛОМНАЯ РАБОТА, РАЗНОЕ

Применение виртуальной машины для проведения пинтестинга

марина_прокофьева 1575 руб. КУПИТЬ ЭТУ РАБОТУ
Страниц: 63 Заказ написания работы может стоить дешевле
Оригинальность: неизвестно После покупки вы можете повысить уникальность этой работы до 80-100% с помощью сервиса
Размещено: 04.09.2022
Актуальность: Так как сейчас все данные утекают в сеть, это часто мы слышим по новостям о новых утечках паспортных данных или кто когда заказывал еду в яндекс.еда. Обычно хорошие компании чтобы предотвратить такие утечки нанимают специалистов которые проводят тест на проникновение и показывают им все уязвимости для их последующего устранения. И поэтому сейчас важно знать как правильно проводить тестирование на проникновение. Для проведения теста на проникновения будут использоваться витруальные рабочи станции , а не реальные. Если использовать те что находятся на рабочем месте то их придется отключать от общей сети и они будут не доступны для работы. Чтобы не останавливать много рабочих мест , лушче использовать одну рабочую станцию на которой будут запущены модели других рабочихз станций с помощью виртуальной машины. Таким образом, цель данной выпускной квалификационной работы является создание модели автоматизированной системы для проведения тестов на проникновение с использование виртуальных машин. Для достижения поставленной цели необходимо выполнить следующие задачи: -подготовить и настроить рабочую станцию и набор витруальных машин для моделирования реальной автоматизированной системы: - провести тест на проникновение с использованием полученной модели; - полученные уязвимости использовать при разработке рекомендаций по настройке имеющейся автоматизированной системы: - провести оценку экономической выгоды при самостоятельном тестировании на проникновение. Объектом исследования являются существующие методы проведения теста на проникновения . Предмет исследования тестирование на проникновение. Метод Исследования : стратегия тестирования функционального поведения объекта с точки зрения внешнего мира, при котором не используется знание о внутреннем устройтсве и кода внутреннего утсройства.Если посомтреть то получается это метод для тестирования в слепую не зная ничего об исходном обьекте , расскрывая его только при проведения теста с помощью специальных программ. Теоритический основой данной работы являются нормативное-правовые законфы, информационные ресурсы интернет порталов , а так же труды ученых в области тестирования направления : - Учебное пособие “Искусство тестирования на проникновениве в сеть” под авторством Рой Дэвис. - Учебное пособие “Тестирование на проникновение и безопасность” под авторством Джерарда Йохансона.
Введение

Сегодня мы все так или иначе работаем и храним файлы в цифровом виде на наишх компьютерах и в облачных хранителях. Такие данны как налоговые декларации, фотографии семьи. Используя свой телефон как навигатор мы передаем свои данные на обработку и это местоположения, даты и время всех мест, куда мы ходили.Так как все эти данные хранятся и обрабатываются на сервере , то они подвержены к краже из-за уязвимости серверов. Обычное предприятие среднего размера имеет в10 раз больше подключенных устройств, работающих в сети организации , чем сотрудников, которые используют эти устройства для выполнения повседневных бизнес­операций. Возможно, сначала данный факт не вызовет у вас тревогу, учитывая, насколько глубоко интегрированы компьютерные системы в наше общество. Уже у всех у кого есть персональный компьютер или смартфон уже давно пользуются всеми доступными интернет источниками и имеют регистрации в таких местах как: 1. Электронная почта; 2. Аккаунт в соц сети; 3. Аккаунт в youtube; 4. Аккаунт в Instagram; 5. И так харанят на телефоне минимум как два десятка комбинаций логина и пароля для всех сайтов и приложений , чтобы иметь возможность быстро пройти проверку логина и пароля и продолжить пользоваться полноценно сайтом и облачным хранилищем которые повседневно часто используются для работы. Если вы уже оплачиваете счета, покупаете продукты, бронируете номер в отеле или ищете что­нибудь в интернете, вам необходимо создать профиль учетной записи, содержащий как минимум имя пользователя, юридическое имя и адрес электронной почты. Часто вас просят предоставить дополнительную личную информацию, например такую: 1. Почтовый адрес; 2. Номер телефона; 3. Девичья фамилия матери; 4. Номер банковского счета; 5. Данные кредитной карты; И при регистрации чтение мало кто читает юридические соглашения, в которых говорится, что компании планируют делать с информацией, которую вы им предоставили при регистрации. Обычно просто и быстро пытаемся зарегистрироваться и соглашаемся с юридическими соглашениями. Чтобы уже сидеть в соцальной популярной сети или же сделать заказ нужной вещи. Ни у кого нет времени читать все эти юридеческие соглашения , особенно когда срок действия бесплатной доставки истекает всего через 10 минут.Возможно, даже более тревожным, чем частота, с которой мы раскрываем случайным интернет­компаниям нашу личную информацию, является тот факт, что большинство из нас думают что большие корпорации, с которыми мы взаимодействуем, принимают надлежащие меры предосторожности для безопасного и надежного хранения нашей конфиденциальной информации.Но это не всегда так.
Содержание

Введение 3 1 Этапы проведения теста на проникновение 4 1.1 Этапы и их определения для проведения теста на проникновеня 4 1.2 проведения теста на проникновения методикой-черного ящика черного ящика 7 1.3 Нормативно правовые акты ограничиывающие деяетельность проведения теста на проникновения 20 2 Практическое применение теста проникновения 23 2.1 подготовка рабочей станции к проведению теста на проникновение 23 2.2 Подготовка уязвимой виртуальной машины для проведения теста на проникновение 27 2.3 Проведение Теста на проникновение 29 3 Итоги проведения теста на проникновения 29 3.1 Преимущества и недостатки использования методов теста на проникновение 29 3.2 Экономическая выгода самостоятельного проведения теста на проникновение 29 Заключение 29 Список использованных источников 30
Список литературы

1. Макаренко С. И. Аудит информационной безопасности: основные этапы, концептуальные основы, классификация мероприятий // Системы управления, связи и безопасности. 2018. № 1. С. 1-29. DOI: 10.24411/2410-9916- 2018-10101. 2. Макаренко С. И. Аудит безопасности критической инфраструктуры специальными информационными воздействиями. Монография. – СПб.: Наукоемкие технологии, 2018. – 122 с. 3. Кашаев Т. Р. Алгоритмы активного аудита информационной системы на основе технологий искусственных иммунных систем. Автореф. дис. … канд. техн. наук: 05.13.19. – М., 2008. – 19 с. 4. Марков А. С., Цирлов В. Л., Барабанов А. В. Методы оценки несоответствия средств защиты информации / под ред. А.С. Маркова. – М.: Радио и связь, 2012. – 192 с. 5. Скабцов Н. Аудит безопасности информационных систем. – СПб.: Питер, 2018. – 272 с. 6. Penetration Testing. Procedures & Methodologies. – EC-Council Press, 2011. – 237 p. 7. Kennedy D., O’Gorman J., Kearns D., Aharoni M. Metasploit. The Penetration Tester’s Guide. – San Francisco: No Starch Press, 2011. – 299 p. 8. Makan K. Penetration Testing with the Bash shell. – Birmingham: Pact Publishing, 2014. – 133 p. 9. Cardwell K. Building Virtual Pentesting Labs for Advanced Penetration Testing. – Birmingham: Pact Publishing, 2016. – 518 p. 10. Краковский Ю.М., Курчинский Б.В., Лузгин А.Н. Интервальное прогнозирование интенсивности кибератак на объекты критической информационной инфраструктуры // Доклады Томского государственного университета систем управления и радиоэлектроники. 2018. Т. 21. № 1. С. 71-79. 11. Климов С. М. Имитационные модели испытаний критически важных информационных объектов в условиях компьютерных атак // Известия ЮФУ. Технические науки. 2016. № 8 (181). С. 27-36. 12. Климов С. М., Сычёв М. П. Стендовый полигон учебно- тренировочных и испытательных средств в области обеспечения информационной безопасности // Информационное противодействие угрозам терроризма. 2015. № 24. С. 206-213. 13. Петренко А. А., Петренко С. А. Киберучения: методические рекомендации ENISA // Вопросы кибербезопасности. 2015. № 3 (11). С. 2-14. 14. Бойко А. А., Дьякова А. В. Способ разработки тестовых удаленных информационно-технических воздействий на пространственно распределенные системы информационно-технических средств // Информационно-управляющие системы. 2014. № 3 (70). С. 84-92. 15. Бойко А. А., Дьякова А. В., Храмов В. Ю. Методический подход к разработке тестовых способов удаленного информационно-технического воздействия на пространственно распределенные системы информационно- технических средств // Кибернетика и высокие технологии XXI века XV Международная научно-техническая конференция. – Воронеж: НПФ «САКВОЕЕ», 2014. – С. 386-395. 16. Бойко А. А., Обущенко Е. Ю., Щеглов А. В. Особенности синтеза полного множества тестовых способов удаленного информационно- технического воздействия на пространственно распределенные системы информационно-технических средств // Вестник Воронежского государственного университета. Серия: Системный анализ и информационные технологии. 2017. № 2. С. 33-45. 17. Щеглов А. В., Храмов В. Ю. Способ разработки тестовых удаленных информационно-технических воздействий на пространственно-распределенные системы информационно-технических средств // Сборник студенческих научных работ факультета компьютерных наук ВГУ ФГБОУ ВО «Воронежский государственный университет». – Воронеж, 2016. – С. 203-210. 18. Пакулин Н. В., Шнитман В. З., Никешин А. В. Автоматизация тестирования соответствия для телекоммуникационных протоколов // Труды Института системного программирования РАН. 2014. Т. 26. № 1. С. 109-148. 19. Баранова Е. К., Худышкин А. А. Особенности анализа безопасности информационных систем методом тестирования на проникновение // Моделирование и анализ безопасности и риска в сложных системах. Труды международной научной школы МАБР - 2015. – С. 200-205. 20. Баранова Е. К., Чернова М. В. Сравнительный анализ программного инструментария для анализа и оценки рисков информационной безопасности // Проблемы информационной безопасности. Компьютерные системы. 2014. № 4. С. 160-168. 21. Бегаев А. Н., Бегаев С. Н., Федотов В. А. Тестирование на проникновение. – СПб: Университет ИТМО, 2018. – 45 с. 22. Богораз А. Г., Пескова О. Ю. Методика тестирования и оценки межсетевых экранов // Известия ЮФУ. Технические науки. 2013. № 12 (149). С. 148-156. 23. Дорофеев А. Тестирование на проникновение: демонстрация одной уязвимости или объективная оценка защищенности? // Защита информации. Инсайд. 2010. № 6 (36). С. 72-73. 24. Умницын М. Ю. Подход к полунатурному анализу защищенности информационной системы // Известия Волгоградского государственного технического университета. 2018. № 8 (218). С. 112-116. 25. Бородин М. К., Бородина П. Ю. Тестирование на проникновение средства защиты информации VGATE R2 // Региональная информатика и информационная безопасность. – СПб., 2017. – С. 264-268. 26. Полтавцева М. А., Печенкин А. И. Интеллектуальный анализ данных в системах поддержки принятия решений при тестировании на проникновение // Проблемы информационной безопасности. Компьютерные системы. 2017. № 3. С. 62-69. 27. Кадан А. М., Доронин А. К. Инфраструктурные облачные решения для задач тестирования на проникновение // Ученые записки ИСГЗ. 2016. Т. 14. № 1. С. 296-302. 28. Еременко Н. Н., Кокоулин А. Н. Исследование методов тестирования на проникновение в информационных системах // Master's Journal. 2016. № 2. С. 181-186. 29. Туманов С. А. Средства тестирования информационной системы на проникновение // Доклады Томского государственного университета систем управления и радиоэлектроники. 2015. № 2 (36). С. 73-79. 30. Кравчук А. В. Модель процесса удаленного анализа защищенности информационных систем и методы повышения его результативности // Труды СПИИРАН. 2015. № 1 (38). С. 75-93.
Отрывок из работы

1 Теоретические основы проведения теста на проникновение 1.1 Этапы и их определения для проведения теста на проникновеня Для того чтобы приступать к тесту на проникновения нужно узнать теоретическую основу и определить этапы данной работы. Можно выявить следующие основные этапы: Этап 1: сбор информации Чтобы была возможнсть понять что такое сбор данных давай те проведем аналогию , что инженеры, разработавшие корпоративную сеть, сидят с вами за одним столом и демонстрируют схему локальной сети , из которой становится понятно строение зон и подсетей, расположение компонентов и почему сеть устроена именно так. Ваша задача на этапе сбора информации в ходе теста на проникновение заключается в том, чтобы максимально приблизиться к этому уровню понимания без помощи сетевых инженеров (рис. 1.1). Чем больше информации вы получите, тем выше ваши шансы найти уязвимость в сетях . РИС.1.1 Для этого этапа нам понадобится такое программное обеспечение как: 1. SQLMAP 2. NMAP 3. NIkto Все выше перечисленные программы нужны для прослушивания пакетов и запросов сайта. С их помощью можно узнать такие данные как : 1. Нащвание и номер версии программного обеспечения сервера; 2. Текущий патчи и настройки конфигурации сервера; 3. Узнать HTTP-заголовки 4. какие механизмы аутентификации испльзует данный сервер; 5. А так же какие порты для отправки запросов и данных открыты или зарыты на стороне сервера. Этап 2: целенаправленное проникновение На втором этапе когда вы обнаружили сеть которая была найдена и имела уязвимоисти и теперь же можно начать направленное тестирование этой сети.(рис. 1.2). Теперь, когда вы определены векторы атак на уязвимости во всей сетевой среде, пришло время скомпрометировать эти хосты и начать контролировать сеть изнутри. РИС.1.2 Тут можно как раз проводить такие атаки как sql-injection,brootforce и другие смотря что доступно после первого этапа. Так же тут пригодится программное обеспечение под названием BuipSuit которое используется для всех доступных методов атак. Этап 3: постэксплуатация и повышение привилегий После того как вы смогли нужный вам метод взлома и смогли успешно его применить , то вам теперь нужно перейти к следующему этапу (рис. 1.3) . РИС.1.3 В этом этапе вам пондобится знание команд терминала и Mysql, чтобы узнать какие еще пользователи зарегистрированны на данном сервере и какие у них есть привелегии. А так же создать свою учетную запись дав ей все нужные привелегии. Этап 4: документирование Этот этап считается финальным в нем вам необходимо создать отчет(рис.1.4) о тестирование на проникновение прописав такие вещи как: 1. Какие этапы были проведены при тестирование; 2. Какие методы были использованы ; 3. Скриншоты проделанной работы; 4. Все пункты что и как происходило при тесте; 5. А так заключение какие уязвиости были найдены и каки механизмы использовались. РИС.1.4 1.2 проведения теста на проникновения методикой-черного ящика Существует множество методик тестирования сети : 1. методика OSSTMM – The Open Source Security Testing Methodology Manual; 2. методика ISSAF – Information System Security Assessment Frame- work; 3. методика OWASP – Open Web Application Security Project 4. тандарт PTES – Penetration Testing Execution Standard 5. стандарт NIST SP 800-115 – Technical Guide to Information Security Testing and Assessment 6. методика BSI – Study a Penetration Testing Model 7. методика PETA – Methodology of Information Systems Security Penetra- tion Testing До проведения практических действий нам надо ознакомится с методикой-черного ящика.В эту методику включены следующие действия : 1. Уязвимость 1: подбор пароля: доступ с ограниченными привилегиями 2. Уязвимость 2: внедрение операторов SQL 3. Уязвимость 3: выход за каталог 4. Уязвимость 4: Предсказуемое значение идентификатора сессии Так теперь мы знаем как действовать но нужно рассмотреть что все это значит, рассмотрим каждый термин по отдельности. Привелегия - Учетные записи пользователей и групп являются доверенными объектами системы. Доверенные объекты – это сущности, которым может быть предоставлен или отклонен доступ к защищаемым объектам или ресурсам системы. [3] Привилегии – это права доверенного объекта на совершение каких-либо действий по отношению ко всей системе. Под системой понимается компьютер, на котором пользователь зарегистрировался (logon). Следовательно, привилегии пользователя на одном компьютере не распространяются на другой. При каждом интерактивном или неинтерактивном входе в систему формируется новый маркер доступа, и он может содержать другой набор привилегий. При выполнении каких-либо привилегированных операций система проверяет, обладает ли пользователь соответствующей привилегией. О привилегированных операциях речь пойдет ниже, а сейчас важно отметить, что даже наличие определенной привилегии в маркере доступа не означает успешного результата проверки. Дело в том, что привилегия может находиться либо во включенном состоянии, либо в выключенном. Некоторые системные функции сами включают привилегии, если они выключены, некоторые – нет. Их непосредственное включение рассматривается в разделе «Состояние привилегии». Привилегия может быть назначена любому доверенному объекту. Ограниченные привелегия – учетная запись пользователя с помощью которой можно выполнять только определенные разрешенные ей действия. Подбор пароля – данная атака это Brute Force или же термин на русском будет звучать как атака методом перебора. Атака методом перебора - это криптоаналитическая атака, которая теоретически может быть использована для расшифровки любых зашифрованных данных (за исключением данных, зашифрованных теоретически безопасным способом). Такая атака может быть использована, когда невозможно воспользоваться другими слабостями в системе.система шифрования (если таковая существует), которая облегчила бы задачу. При подборе пароля этот метод очень быстр, когда используется для проверки всех коротких паролей, но для более длинных паролей используются другие методы, такие как атака по словарю, потому что поиск методом перебора занимает слишком много времени. Более длинные пароли, парольные фразы и ключи имеют больше возможных значений, что делает их экспоненциально более трудными для взлома, чем более короткие. Атаки методом перебора можно сделать менее эффективными, запутав кодируемые данные, затруднив злоумышленнику распознавание взломанного кода или заставив злоумышленника выполнять больше работы для проверки каждой догадки. Одним из показателей прочности системы шифрования является то, сколько времени теоретически потребуется злоумышленнику для успешной атаки методом перебора. Атаки методом перебора - это применение метода перебора, общего метода решения проблем перечисления всех кандидатов и проверки каждого из них. Ресурсы, необходимые для атаки методом перебора, растут экспоненциально с увеличением размера ключа, а не линейно. Хотя экспортные правила США исторически ограничивали длину ключа 56-битными симметричными ключами (например, стандарт шифрования данных), эти ограничения больше не действуют, поэтому современные симметричные алгоритмы обычно используют вычислительно более сильные 128- 256-битные ключи. Существует физический аргумент, что 128-битный симметричный ключ вычислительно защищен от атаки методом перебора. Так называемый предел Ландауэра, подразумеваемый законами физики, устанавливает нижний предел энергии, необходимой для выполнения вычисления kT·ln 2 на бит, стираемый в вычислении, где T- температура вычислительного устройства в кельвинах,k - постоянная Больцмана и натуральный логарифм 2составляет около 0.693. Ни одно необратимое вычислительное устройство не может использовать меньше энергии, чем это, даже в принципе. Таким образом, чтобы просто пролистать возможные значения для 128-битного симметричного ключа (игнорируя выполнение фактических вычислений для его проверки), теоретически потребуется 2128? 1 битных переворота на обычном процессоре. Если предположить, что расчет происходит вблизи комнатной температуры (? 300 К), предел фон Неймана-Ландауэра может быть применен для оценки требуемой энергии как ?1018джоулей, что эквивалентно потреблению 30 гигаватт мощности в течение одного года. Это равно 30?109Вт?365?24?3600 с = 9,46?1017 Дж или 262,7 ТВтч (около 0,1% годового мирового производства энергии). Полное фактическое вычисление - проверка каждого ключа, чтобы увидеть, было ли найдено решение, – потребляет во много раз больше этой суммы. Кроме того, это просто потребность в энергии для циклического перемещения по ключевому пространству; фактическое время, необходимое для переворачивания каждого бита, не учитывается, что, безусловно, больше 0 Однако этот аргумент предполагает, что значения регистров изменяются с помощью обычных операций set и clear, которые неизбежно генерируют энтропию. Было показано, что вычислительное оборудование может быть спроектировано так, чтобы не сталкиваться с этим теоретическим препятствием хотя таких компьютеров, как известно, не было построено. Современные графические процессоры хорошо подходят для решения повторяющихся задач, связанных с аппаратным взломом паролей По мере появления коммерческих преемников правительственных решений ASIC, также известных как пользовательские аппаратные атаки, две новые технологии доказали свою способность атаковать определенные шифры методом перебора. Одним из них является современная технология графического процессора (GPU), другой - программируемая в полевых условиях матрица ворот (FPGA) технология. Графические процессоры выигрывают от их широкой доступности и выгодного соотношения цены и производительности, ПЛИС - от их энергоэффективности за криптографическую операцию. Обе технологии пытаются перенести преимущества параллельной обработки в атаки методом перебора. В случае графических процессоров несколько сотен, в случае ПЛИС несколько тысяч процессоров, что делает их гораздо более подходящими для взлома паролей, чем обычные процессоры. Различные публикации в области криптографического анализа доказали энергоэффективность современной технологии FPGA, например, COPACOBANA Кластерный компьютер FPGA потребляет ту же энергию, что и один ПК (600 Вт), но работает как 2500 ПК для определенных алгоритмов. Ряд фирм предоставляют аппаратные решения для криптографического анализа FPGA от одной платы PCI Express FPGA до выделенных компьютеров FPGA. Шифрование WPA и WPA2 успешно подверглось атаке методом перебора, сократив рабочую нагрузку в 50 раз по сравнению с обычными процессорами и несколько сотен в случае ПЛИС. Одна доска COPACOBANA может похвастаться 6 спартанцами Xilinx – кластер состоит из 20 из них Advanced Encryption Standard (AES) позволяет использовать 256-битные ключи. Для взлома симметричного 256-битного ключа методом перебора требуется в 2128 раз больше вычислительной мощности, чем для 128-битного ключа. Один из самых быстрых суперкомпьютеров в 2019 году имеет скорость 100 петаФЛОПС, который теоретически может проверить 100 миллионов миллионов (1014) Ключи AES в секунду (при условии 1000 операций на проверку), но все равно потребуется 3,67 ? 1055 лет, чтобы исчерпать 256-битное пространство ключей. Основное предположение атаки методом перебора заключается в том, что для генерации ключей использовалось полное пространство ключей, что опирается на эффективный генератор случайных чисел, и что в алгоритме или его реализации нет дефектов. Например, ряд систем, которые первоначально считались невозможными для взлома грубой силой, тем не менее были взломаны, потому что ключевое пространство для поиска оказалось намного меньше, чем первоначально считалось, из-за отсутствия энтропии в их генераторах псевдослучайных чисел. К ним относится реализация Netscape SSL (лихо взломанный Яном Голдбергом и Дэвидом Вагнером в 1995 году) и версия OpenSSL Debian /Ubuntu, обнаруженная в 2008 году, была ошибочной. Подобное отсутствие реализованной энтропии привело к взлому кода Enigma внедрение кода SQL: Применимо к: SQL Server (все поддерживаемые версии) База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics Параллельное хранилище данных Внедрение кода SQL — это атака, во время которой вредоносный код вставляется в строки, которые позже будут переданы на экземпляр SQL Server для анализа и выполнения. Любая процедура, создающая инструкции SQL, должна рассматриваться на предмет уязвимости к внедрению кода, так как SQL Server выполняет все получаемые синтаксически правильные запросы. Даже параметризованные данные могут стать предметом манипуляций опытного злоумышленника. Принцип действия атаки путем внедрения кода SQL Основная форма атаки SQL Injection состоит в прямой вставке кода в пользовательские входные переменные, которые объединяются с командами SQL и выполняются. Менее явная атака внедряет небезопасный код в строки, предназначенные для хранения в таблице или в виде метаданных. Когда впоследствии сохраненные строки объединяются с динамической командой SQL, происходит выполнение небезопасного кода. Атака осуществляется посредством преждевременного завершения текстовой строки и присоединения к ней новой команды. Поскольку к вставленной команде перед выполнением могут быть добавлены дополнительные строки, злоумышленник заканчивает внедряемую строку меткой комментария «--». Весь последующий текст во время выполнения не учитывается. Следующий скрипт показывает простую атаку SQL Injection. Скрипт формирует SQL-запрос, выполняя объединение жестко запрограммированных строк со строкой, введенной пользователем: C#Копировать var Shipcity; ShipCity = Request.form ("ShipCity"); var sql = "select * from OrdersTable where ShipCity = '" + ShipCity + "'"; Пользователю выводится запрос на ввод названия города. Если пользователь вводит Redmond, то запрос, построенный с помощью скрипта, выглядит приблизительно так: SQLКопировать SELECT * FROM OrdersTable WHERE ShipCity = 'Redmond' Предположим, однако, что пользователь вводит следующее: SQLКопировать Redmond'; drop table OrdersTable-- В этом случае запрос, построенный скриптом, будет следующим: SQLКопировать SELECT * FROM OrdersTable WHERE ShipCity = 'Redmond';drop table OrdersTable--' Точка с запятой «;» обозначает конец одного запроса и начало другого. А последовательность двух дефисов (--) означает, что остальная часть текущей строки является комментарием и не должна обрабатываться. Если измененный код будет синтаксически правилен, то он будет выполнен сервером. Когда SQL Server будет обрабатывать эту инструкцию, SQL Server прежде всего отберет все записи в OrdersTable , где ShipCity является Redmond. Затем SQL Server удалит OrdersTable. Если вставленный код SQL синтаксически верен, искаженные данные нельзя выявить программно. Поэтому необходимо проверять правильность всех вводимых пользователями данных, а также внимательно просматривать код, выполняющий созданные с помощью SQL команды на сервере. Рекомендуемые приемы программирования описываются в следующих подразделах этого раздела. Проверка достоверности всех вводимых данных Всегда проверяйте все данные, вводимые пользователем, выполняя проверку типа, длины, формата и диапазона данных. При реализации мер предосторожности, направленных против злонамеренного ввода данных, учитывайте архитектуру и сценарии развертывания приложения. Помните, что программы, созданные для работы в безопасной среде, могут быть скопированы в небезопасную среду. Рекомендуется следующая стратегия: 1. Не делайте никаких предположений о размере, типе или содержимом данных, получаемых приложением. Например, рекомендуется оценить следующее. a. Как приложение будет вести себя, если пользователь по ошибке или по злому умыслу вставит MPEG-файл размером 10 МБ там, где приложение ожидает ввод почтового индекса? b. Как приложение будет вести себя, если в текстовое поле будет внедрена инструкция DROP TABLE ? 2. Проверьте размер и тип вводимых данных и установите соответствующие ограничения. Это поможет предотвратить преднамеренное переполнение буфера. 3. Проверяйте содержимое строковых переменных и допускайте только ожидаемые значения. Отклоняйте записи, содержащие двоичные данные, управляющие последовательности и символы комментария. Это поможет предотвратить внедрение скрипта и защитит от некоторых приемов атаки, использующих переполнение буфера. 4. При работе с XML-документами проверяйте все вводимые данные на соответствие схеме. 5. Никогда не создавайте инструкции Transact-SQL непосредственно из данных, вводимых пользователем. 6. Для проверки вводимых пользователем данных используйте хранимые процедуры. 7. В многоуровневых средах перед передачей в доверенную зону должны проверяться все данные. Данные, не прошедшие процесс проверки, следует отклонять и возвращать ошибку на предыдущий уровень. 8. Внедрите многоэтапную проверку достоверности. Меры предосторожности, предпринятые против случайных пользователей-злоумышленников, могут оказаться неэффективными против организаторов преднамеренных атак. Рекомендуется проверять данные, вводимые через пользовательский интерфейс, и далее во всех последующих точках пересечения границ доверенной зоны. Например, проверка данных в клиентском приложении может предотвратить простое внедрение скрипта. Однако если следующий уровень предполагает, что вводимые данные уже были проверены, то любой злоумышленник, которому удастся обойти клиентскую систему, сможет получить неограниченный доступ к системе. 9. Никогда не объединяйте введенные пользователем данные без проверки. Объединение строк является основной точкой входа для внедрения скрипта. 10. Не допускайте использование в полях следующих строк, из которых могут быть созданы имена файлов: AUX, CLOCK$, COM1–COM8, CON, CONFIG$, LPT1–LPT8, NUL и PRN. По возможности отклоняйте вводимые данные, содержащие следующие символы: Входной символ Значение в языке Transact-SQL ; Разделитель запросов. ' Разделитель строк символьных данных. -- Разделитель однострочного комментария. Текст после--и до конца этой строки не обрабатывается сервером. /*_ ... _*/ Разделители комментариев. Сервер не обрабатывает текст между знаками/*_ и _*/. xp_ Используется в начале имени расширенных хранимых процедур каталога, например xp_cmdshell. Использование SQL-параметров безопасных типов КоллекцияParametersв SQL Server обеспечивает проверку длины и контроль соответствия типов. Если используется коллекцияParameters , то вводимые данные обрабатываются как буквенное значение, а не исполняемый код. Дополнительное преимущество использования коллекции Parametersсостоит в том, что можно использовать принудительные проверки типа и длины данных. Если значение выходит за рамки диапазона, будет вызвано исключение. В следующем фрагменте кода демонстрируется использование коллекцииParameters: C#Копировать SqlDataAdapter myCommand = new SqlDataAdapter("AuthorLogin", conn); myCommand.SelectCommand.CommandType = CommandType.StoredProcedure; SqlParameter parm = myCommand.SelectCommand.Parameters.Add("@au_id", SqlDbType.VarChar, 11); parm.Value = Login.Text; В этом примере параметр @au_id обрабатывается как буквенное значение, а не исполняемый код. Это значение проверяется по типу и длине. Если значение @au_id не соответствует указанным ограничениям типа и длины, то будет вызвано исключение. Использование параметризованного ввода с хранимыми процедурами Хранимые процедуры могут быть подвержены атакам SQL Injection, если они используют нефильтрованные входные данные. Например, следующий код является уязвимым: C#Копировать SqlDataAdapter myCommand = new SqlDataAdapter("LoginStoredProcedure '" + Login.Text + "'", conn); Если используются хранимые процедуры, то в качестве их входных данных следует использовать параметры. Использование коллекции Parameters с динамическим SQL Если невозможно использовать хранимые процедуры, сохраняется возможность использования параметров, как показано в следующем примере кода: C#Копировать SqlDataAdapter myCommand = new SqlDataAdapter( "SELECT au_lname, au_fname FROM Authors WHERE au_id = @au_id", conn); SQLParameter parm = myCommand.SelectCommand.Parameters.Add("@au_id", SqlDbType.VarChar, 11); Parm.Value = Login.Text; Фильтрация ввода Для защиты от атак SQL injection посредством удаления escape-символов можно также использовать фильтрацию ввода. Однако этот метод защиты не является надежным в связи с тем, что проблемы может создавать большое число символов. В следующем примере производится поиск разделителей символьных строк: C#Копировать private string SafeSqlLiteral(string inputSQL) { return inputSQL.Replace("'", "''"); } Предложения LIKE Обратите внимание, что при использовании предложения LIKE подстановочные знаки по-прежнему нужно выделять escape-символами: C#Копировать s = s.Replace("[", "[[]"); s = s.Replace("%", "[%]"); s = s.Replace("_", "[_]"); Просмотр кода на предмет возможности атаки SQL Injection Необходимо просматривать все фрагменты кода, вызывающие инструкции EXECUTE, EXECили sp_executesql. Чтобы выявить процедуры, содержащие эти инструкции, можно использовать запросы, подобные следующему. Этот запрос проверяет наличие 1, 2, 3 или 4 пробелов после слов EXECUTE и EXEC. SQLКопировать SELECT object_Name(id) FROM syscomments WHERE UPPER(text) LIKE '%EXECUTE (%' OR UPPER(text) LIKE '%EXECUTE (%' OR UPPER(text) LIKE '%EXECUTE (%' OR UPPER(text) LIKE '%EXECUTE (%' OR UPPER(text) LIKE '%EXEC (%' OR UPPER(text) LIKE '%EXEC (%' OR UPPER(text) LIKE '%EXEC (%' OR UPPER(text) LIKE '%EXEC (%' OR UPPER(text) LIKE '%SP_EXECUTESQL%'; Упаковка параметров с помощью функций QUOTENAME() и REPLACE() Убедитесь, что в каждой выбранной хранимой процедуре все используемые в динамическом Transact-SQL переменные обрабатываются правильно. Данные, поступающие через входные параметры хранимой процедуры или считываемые из таблицы, должны быть помещены в функции QUOTENAME() или REPLACE(). Помните, что значение @variable, передаваемое функции QUOTENAME(), принадлежит к типу sysname и имеет ограничение длины в При использовании этого метода инструкция SET может быть исправлена следующим образом: SQLКопировать -- Before: SET @temp = N'SELECT * FROM authors WHERE au_lname =''' + @au_lname + N''''; -- After: SET @temp = N'SELECT * FROM authors WHERE au_lname = ''' + REPLACE(@au_lname,'''','''''') + N''''; Атака Injection, проводимая с помощью усечения данных Transact-SQL усекается, если оно не вмещается в буфер, назначенный для этой переменной. Если организатор атаки способен обеспечить усечение инструкции, передавая хранимой процедуре непредвиденно длинные строки, он получает возможность манипулировать результатом. Так, хранимая процедура, создаваемая с помощью следующего скрипта, уязвима для атаки Injection, проводимой методом усечения.
Условия покупки ?
Не смогли найти подходящую работу?
Вы можете заказать учебную работу от 100 рублей у наших авторов.
Оформите заказ и авторы начнут откликаться уже через 5 мин!
Служба поддержки сервиса
+7 (499) 346-70-XX
Принимаем к оплате
Способы оплаты
© «Препод24»

Все права защищены

/slider/1.jpg /slider/2.jpg /slider/3.jpg /slider/4.jpg /slider/5.jpg