🐚TTY Shells
Nota: Este tipo de técnicas son muy invasivas, ya que vamos a ganar acceso a distintos sistemas, por lo que no podemos utilizar estas técnicas sin un consentimiento o aprobación por parte del objetivo
Generación de Shells interactivas
Al final de la última sección, establecimos una sesión de shell con el objetivo. Inicialmente, nuestro shell era limitado (a veces denominado jail shell), por lo que usamos python para generar un shell TTY bourne que nos diera acceso a más comandos y un mensaje desde el que trabajar. Esta será probablemente una situación en la que nos encontraremos cada vez más a medida que practicamos en labs virtuales y en el mundo real.
Puede haber ocasiones en las que aterricemos en un sistema con un shell limitado y Python no esté instalado. En estos casos, es bueno saber que podríamos usar varios métodos diferentes para generar un shell interactivo. Examinemos algunos de ellos.
Sepa que cada vez que veamos /bin/sh
o /bin/bash
, esto también podría reemplazarse con el binario asociado con el lenguaje del intérprete de shell presente en ese sistema. Con la mayoría de los sistemas Linux, es probable que encontremos bourne shell
( /bin/sh
) y bourne again shell
( /bin/bash
) presentes en el sistema de forma nativa.
Python
Si tenemos python instalado en nuestro sistema podemos ejecutar el siguiente comando para tener una shell interactiva:
/bin/sh -i
Este comando ejecutará el intérprete de shell especificado en la ruta en modo interactivo ( -i
).
Perl
Si el lenguaje de programación Perl está presente en el sistema, estos comandos ejecutarán el intérprete de shell especificado.
El comando de arriba debe ejecutarse desde un script.
Ruby
Si el lenguaje de programación Ruby está presente en el sistema, este comando ejecutará el intérprete de shell especificado:
El comando de arriba debe ejecutarse desde un script.
Lua
Si el lenguaje de programación Lua está presente en el sistema, podemos usar el método os.execute
para ejecutar el intérprete de shell especificado usando el comando completo a continuación:
El comando de arriba debe ejecutarse desde un script.
AWK
AWK es un lenguaje de procesamiento y escaneo de patrones similar a C presente en la mayoría de los sistemas basados en UNIX/Linux, ampliamente utilizado por desarrolladores y administradores de sistemas para generar informes. También se puede utilizar para generar un caparazón interactivo. Esto se muestra en el breve script awk a continuación:
Find
Find es un comando presente en la mayoría de los sistemas Unix/Linux y se utiliza ampliamente para buscar y revisar archivos y directorios utilizando varios criterios. También se puede utilizar para ejecutar aplicaciones e invocar un intérprete de shell.
Este uso del comando buscar busca cualquier archivo enumerado después de la opción -name
, luego ejecuta awk
( /bin/awk
) y ejecuta el mismo script que analizamos en la sección awk para ejecutar un intérprete de shell.
Usando Exec para iniciar un Shell
Este uso del comando de búsqueda utiliza la opción de ejecución ( -exec
) para iniciar el intérprete de shell directamente. Si find
no puede encontrar el archivo especificado, no se obtendrá ningún shell.
VIM
Sí, podemos configurar el idioma del intérprete de shell desde el popular editor de texto basado en línea de comandos VIM
. Esta es una situación muy específica en la que nos encontraríamos si tuviéramos que utilizar este método, pero es bueno saberlo por si acaso.
Vim Escape
Consideraciones sobre permisos de ejecución
Además de conocer todas las opciones enumeradas anteriormente, debemos tener en cuenta los permisos que tenemos con la cuenta de sesión de shell. Siempre podemos intentar ejecutar este comando para enumerar las propiedades del archivo y los permisos que tiene nuestra cuenta sobre cualquier archivo o binario determinado:
Permisos
También podemos intentar ejecutar este comando para verificar qué permisos sudo
tiene la cuenta a la que llegamos:
sudo-l
El comando sudo -l
anterior necesitará un shell interactivo estable para ejecutarse. Considerar los permisos no solo nos permitirá ver qué comandos podemos ejecutar, sino que también puede comenzar a darnos una idea de los vectores potenciales que nos permitirán escalar privilegios.
Última actualización