Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Чужие Статьи (https://forum.antichat.xyz/forumdisplay.php?f=32)
-   -   Прямое введение команд в Sql сервер (https://forum.antichat.xyz/showthread.php?t=7177)

k00p3r 13.06.2005 16:27

Прямое введение команд в Sql сервер
 
Класс: Проверка правильности ввода
Название Атаки: Прямое введение команд в SQL сервер
OWASP ID : OWASP-IV-DSC-1
Цель атаки: База данных
Механизм: HTTP
Описание: Ввод SQL команд (SQL injection) - методика, которая может изменять существующий или создавать новый SQL запрос, эксплуатируя уязвимость в неправильной проверке правильности ввода подпрограмм. При вводе SQL команды становится возможным отыскать данные в базе данных и в некоторых случаях в операционной системе.
Анализ: Типичные Web приложения хранят данные в базе данных. Это позволяет динамически формировать страницы или использовать сохраненные данные для формирования страницы в зависимости от пользователя или процесса. Последовательный Язык запросов или SQL - язык высокого уровня, имеет обыкновение связываться с базами данных. Web приложения часто запрашивают вводимые пользователем данные (динамические), которые объединяются со статическими параметрами (типа баз данных и таблиц). Эти данные используются для формирования запроса, чтобы получить соответствующие данные от базы данных, которые возвращаются приложению для обработки. Приложения, которые не проверяют правильность или не санируют ввод пользователя, могут быть потенциально уязвимы следующими методами:

Изменение SQL значений.

Связывание дополнительных SQL инструкций.

Добавления вызова функции или сохраненной процедуры к SQL инструкции.

Приведение типа и связывание найденных данных.

Пример:

1. Изменение SQL значений:
Оригинкальный Mysql запрос:
UPDATE usertable SET pwd='$INPUT[pwd]' WHERE uid='$INPUT[uid]';

Измененный HTTP запрос:
http://www.none.to/script?pwd=ngomo&uid=1'+or+uid+like'%25admin%25';--%00

2.Связывание дополнительных SQL инструкций
Оригинкальный PostgreSql запрос:
SELECT id,name FROM products WHERE id LIKE '%$INPUT[prod]%';

Измененный HTTP запрос:
http://www.none.to/script?0';insert+into+pg_shadow+usename+values+('h oschi');--


3. Добавления вызова функции или сохраненной процедуры к SQL инструкции.
Original MSSQL-Query:
SELECT id,name FROM products WHERE id LIKE '%$INPUT[prod]%';

Deformed HTTP-Request:
http://www.none.to/script?0';EXEC+master..xp_cmdshell(cmd.exe+/c);--


4. Приведение типа и связывание найденных данных.
Original DB2-Query:
SELECT id,t_nr,x_nr,i_name,last_update,size FROM p_table WHERE size = '$INPUT[size]';

Deformed HTTP-Request
http://www.none.to/script?size=0'+union+select+'1','1','1',concat(una me||'-'||passwd)+as+i_name+'1'+'1'+from+usertable+where+ uname+like+'25



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

1. MySQL

Поддерживает ' INTO OUTFILE '

Выполняется часто как "root"

Большинство модулей и библиотек не поддерживают множественные инструкции.


2. Oracle

Поддерживает Subselects

Поддерживает UNION

Поставляется с множеством сохраненных процедур (utf_file!)

Не позволяет множественные инструкции


3. DB2

Поддерживает Subselects

Поддерживает UNION

Сохраненные процедуры

Не позволяет множественные инструкции


4. Postgres

Поддерживает COPY (если superusermode)

Поддерживает Subselects

Поддерживает UNION

Сохраненные процедуры

Возможны множественные инструкции.


5. MS SQL

Поддерживает Subselects

Поддерживает UNION

Сохраненные процедуры

Возможны множественные инструкции.

Поставляется с множеством опасных сохраненных процедур (xp_cmdshell, sp_adduser)

Воздействие: Прямое введение команд в SQL сервер в обход проверки правильности ввода.
меры противодействия:

Никогда не пропускайте ввод пользователя без контроля типов к запросу базы данных.


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


Проверяйте, имеет ли данный ввод, ожидаемый тип данных.


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

Большинство основных библиотек базы данных, модулей и классов обеспечивают программиста нормальной работой и механизмом защиты.

KEZ 13.06.2005 21:05

ЦИТАТА выполняется часто как root

хехе несогласен


Время: 18:36