Взлом баз данных, часть 1: начало работы с терминами и технологиями

Published March 17, 2020 • 1 min read

Это первая часть новой серии, которую я запускаю здесь на Hackers Arise, под названием «Взлом баз данных». Мы начнем с основ и перейдем к более продвинутым методам взлома баз данных.

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

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

Например, номера кредитных карт могут продаваться по цене от 5 до 50 долларов в зависимости от качества (золотые и платиновые карты стоят больше, чем обычные карты) и их кредитного лимита. Таким образом, взлом, который использует 200 000 номеров кредитных карт, стоит от 1 до 10 миллионов долларов!

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

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

Итак, давайте начнем, чтобы мы могли быстро приступить к взлому БД!

Что такое база данных?

База данных - это система программного обеспечения для хранения и извлечения информации в структурированном формате. Ранние базы данных были плоскими файлами, вроде большого файла Excel. Поскольку базы данных становились все больше и больше, эта простая структура оказалась неэффективной.

В результате ученый из IBM, доктор Кодд, разработал структуру, известную как модель реляционной базы данных. Именно эту модель сейчас используют около 97% всех баз данных, и это включает в себя все основные компании-разработчики программного обеспечения.

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

Структура базы данных

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

Основные поставщики на рынке баз данных

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

Другими крупными поставщиками являются Sybase, SAS, PostgreSQL (с открытым исходным кодом) и многие другие. Как правило, как и любой хак, нам нужно провести тщательное исследование, чтобы определить, какое программное обеспечение и версия успешны, поскольку большинство взломов баз данных зависят от поставщика.

Язык структурированных запросов (SQL)

Когда IBM разработала ранние базы данных, они также разработали язык программирования для управления этими данными и манипулирования ими. Они называли его «язык структурированных запросов» или, как его обычно называют, SQL.

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

Более того, такие слова, как UPDATE , INSERT и DROP, означают в SQL именно то, что вы ожидаете от них.

SQL не требователен к синтаксису, но требователен к логике. Хотя наилучшей практикой является КАПИТАЛИЗАЦИЯ всех ключевых слов (SELECT, FROM, WHERE), это не обязательно. Кроме того, пустое пространство игнорируется. Однако все, кроме Microsoft, требуют, чтобы оператор SQL заканчивался точкой с запятой (;). На продуктах Microsoft это необязательно.

SQL стандартизирован ANSI, но эта стандартизация включает только около 80% языка или ядра SQL. Издатели программного обеспечения могут добавлять дополнительные команды и функции, которые не являются частью стандарта. Иногда это может затруднить перенос кода SQL между СУБД. Кроме того, крайне важно провести хорошую разведку базы данных, чтобы узнать производителя и версию перед атакой, поскольку атаки часто зависят от производителя и версии.

Каждую из СУБД можно использовать из командной строки, но каждая имеет свой собственный графический интерфейс. Недавно MySQL выпустил новый графический интерфейс под названием Workbench, как показано в предыдущем разделе.

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

Базовый SQL-запрос

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

Основная структура запроса выглядит следующим образом:

SELECT <columns>

FROM <table>

WHERE <conditions>

Это утверждение гласит: «дайте мне данные в столбцах, перечисленных в операторе SELECT из таблицы, которая идет после ключевого слова FROM, но дайте мне только те строки, которые соответствуют условиям, которые следуют после ключевого слова WHERE».

Таким образом, если мы хотим получить имя, фамилию, имя пользователя и пароль из таблицы персонала для сотрудников с фамилией «Хиллер», мы могли бы создать такое утверждение:

SELECT first_name, last_name, username, password

FROM staff

WHERE last_name = 'Hillyer";

Как вы можете видеть на скриншоте выше, мы извлекли запись Майка Хиллера из таблицы персонала с его именем пользователя и паролем (пароль фактически является хэшем его пароля).

SQL-инъекция

SQL-инъекция является наиболее распространенной атакой на базу данных и, вероятно, несет ответственность за самый большой долларовый объем потерь от киберпреступности и передовой постоянной угрозы (APT).

В основном это включает размещение команд SQL в формах данных веб-страниц, которые подключаются к базе данных. Эти формы затем отправляют эти команды SQL обратно в базу данных, и база данных либо аутентифицирует пользователя (да, аутентификация является функцией базы данных), либо отдает целевые данные.

В будущих уроках мы потратим немало времени, используя инструменты SQL-инъекций и выполняя атаки SQL-инъекций.

Другие уязвимости

Помимо того, что мы покажем вам, как сделать SQL-инъекцию, мы рассмотрим некоторые другие уязвимости в базах данных. Они включают аутентификацию, использование базы данных для взлома операционной системы и ряд других.

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

Подпишись на рассылку