Spawning a TTY Shell

Spawning a TTY Shell

Сергей Зыбнев


Неинтерактивная оболочка tty-shell

Если у вас не tty-shell, то некоторые команды и вещи вы не сможете выполнить. Это может произойти, если вы загружаете обратные оболочки на веб-сервер, так что оболочка, которую вы получаете, создается пользователем www-data или подобным. Эти пользователи не должны иметь оболочки, так как они не взаимодействуют с системой так, как это делают люди.


Поэтому, если у вас нет tty-shell, вы не сможете запустить su, sudo, например. Это может раздражать, если вам удалось получить пароль root, но вы не можете им воспользоваться.


В любом случае, если у вас есть одна из вышеперечисленных оболочек, вы можете обновить ее до tty-shell, используя следующие методы:

Использовать python

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

Использовать python3

python3 -c 'import pty; pty.spawn("/bin/sh")'

Echo

echo 'os.system('/bin/bash')'

sh

/bin/sh -i

bash

/bin/bash -i

Perl

perl -e 'exec "/bin/sh";'

Изнутри VI №1

:!bash

Изнутри VI №2

:set shell=/bin/bash:shell

Изнутри Nano

CTRL+R CTRL+X reset; /bin/bash 1>&0 2>&0

Изнутри IRB (interactive ruby)

exec "/bin/sh"

Typescript

script -qc /bin/bash /dev/null

Lua

os.execute('/bin/sh')


Интерактивная оболочка tty-shell

Если вам удалось перейти на неинтерактивный tty-shell, у вас все равно будет ограниченная оболочка. Вы не сможете использовать стрелки вверх и вниз, у вас не будет завершающей вкладки. Это может быть очень неприятно, если вы останетесь в этой оболочке надолго. Это также может быть более рискованно, если выполнение застрянет, вы не сможете использовать Ctr-C или Ctr-Z, не убив свою сессию. Однако это можно исправить с помощью socat. Следуйте этим инструкциям.

https://github.com/cornerpirate/socat-shell


Дополнительная информация:

http://unix.stackexchange.com/questions/122616/why-do-i-need-a-tty-to-run-sudo-if-i-can-sudo-without-a-password

http://netsec.ws/?p=337

http://pentestmonkey.net/blog/post-exploitation-without-a-tty




Report Page