Generación automática de reverse y bind shells con Shellerator

Publicado el 12 febrero 2021 por Debadastra @jdaanial

Cuando se realiza un pentest en ocasiones se localizan vulnerabilidades criticas que al explotarlas permiten generan una shell, la cual puede ser bind o reversa según sea conveniente (o posible dadas las características del sistema comprometido). Aunque habitualmente cada pentester cuenta con su propia "chuleta" de comandos o herramientas útiles para este propósito hay un proyecto interesante en GitHub llamado Shellerator que por medio de un asistente enseña comandos validos que pueden ejecutarse contra el objetivo para la generación de una shell. Dicho proyecto se encuentra desarrollado en Python3 y como muchos otros programas escritos con este lenguaje, cuenta con un fichero llamado "requirements.txt" para instalar todas las dependencias utilizando PIP.

Cuando se ejecuta el script "shellerator.py" sin ningún argumento enseña algunos listados en donde se debe seleccionar la interfaz de red, puerto y tipo de shell. Esta es una buena forma de explorar el alcance de la herramienta ya que en el último paso de este asistente tan simple se pueden ver los tipos de shells soportadas y los comandos que podría generar en función al lenguaje seleccionado.

En la imagen anterior se pueden apreciar las alternativas que ofrece la herramienta a la hora de seleccionar el tipo de lenguaje y una vez se elige uno de ellos, aparece un listado de los posibles comandos a ejecutar para generar una shell reversa. No obstante, además de dicho listado de posibles instrucciones también aparece un comando que sería el que se podría ejecutar para obtener los mismos resultados sin necesidad de usar el interprete.

Como se puede apreciar, el comando es muy sencillo y no requiere una explicación demasiado detallada ya que es auto-explicativo. Además de la opción -reverse-shell también se cuenta con -bind-shell. Todas las opciones disponibles en el script se pueden ver con "-h".

Por otro lado, hay otro detalle a tener en cuenta de la herramienta y es que si se especifica que se deben generar un listado de bind shells, a la fecha de redactar este post solamente soporta la generación el tipo "netcat" y en tal caso aparece un listado con solamente un resultado, no obstante en el caso de generar reverse shells la herramienta demuestra su utilidad enseñando varias posibilidades que en un momento dado pueden "refrescar la memoria". Por ejemplo, el siguiente comando generaría posibles reverse shells utilizando bash.

Y lo mismo se puede ver en el caso de algunos de los lenguajes de programación habituales.

Aunque anteriormente se han publicado algunos posts sobre webshells aquí, aquí y aquí, este proyecto es un script que se puede ejecutar muy rápidamente y no pide mucho, las dependencias en la mayoría de casos se encontrarán incluidas en la instalación de Python de cualquier sistema destinado a pentesting y si no es el caso, se pueden instalar en menos de un minuto utilizando PIP. Merece la pena tenerlo en cuenta si hay que generar una reverse shell utilizando una instrucción directa y no se recuerda qué comando utilizar.

Un saludo y Happy Hack!
Adastra.