Статьи

Протидія атакам, що використовують SQL-ін'єкції

  1. Суть атаки на основі SQL-ін'єкції
  2. Малюнок 1. Ілюстрація простий атаки з використанням SQL-ін'єкції
  3. Демонстрація атаки з використанням SQL-ін'єкції
  4. Малюнок 2. Веб-сайту банку Altoro Mutual: початкова сторінка
  5. Малюнок 3. Вивчення вихідного коду сторінки за допомогою плагіна Firebug
  6. Малюнок 4. Повідомлення про помилку при введенні символу ( ') в поле Password
  7. Малюнок 5. Повідомлення про помилку після вставки SQL-коду в поле Username
  8. тестування вразливостей
  9. Установка продукту Security AppScan Standard
  10. Малюнок 6. Вибір потрібної мови установки
  11. Малюнок 7. Ліцензійна угода про використання програмного забезпечення
  12. Малюнок 8. Завершення установки
  13. Конфігурація продукту Security AppScan Standard і запуск процедури сканування
  14. Малюнок 9. Спливаюче вікно Security AppScan Standard
  15. Малюнок 10. Створення процедури сканування
  16. Малюнок 11. Вікно Welcome to the Configuration Wizard
  17. Малюнок 12. Панель URL and Servers
  18. Малюнок 13. Панель Login Management
  19. Малюнок 14. Панель Test Policy
  20. Малюнок 15. Панель Complete
  21. Малюнок 16. Вікно Scan Expert
  22. Малюнок 17. Хід виконання сканування
  23. Малюнок 18. Виявлені проблеми типу SQL Injection
  24. висновок
  25. Ресурси для скачування

Захистіть свої сайти від широко розповсюджених експлойтів

Як правило, атаки з використанням SQL-ін'єкції досить прості, тому дивно, що вони до цих пір залишаються одним з найбільш поширених і найбільш небезпечних видів атак, доступних комп'ютерним хакерам. Список жертв цих атак практично збігається з переліком найбільших Інтернет-компаній. Жертвами цього добре відомого експлойта ставали навіть самі захищені веб-сайти, в тому числі сайти LinkedIn, Yahoo !, ФБР і НАСА. Один з наймасштабніших випадків застосування SQL-ін'єкції мав місце в 2011 році на веб-сайті Sony PlayStation Network. За допомогою SQL-ін'єкції зломщики отримали доступ до 77 мільйонам облікових записів користувачів (і до супутніх особистих даних). В результаті одного лише простою через цю атаки компанія Sony недоотримала доходів на мільйони доларів. Сукупний збиток від атак з використанням SQL-ін'єкцій на веб-сайти, серед яких сайти великих банків, сайти соціальних мереж і т. Д., Обчислюється мільярдами доларів США.

Суть атаки на основі SQL-ін'єкції

Розглянемо просту атаку з використанням SQL-ін'єкції, щоб зрозуміти принципи її роботи. Цей тип атакуючого експлойта маніпулює запитом до бази даних на основі введених користувачем даних із застосуванням некоректно фільтровану escape-символів.

на Мал. 1 показана проста атака з використанням SQL-ін'єкції. З точки зору архітектури користувач при посередництві веб-клієнта взаємодіє з HTTP фронтенда веб-сервера, який, в свою чергу, взаємодіє з бекенд у вигляді SQL-сервера. У ситуації входу користувача в систему цей фронтенд веб-сервера застосовує надану користувачем інформацію при побудові SQL-запиту. Як правило, захищений веб-сервер вимагає від кожного користувача, щоб він аутентифицироваться себе в системі, представивши ім'я користувача і пароль. Зазвичай веб-сервер виконує наступну SQL-операцію (в якій uname і pword є вхідними змінними):

select * from Users where userid = 'uname' AND password = 'pword';

Ввівши в цю веб-форму певним чином підібрану інформацію, зловмисник може обійти наміри розробника і модифікувати виконуваний запит. У прикладі на Мал. 1 я змінив умови запиту, щоб запросити всі записи. Для цього я використовував вираз OR (яке завжди має значення true) і за допомогою коментаря деактивував перевірку пароля.

Малюнок 1. Ілюстрація простий атаки з використанням SQL-ін'єкції
Захистіть свої сайти від широко розповсюджених експлойтів   Як правило, атаки з використанням SQL-ін'єкції досить прості, тому дивно, що вони до цих пір залишаються одним з найбільш поширених і найбільш небезпечних видів атак, доступних комп'ютерним хакерам

Цей простий приклад дозволяє побачити, як дані, що вводяться в форму на веб-сторінці, здатні експлуатувати уразливість при обміні з внутрішньою системою у вигляді SQL-бази даних. Результатом виконання показаної вище операції є список всіх записів, які відповідають моєму висловом, т. Е. База даних всіх користувачів. Тепер подивимося, як SQL-ін'єкція експлуатує уразливість веб-сайту, щоб побачити роботу цього механізму в реальних умовах.

Демонстрація атаки з використанням SQL-ін'єкції

Як показано на Мал. 1 , SQL-ін'єкція використовує введені користувачем некоректні дані для отримання дозволу на пряму взаємодію з внутрішньою базою даних. Тепер проведемо експеримент на веб-сервері. Як майданчик для проведення демонстраційного тестування ми будемо використовувати веб-сайт вигаданого банку Altoro Mutual (http://demo.testfire.net). Банк застосовує виробничу версію веб-сервера, яка має природні уразливості.

Для початку відкрийте в своєму веб-браузері цей цільовий сайт. Ви побачите сторінку вітання, показану на Мал. 2 . У правій частині верхнього рядка знаходиться посилання Sign In, яка є нашою метою в цьому прикладі. При натисканні на це посилання ви потрапляєте на сторінку входу в систему.

Малюнок 2. Веб-сайту банку Altoro Mutual: початкова сторінка

На сторінці входу в систему ( Мал. 3 ) За допомогою плагіна Firebug браузера Mozilla Firefox можна побачити, що веб-сайт виконує валідацію полів за допомогою JavaScript-функції confirminput.

Малюнок 3. Вивчення вихідного коду сторінки за допомогою плагіна Firebug

При спробі ввести прогалини в будь-якому з цих полів з'являється повідомлення про неприпустимість використання прогалин для полів. Опрацюємо цю ідею більш детально. Спробуйте ввести в поле пароля довільне ім'я користувача і спеціальний символ, щоб побачити реакцію програми. В даному випадку (див. Мал. 4 ), Я ввів тестове ім'я користувача (donald) і пароль, що складається з символу ( ').

Малюнок 4. Повідомлення про помилку при введенні символу ( ') в поле Password

Замість короткого повідомлення про некоректне поєднанні імені користувача та пароля веб-сервер великодушно надає детальну інформацію про SQL-запиті. Зокрема, використання символу ( ') порушило синтаксис запиту для параметра password до внутрішньої бази даних. Ви можете побачити помилку в конструкції WHERE, яка показана в наступному SQL-запиті:

query = SELECT User FROM Users WHERE Username = 'donald' AND Password = '' '

Ви можете скористатися цим знанням, щоб оцінити уразливість цього процесу. У мові SQL символи (-) служать ознакою коментаря. Ознака коментаря дає вказівку SQL-базі даних проігнорувати іншу частину поточної рядки.

З метою успішного виконання запиту без знання пароля можна спробувати використовувати SQL-коментар для відкидання фрагмента запиту - а саме, фрагмента з паролем. З попереднього прикладу ми знаємо, що введення символу ( ') порушив запит. З урахуванням цього змініть запит, вставивши певний SQL-код в поле Username. В даному випадку я ввів don '- в поле Username, а потім довільну інформацію в поле Password. В результаті веб-сервер видав повідомлення про помилку, показане на Мал. 5 .

Малюнок 5. Повідомлення про помилку після вставки SQL-коду в поле Username

Замість того щоб викликати виключення (як я зробив на Мал. 4 ), Тепер я змінюю запит таким чином, щоб він став на заваді намірам розробника. Тепер усередині системи цей запит буде виглядати наступним чином:

query = SELECT User FROM Users WHERE Username = 'don' - 'AND Password =' ​​* '

Як показано в цьому прикладі, просте додавання символів ( '-) в поле Username зробило фрагмент запиту з паролем несуттєвим, тим не менш, цей запит передається в базу даних як успішний. Спираючись на цю інформацію, припустимо, що в системі є адміністративна обліковий запис з ім'ям admin. Якщо ви виконаєте цю ж операцію, але з ім'ям користувача admin '-, то зможете успішно увійти в систему по цей обліковий запис і побачити своє ім'я користувача admin, знайти інші відомості про обліковий запис admin і використовувати обліковий запис admin в якості власного облікового запису.

Отже, за допомогою скромних пізнань в області SQL ви успішно обійшли внутрішню перевірку на помилки незахищеного веб-сайту і аутентифицироваться себе в якості його адміністратора без знання відповідного пароля. Якщо обліковий запис admin не існує (або недоступна ззовні), ми можемо отримати доступ до першої облікового запису в таблиці Users за допомогою трохи ускладненого імені користувача. В цьому випадку ми змінимо запит таким чином, щоб надається умова завжди мало значення true. Цей результат досягається введенням імені користувача виду 'OR 1 = 1--. Хоча ця вразливість і не надасть вам привілеїв адміністратора, вона забезпечить більш глибокий доступ до веб-сайту і можливість пошуку подальших вразливостей.

тестування вразливостей

Ознайомча версія продукту AppScan Standard

Ознайомча версія продукту AppScan Standard

IBM Security AppScan - передовий пакет засобів для тестування безпеки додатків, що забезпечує керування тестуванням вразливостей на всьому протязі життєвого циклу розробки програмного забезпечення. IBM Security AppScan автоматизує оцінку вразливостей і сканування / тестування веб-додатків на наявність всіх широко поширених вразливостей, включаючи SQL-ін'єкції, міжсайтовий скриптинг, переповнення буфера, а також вразливостей в нових flash / flex-додатках і додатках Web 2.0.

Рішення AppScan охоплює всі уразливості з переліку Top 10 організації OWASP на 2013 рік. Наше рішення підтримує стандартний галузевої протокол TLS 1.2 (Transport Layer Security), а також відповідає стандарту FIPS 140-2 (Federal Information Publication Standard) і стандарту SP 800-131a (Special Publication) організації NIST (National Institute of Standards and Technology).

завантажте ознайомчу версію продукту AppScan Standard .

У попередньому прикладі була проілюстрована проста атака на виробничий веб-сервер. На жаль, ця проста атака є лише однією з багатьох можливих. Тепер я покажу, яким чином можна легко здійснити перевірку додатки на наявність вразливостей за допомогою продукту IBM® Security AppScan® Standard.

Установка продукту Security AppScan Standard

Перший крок установки продукту Security AppScan Standard складається в його завантаженні з веб-сайту IBM developerWorks (відповідна посилання наведена в розділі ресурси ). Базові інструкції по завантаженню виглядають наступним чином.

  1. У використовуваному вами браузері з підтримкою Java ™ перейдіть на веб-сайт Security AppScan.
  2. На вкладці Evaluate натисніть Download Now.
  3. Увійдіть в систему або процес реєстрації.
  4. На сторінці Security Systems Products виберіть IBM Security AppScan Standard V8.8 Windows Multilingual evaluation, а потім натисніть Download Now.

    Відкриється вікно аплета, яке може вимагати від вас дозвіл на виконання даного аплету.

  5. При першому запуску утиліти IBM Download Director вам буде запропоновано вибрати місце розташування за замовчуванням для завантаження. Натисніть OK, щоб підтвердити місце розташування за замовчуванням.
  6. Після завершення завантаження ви побачите вікно, з якого можна запустити завантажений файл. Натисніть Yes.
  7. Виберіть мову установки (див. Мал. 6 ).
    Малюнок 6. Вибір потрібної мови установки

    Додаток готується до установки, розпаковує образ і починає процес.

  8. Прийміть умови ліцензійної угоди (див. Мал. 7 ) І натисніть Next.
    Малюнок 7. Ліцензійна угода про використання програмного забезпечення
  9. У наступному вікні натисніть Install і використовуйте розташування за замовчуванням.

    Розпочнеться повна установка програмного забезпечення.

  10. Перед завершенням установки вам буде запропоновано завантажити додатковий компонент для сканування веб-сервісів. У цьому прикладі натисніть No.

    Наступний крок може зажадати декількох хвилин на установку ліцензії, після чого ви побачите вікно завершення ( Мал. 8 ).

    Малюнок 8. Завершення установки
  11. Для завершення установки натисніть Finish.

Примітка: Вам також знадобиться пакет Microsoft® .NET Framework 4.5 (відповідна посилання наведена в розділі ресурси ).

Після завершення установки наступний крок полягає в конфігурації продукту Security AppScan Standard і запуску процедури сканування.

Конфігурація продукту Security AppScan Standard і запуск процедури сканування

Після установки продукту Security AppScan Standard проведіть його конфігурація, а потім розпочніть сканування цільового веб-сайту.

Для запуску продукту Security AppScan Standard натисніть на його піктограму на своєму робочому столі або виберіть Start> IBM Security AppScan Standard). Ви побачите екран додаток зі спливаючих вікном в центрі (див. Мал. 9 ). Я рекомендую спочатку натиснути на посилання Getting Started (PDF), щоб завантажити на свій комп'ютер вступне керівництво. Це прекрасний довідник для знайомства з додатком Security AppScan, його базовими принципами, його конфигурированием, процесом проведення сканування і порядком інтерпретації отриманих результатів. Після завантаження цього документа переходите до наступного етапу.

Малюнок 9. Спливаюче вікно Security AppScan Standard

Щоб запустити сканування, натисніть на Create New Scan у спливаючому вікні, показаному на рис. 9. Після натискання на цю посилання відкриється вікно New Scan (див. Мал. 10 ). Проведіть сканування атакованого раніше сайту demo.testfire.net, для чого натисніть на посилання в верхньому лівому кутку під заголовком Recent Templates.

Малюнок 10. Створення процедури сканування

Ви побачите вікно майстра Configuration Wizard (див. Мал. 11 ). Опція Web Application Scan вже вибрана, тому натисніть Next для переходу до наступного етапу.

Малюнок 11. Вікно Welcome to the Configuration Wizard

З'явилася панель URL and Servers (див. Мал. 12 ). На ній зображений URL-адресу, який ви використовуєте для початку сканування, а також вже активована опція Case-Sensitive Path Залиште всі інші значення за замовчуванням і натисніть Next.

Малюнок 12. Панель URL and Servers

З'явиться панель Login Management (див. Мал. 13 ). Для параметра Login Method, залиште вже обрану опцію Recorded, що дозволить додатком Security AppScan Standard автоматично підключатися в якості користувача. Крім того, ви можете скористатися опцією Prompt, якщо ваш конкретний сайт використовує одноразовий пароль або механізм CAPTCHA. Для переходу до наступного етапу натисніть Next.

Малюнок 13. Панель Login Management

З'явиться панель Test Policy. У правій верхній частині вікна в полі Test Policy вказана опція Default, а в віконцях Send tests on login and logout pages і Clear session identifiers before testing login pages встановлені прапорці. Для переходу до наступного етапу натисніть Next.

Малюнок 14. Панель Test Policy

З'явиться панель Complete, що означає кінець конфігурації. Виберіть опцію Start a full automatic scan, а потім поставте прапорець Start Scan Expert when Scan Configuration Wizard is complete (див. Мал. 15 ). Натисніть Finish для початку сканування. У вікні Auto Save натисніть Yes і вкажіть AltoroJ в якості імені файлу сканування, а потім натисніть Save.

Малюнок 15. Панель Complete

У процесі свого виконання компонент Scan Expert заповнює основне вікно результатами (див. Мал. 16 ). Оскільки даний веб-сайт сканується на дослідницькій стадії, продукт Security AppScan Standard формує набір рекомендацій (показаний в нижній частині вікна). Ви можете залишити прапорці у цих рекомендацій, а потім, після завершення сканування, натиснути на Apply Recommendations в нижньому правому куті вікна з метою їх застосування.

Малюнок 16. Вікно Scan Expert

Після натискання на Apply Recommendations панель Scan Expert Recommendations зникає і починається сканування. У нижній частині вікна демонструється хід виконання сканування, назва поточної фази і минулий час сканування. У самій нижній частині представлена ​​інформація, що цікавить нас інформація - зокрема, 98 проблем безпеки (34 проблем високого ступеня важливості, 18 проблем середнього ступеня важливості, 31 проблем низького ступеня важливості і 15 проблем інформаційного характеру), виявлених при виконанні першої фази всього лише на 51% . Після завершення сканування (після виконання фази 1 будуть виконані фази 2 і 3) з'являться результати, показані на Мал. 17 .

Малюнок 17. Хід виконання сканування

на Мал. 17 в правому верхньому куті вікна з'явилися три піктограми. Ці три піктограми дозволяє змінити уявлення результатів: Data відповідає необроблених даних, Issues відповідає виявленим проблемам, а Tasks відповідає списку рекомендацій щодо усунення проблем. Після натискання на піктограму Issues ви побачите список проблем, які потребують усунення. Зокрема, ви побачите список проблем типу SQL Injection, виявлених продуктом Security AppScan Standard (їх загальна кількість становить 33, що істотно більше, ніж той єдиний експлойт, який я демонстрував раніше в цій статті). Ви також побачите (див. Мал. 18 ), Що після виконання всіх фаз сканування продукт Security AppScan Standard виявив 337 проблем безпеки, з яких 114 мають високу ступінь важливості.

Малюнок 18. Виявлені проблеми типу SQL Injection

Виберіть в правій частині вікна надають величезний обсяг інформації. Вкладка Advisory містить перелік ймовірних причин виявлених помилок з технічним описом кожної виявленої помилки, включаючи приклади експлойтів (в тому числі посилання на ще більш детальну інформацію). Вкладка Fix Recommendation надає додаткову інформацію для різних середовищ з метою уникнення певних ситуацій. Ці ключові засоби Security AppScan Standard надають список виявлених вразливостей, а також пропонують детальну інформацію щодо застосування експлойтів і по стратегіях їх запобігання / усунення.

висновок

У статті були показані потужні можливості продукту Security AppScan. На додаток до забезпечення кращого в своєму класі сканування вразливостей (дана стаття лише злегка торкнулася цих можливостей) продукт Security AppScan представляє масу інформації по експлойтів, щодо їх застосування і по стратегіях їх усунення. Незважаючи на те, що сьогодні веб-сайти знаходяться під постійною загрозою, інструменти, подібні Security AppScan, дозволяють істотно просунутися в справі розгортання захищених і надійних веб-додатків.

Ресурси для скачування

Схожі теми

Підпишіть мене на повідомлення до коментарів

Новости