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://pentestmonkey.net/blog/post-exploitation-without-a-tty