Irked
Irked es una máquina bastante simple y directo que requiere conocimientos básicos de enumeración. Muestra la necesidad de escanear todos los puertos de las máquinas e investigar cualquier binario fuera de lugar que se encuentre al enumerar un sistema.

Reconnaissance
Realizaremos un reconocimiento con nmap para ver los puertos que están expuestos en la máquina Irked. Este resultado lo almacenaremos en un archivo llamado allPorts.
A través de la herramienta de extractPorts, la utilizaremos para extraer los puertos del archivo que nos generó el primer escaneo a través de Nmap. Esta herramienta nos copiará en la clipboard los puertos encontrados.
Lanzaremos scripts de reconocimiento sobre los puertos encontrados y lo exportaremos en formato oN y oX para posteriormente trabajar con ellos. En el resultado, comprobamos que se encuentran abierta una página web de Apache, varios puertos relacionados con el protocolo IRCy el servicio de SSH.
Transformaremos el archivo generado targetedXML para transformar el XML en un archivo HTML para posteriormente montar un servidor web y visualizarlo.
Accederemos a http://localhost y verificaremos el resultado en un formato más cómodo para su análisis.

Web Enumeration
Al acceder a http://10.10.10.117 comprobamos que solamente se nos muestra una página en la cual nos aparece una imagen, no logramos obtener ningún tipo de información adicional.

Initial Foothold
UnreallRCd 3.2.8.1 Exploitation - Backdoor Command Execution (CVE-2010-2075) - IRC Pentesting
El protocolo IRC (Internet Relay Chat) es uno de los primeros sistemas de chat en tiempo real que surgieron en internet. Permite que varios usuarios se conecten a un servidor y participen en canales (salas de chat) o conversaciones privadas, todo mediante texto. Aunque hoy existen otras plataformas más modernas, IRC sigue siendo muy usado por comunidades técnicas y, en ocasiones, en el mundo del hacking para coordinar acciones o intercambiar información rápidamente.
Utilizando el comando irssi -c 10.10.10.117 -p 6697, iniciamos el cliente de IRC irssi y nos conectamos al servidor ubicado en la IP 10.10.10.117, empleando el puerto 6697, el cual se utiliza generalmente para conexiones seguras mediante TLS. De esta forma, podemos unirnos a los canales de chat en tiempo real que ofrece dicho servidor.
Dentro de la interfaz de Irssi al ejecutar el comando /info, logramos obtener la información del IRC, en el cual se nos muestra la versión Unreal3.2.8.1.
Al buscar por Internet dicha versión, se nos muestra la siguiente vulnerabilidad en la cual en dicha versión dispone de un Backdoor Command Execution en el cual podríamos llegar a ejecutar comando arbitrario en el sistema. Dicha vulnerabilidad se encuentra reportada en CVE-2010-2075.
Versiones de UnrealIRCd v3.2.8.1, distribuidas en ciertos sitios espejo (mirrors) desde Noviembre de 2009 hasta Junio de 2010 contienen una modificación introducida externamente (Caballo de Troya)en la macro DEBUG3_DOLOG_SYSTEM, que permite a atacantes remotos ejecutar comandos de su elección.

Realizando una búsqueda por Internet, logramos encontrar un exploit para aprovecharnos de dicha vulnerabilidad.
Editaremos el archivo exploit.py en el cual deberemos de indicar nuestra dirección IP y el puerto donde estaremos en escucha para recibir la Reverse Shell.
Por otro lado, nos pondremos en escucha con nc para recibir la conexión.
Ejecutaremos el exploit indicando el target que es la máquina vulnerable y el puerto donde se encuentra el IRC.
Verificamos que finalmente ganamos acceso a la máquina y nos encontramos como el usuario ircd. Una vez recibida la Reverse Shell, realizaremos el tratamiento de la terminal para obtener una TTY totalmente interactiva.
Initial Access
Sted Exposed - Hidden Doc & Backup Key
Realizando una enumeración entre los directorios verificamos que en /home/djmardov/Documents/ disponemos de un archivo .backup.
Esto nos indica que se trata de la contraseña de salvoconducto, probablemente utilizada para acceder a un archivo oculto manipulado mediante técnicas de estenografía. La combinación de mayúsculas, minúsculas y patrones alfanuméricos sugiere un diseño pensado para proteger la información oculta de manera robusta.
Pensamos que quizás donde se encuentre la información oculta se sitúe en la imagen que nos aparecía en la página web http://10.10.10.117/irked.jpg.

Nos descargaremos la imagen en nuestro equipo local, verificaaremos que se trata de una imagen.
Se intenta extraer información oculta a través de steghide de la imagen irked.jpg. Durante el proceso se nos solicita el salvoconducto, y una vez ingresado correctamente, los datos extraídos se guardan en el archivo pass.txt.
Accessing via SSH with password found
Probamos de acceder con estas credenciales y con el usuario djmardov que es donde estábamos en su directorio y verificamos que finalmente logramos acceder al equipo mediante SSH. Por otro lado, logramos visualizar la flag user.txt.
Privilege Escalation
Enumeration of SUID Binaries
Realizando una enumeración del sistema para elevar nuestros privilegios, tratamos de verificar los binarios que disponen del permiso de SUID.
En el resultado obtenido, verificamos un binario un tanto inusual llamado /usr/bin/viewuser.
Verificamos que el propietario del binario es root y que se trata de un binario ELF de Linux.
Al tratar de ejecutar el binario se nos indica que no ha encontrado /tmp/listusers.
Reversing an ELF Binary via ltrace
Accederemos al directorio donde disponemos el binario y levantaremos un servidor web para compartir el binario.
Desde nuestra máquina nos descargaremos el binario de viewuser.
Al analizar la traza con ltrace, observamos lo siguiente:
Primero, se muestran mensajes informativos que indican que la aplicación está en desarrollo para establecer y probar permisos de usuario.
Ejecutamos el comando
whomediante system(), lo que nos permite ver los usuarios conectados, y esta llamada se completa sin problemas.Se intenta cambiar el ID de usuario a root con setuid(0), pero la llamada falla (retorna -1), lo que significa que la elevación de privilegios no se consigue.
Finalmente, se intenta ejecutar
/tmp/listusersmediante system(), pero el archivo no se encuentra, resultando en un error (código de salida 32512).
En resumen, nosotros vemos que, a pesar de que la aplicación intenta realizar acciones sensibles, como elevar privilegios y listar usuarios, estas funcionalidades aún no están completamente implementadas o fallan en su ejecución.
Abusing binary SUID
Primero creamos el archivo /tmp/listusers con el contenido "id", pero al listar sus permisos vemos que sólo es legible y escribible para el propietario (-rw-r--r--), sin permiso de ejecución. Luego, al ejecutar /usr/bin/viewuser, el programa imprime sus mensajes de desarrollo y, al intentar ejecutar el contenido de /tmp/listusers, falla mostrando "Permission denied" porque el archivo no es ejecutable.
Primero, otorgamos permisos de ejecución al archivo /tmp/listusers con chmod +x /tmp/listusers. Luego, al ejecutar /usr/bin/viewuser, la aplicación muestra sus mensajes de estado y, tras ello, ejecuta el comando contenido en /tmp/listusers. Con el archivo ahora ejecutable, este comando (que en este caso es id) se ejecuta correctamente, mostrando que el usuario efectivo es root (uid=0) y listando sus grupos. Esto confirma que la aplicación intenta probar la elevación de privilegios al ejecutar comandos con permisos elevados.
Modificamos el contenido de /tmp/listusers para que, al ejecutarse, se invoque una shell de Bash. Al lanzar /usr/bin/viewuser, la aplicación lee ese archivo y ejecuta /bin/bash, lo que nos da una shell con privilegios elevados. Desde allí, comprobamos con whoami que efectivamente somos root. Finalmente visualizamos la flag root.txt.
Última actualización
¿Te fue útil?