Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
opentsdb_key_cmd_injection — Un exploit para OpenTSDB <= 2.4.1 cmd injection (CVE-2023-36812/CVE-2023-25826) escrito en Fortran | Kitploit
Herramientas/GitHubGitHub/erikwynter/opentsdb_key_cmd_injection
Generación de PayloadsAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónComando y ControlRed Teaming
GitHuberikwynter/opentsdb_key_cmd_injection

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

opentsdb_key_cmd_injection

Un exploit para OpenTSDB <= 2.4.1 cmd injection (CVE-2023-36812/CVE-2023-25826) escrito en Fortran

Ver Repositorio
71hace 2 añosAún no revisado

opentsdb_key_cmd_injection

Un exploit para OpenTSDB <= 2.4.1 con inyección de comandos (CVE-2023-36812/CVE-2023-25826) escrito en Fortran

Acerca de

Este es un exploit para una vulnerabilidad de inyección de comandos en OpenTSDB versiones 2.4.1 y anteriores (CVE-2023-36812/CVE-2023-25826). El exploit está escrito en Fortran moderno y utiliza la biblioteca oficial http-client de Fortran creada a principios de este año.

Detalles de la vulnerabilidad

OpenTSDB es una base de datos de series temporales de código abierto escrita en Java. En 2020, se descubrió una vulnerabilidad de inyección de comandos en las versiones 2.4.0 y anteriores que podía explotarse para obtener ejecución remota de código en el host con privilegios de root. Dado que OpenTSDB no admite autenticación, esta vulnerabilidad, rastreada como CVE-2020-35476, podía ser explotada por cualquier persona con acceso a la interfaz web de OpenTSDB. El problema se solucionó en la versión 2.4.1.

Este año se descubrió que el parche para CVE-2020-35476 estaba incompleto, y la inyección de comandos sigue siendo posible en OpenTSDB 2.4.1 a través de varios vectores.

Detalles:

  • Rastreado como: CVE-2023-36812. Vale la pena señalar que CVE-2023-25826 parece describir la misma vulnerabilidad, y ambos CVE enlazan exactamente al mismo parche.
  • Aviso de seguridad: https://github.com/OpenTSDB/opentsdb/security/advisories/GHSA-76f7-9v52-v2fw
  • Crédito: Gal Goldstein y Daniel Abeles de Oxeye
  • Parche: El parche se introducirá en la versión 2.4.2, que aún no es un lanzamiento oficial. Al momento de escribir esto, el lanzamiento más reciente de OpenTSDB es el 2.4.1, por lo que es probable que la mayoría de las instancias de OpenTSDB en producción sean vulnerables. Dicho esto, las FAQ de OpenTSDB enfatizan que este proyecto "fue escrito solo para uso interno" y "no ha pasado por ninguna revisión de seguridad y no incluye autenticación".

¿Por qué Fortran?

La versión corta es que vi esta conversación: por qué

La idea de escribir un exploit en el lenguaje de programación utilizado para llevar personas a la luna me intrigó tanto que tuve que explorarlo yo mismo. Este exploit es el resultado de ese experimento. A la pregunta de si tuvo éxito, solo puedo responder con estas sabias, aunque malditas, palabras que unen a todos los desarrolladores en sangre: Funciona en mi máquina. ¯\(ツ)/¯

En cualquier caso, mis principales conclusiones de este proyecto son:

  • Fortran es bastante interesante y sorprendentemente fácil de aprender.
  • El ecosistema moderno de Fortran, incluido el gestor de paquetes fpm, muestra un gran potencial.
  • Fortran es un lenguaje fuertemente tipado, y considero que eso es algo bueno porque encontré pocos errores desagradables en tiempo de ejecución.
  • Los proyectos de Fortran con dependencias son grandes porque fpm incluye el código fuente de la dependencia directamente en tu proyecto. El beneficio es que evita la contaminación del sistema.
  • El soporte de bibliotecas es relativamente limitado y caótico en comparación con los lenguajes modernos. Desafortunadamente, esto no solo afecta a la biblioteca http-client.
  • Como era de esperar, es más difícil encontrar buena documentación y consejos para solucionar problemas que en la mayoría de los lenguajes de programación modernos, aunque todavía hay bastantes publicaciones útiles en StackOverflow y foros olvidados de principios de la década de 2000.
  • Herramientas de IA como ChatGPT y GitHub Copilot son compañeros de codificación incluso menos confiables que en el caso de los lenguajes modernos.

En general, no es fácil imaginar que este lenguaje realmente gane relevancia en la seguridad ofensiva, aunque solo sea porque hay tantas alternativas sólidas y modernas para cualquier caso de uso imaginable (Python, Go, Rust, Ruby, C# por nombrar solo algunas). Pero si te gusta experimentar con diferentes lenguajes de programación y no te importa encapsular tus cadenas en llamadas trim() todo el tiempo (POR FAVOR, TOMA NOTA DE ESTO, TE AHORRARÁ MUCHO SUFRIMIENTO), Fortran definitivamente vale la pena echarle un vistazo. Sin ironía, ahora estoy apoyando este lenguaje y podría retomarlo si continúan agregando soporte a la biblioteca http-client, especialmente si en algún momento agregan una biblioteca http-server.

TL;DR: La biblioteca http-client de Fortran hace brr.

Uso

  • Inicia un listener en tu sistema, por ejemplo:
root@kitploit:~
nc -nlvp 1337
  • En una ventana separada, navega al directorio opentsdb_key_cmd_injection
root@kitploit:~
# cd /ruta/hacia/opentsdb_key_cmd_injection/
  • Ejecuta el proyecto mediante fpm (asegúrate de instalarlo primero. Consulta las instrucciones de instalación en la siguiente sección)
root@kitploit:~
# /ruta/hacia/fpm run -- -t <target_url> -l <lhost> -p <lport> [-v]

Opciones:

  • -t - URL OBJETIVO: la URL base de OpenTSDB (obligatorio)
  • -l - LHOST: la IP del sistema donde estás ejecutando un listener (obligatorio)
  • -p - LPORT: el puerto del listener (obligatorio)
  • -v - VERBOSE: habilita la impresión detallada (opcional)

Instalación

  • Instala gfortran. En sistemas basados en Debian se puede hacer mediante:
root@kitploit:~
apt install gfortran
  • Instala fpm. La forma más sencilla es descargar un binario de la última versión estable desde los lanzamientos de fpm en GitHub y luego hacerlo ejecutable:
root@kitploit:~
chmod +x /<ruta>/hacia/fpm

Asegúrate de tener git instalado en tu sistema antes de instalar fpm.

PoC || GTFO

https://github.com/ErikWynter/opentsdb_key_cmd_injection/assets/55885619/223e813e-9710-4193-98a1-ded2246567bf

Configuración de una instancia de OpenTSDB para pruebas

Instalación manual (no recomendada)

Para una instalación manual, puedes seguir las instrucciones oficiales de instalación aquí. Sin embargo, esto puede ser molesto, por lo que recomendaría usar Docker en su lugar.

Instalación con Docker (recomendada)

Para la versión 2.4.0, puedes usar la imagen Docker de vulnhub y seguir las instrucciones de instalación aquí. Esa imagen fue creada para CVE-2020-35476, una vulnerabilidad anterior en OpenTSDB hasta la versión 2.4.0.

Para la versión 2.4.1 y probablemente cualquier otra versión, podrías aprovechar la imagen de vulhub para OpenTSDB 2.4.0 y editarla para instalar la versión que desees. Seguí este enfoque para 2.4.1 y funcionó muy bien.

  • Primero, obtén los archivos Dockerfile y docker-entrypoint.sh de vulhub para OpenTSDB 2.4.0 desde aquí y guárdalos en un directorio dedicado.
  • En el Dockerfile, reemplaza todas las instancias de 2.4.0 con la versión deseada, por ejemplo 2.4.1.
  • No son necesarias ediciones en docker-entrypoint.sh.
  • Crea un archivo docker-compose.yml con el siguiente contenido:
root@kitploit:~
version: '2'
services:
 opentsdb:
   build: ./ruta-hacia-tu-directorio-dockerfile
   ports:
    - "4242:4242"

Yo usé esta estructura de archivos:

root@kitploit:~
wynter@wynter-pc:~/dev/opentsdb$ ls -lR
.:
total 8
-rw-rw-r-- 1 wynter wynter   86 Sep  1 10:55 docker-compose.yml
drwxrwxr-x 2 wynter wynter 4096 Sep  1 10:54 docker_file

./docker_file:
total 8
-rw-rw-r-- 1 wynter wynter 927 Sep  1 10:54 Dockerfile
-rw-rw-r-- 1 wynter wynter 359 Sep  1 10:35 docker-entrypoint.sh
wynter@wynter-pc:~/dev/opentsdb$ cat docker-compose.yml 
version: '2'
services:
 opentsdb:
   build: ./docker_file
   ports:
    - "4242:4242"
  • Finalmente, construye y ejecuta la imagen mediante docker-compose ejecutando el siguiente comando en el directorio donde se encuentra tu archivo docker-compose.yml:
root@kitploit:~
docker-compose up -d
  • Después de unos segundos, OpenTSDB estará disponible en el puerto 4242. No se requiere configuración adicional.

Una breve historia de Fortran (por qué no)

Fortran es conocido principalmente como un lenguaje arcaico que desempeñó un papel importante en la historia de la informática moderna, pero que hoy en día ya no se considera relevante. Se lanzó por primera vez en 1957, más de una década antes que ARPANET y Unix. Según este video de series temporales, fue el lenguaje de programación dominante durante las décadas de 1960 y 1970, y se mantuvo entre los 10 lenguajes más populares hasta finales de la década de 1990. Pero para cuando se lanzó Windows 98, claramente había pasado de moda, en favor de lenguajes más modernos como C, C++, Java y JavaScript, todos los cuales aún se utilizan ampliamente en la actualidad.

Aparte de las almas valientes que mantienen sistemas heredados, dudo que muchas personas en TI (y mucho menos fuera de nuestra burbuja) se hayan topado con Fortran en las últimas dos décadas, o siquiera sepan que todavía existe. A pesar de ello, Fortran sigue en desarrollo activo. Como se indica en el sitio web oficial de Fortran, el lenguaje se revisó por última vez en 2018, y esperamos ver otra revisión este año (2023). De hecho, parece que la comunidad de Fortran ha estado muy activa en los últimos años, lanzando varios proyectos importantes para ayudar a modernizar el ecosistema, incluyendo:

  • stdlib: la primera biblioteca estándar de Fortran (primer lanzamiento: 2021)
  • fpm: un moderno gestor de paquetes y sistema de compilación llamado fpm (primer lanzamiento alfa: 2020)
  • http-client: la biblioteca de cliente HTTP mencionada anteriormente (primer lanzamiento: 2023).

Dado esto, parece que los mantenedores apuntan a un cierto regreso de Fortran, o al menos a darle al lenguaje una oportunidad de sobrevivir unas décadas más. Si bien incluso el fanático más radical de Fortran probablemente no espera volver a ver el lenguaje en el top 10 de los lenguajes de programación más populares, la modernización continua del lenguaje y su ecosistema probablemente ha hecho que Fortran sea más relevante de lo que ha sido en las últimas una o dos décadas.

Descargar herramienta