Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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 setuid compilado estáticamente vulnerable a dlopen con LD_LIBRARY_PATH | Kitploit
Herramientas/GitHubGitHub/betizzel/cve-2025-4802-proof-of-concept
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónAprendizaje y EducaciónExplotación de Binarios
GitHubbetizzel/cve-2025-4802-proof-of-concept

CVE-2025-4802-Proof-of-Concept

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

Ver Repositorio

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
21hace 7 mesesAún no revisado

CVE-2025-4802 — Prueba de Concepto

⚠️ Aviso legal: Este repositorio es para fines educativos y de investigación de seguridad autorizada únicamente. No utilice este exploit contra sistemas que no posea o para los que no tenga permiso explícito de prueba. El uso indebido puede violar leyes y regulaciones.

Resumen del CVE

CampoDetalles
ID de CVECVE-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 GNU C Library (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 el LD_LIBRARY_PATH controlado 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 de root.
  4. El atacante establece LD_LIBRARY_PATH para que apunte al directorio que contiene la biblioteca maliciosa.
  5. Cuando se ejecuta el binario setuid, carga la biblioteca del atacante en lugar de la legítima, ejecutando código arbitrario como root.

Estructura del repositorio

root@kitploit:~
.
├── main.c                          # Vulnerable setuid binary source
├── myso.c                          # Legitimate shared object (safe)
├── evil_library/
│   └── evilso.c                    # Malicious shared object (spawns root shell)
├── proof_of_concept_screenshot.png # Terminal screenshot of the exploit
├── proof_of_concept_video.mp4      # Video walkthrough
├── Makefile                        # Build automation
└── README.md

Requisitos previos

  • SO: Fedora 39 (o cualquier distribución Linux con una glibc vulnerable)
  • Versión de glibc: 2.27 – 2.38 (verificar 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:~
# Build the legitimate shared object
gcc -shared -o myso.so -fPIC myso.c

# Build the vulnerable binary (statically linked)
gcc -static -o main main.c -ldl

# Build the malicious shared object
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

El binario carga el myso.so del atacante desde evil_library/ en lugar del legítimo, generando un shell de root.

Prueba de concepto

Proof of Concept Screenshot

También hay disponible un recorrido en vídeo: proof_of_concept_video.mp4

Mitigación

  • Actualizar glibc a una versión parcheada (> 2.38)
  • Evitar el enlazado estático para binarios setuid que utilicen dlopen()
  • Usar rutas absolutas en las llamadas a dlopen() en lugar de nombres de biblioteca simples
  • Descartar privilegios antes de llamar a dlopen()
  • Usar indicadores de endurecimiento del compilador/enlazador y evitar setuid cuando sea posible

Recursos

  • NVD — CVE-2025-4802
Descargar herramienta