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-2023-45878 — Exploit en Python para CVE-2023-45878, una carga arbitraria de archivos sin autenticación en Gibbon CMS, que permite RCE mediante la carga de una webshell y acceso a un shell interactivo. | Kitploit
Herramientas/GitHubGitHub/can0i0ever0enter/cve-2023-45878
Generación de PayloadsAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónHerramienta de Acceso Remoto
GitHubcan0i0ever0enter/cve-2023-45878

CVE-2023-45878

Exploit en Python para CVE-2023-45878, una carga arbitraria de archivos sin autenticación en Gibbon CMS, que permite RCE mediante la carga de una webshell y acceso a un shell interactivo.

Ver Repositorio
31hace 1 añoAú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

Exploit de Gibbon CMS (CVE-2023-45878)

Este script de Python explota CVE-2023-45878, una vulnerabilidad de carga arbitraria de archivos sin autenticación en Gibbon CMS versiones 25.0.1 y anteriores, que permite la Ejecución Remota de Código (RCE).

Descripción de la vulnerabilidad

CVE-2023-45878 existe en el endpoint rubrics_visualise_saveAjax.php de Gibbon CMS. Este endpoint es vulnerable porque no requiere autenticación y permite escritura arbitraria de archivos.

La vulnerabilidad surge de lo siguiente:

  • Acceso sin autenticación: El endpoint modules/Rubrics/rubrics_visualise_saveAjax.php es accesible sin ninguna autenticación.
  • Escritura arbitraria de archivos: El endpoint acepta los parámetros POST img, path y gibbonPersonID.
    • Se espera que el parámetro img contenga datos con un formato especial, donde la parte después de una coma es una cadena codificada en base64.
  • El parámetro path, si se proporciona, se utiliza como nombre de archivo de destino para el archivo subido, relativo al directorio de instalación de Gibbon.
  • El script decodifica el contenido codificado en base64 del parámetro img y lo escribe en un archivo especificado por el parámetro path.
  • Ejecución Remota de Código: Al elaborar un parámetro img malicioso que contenga código PHP codificado en base64 (por ejemplo, <?php echo "{VERIFY_TAG}"; if(isset($_GET["cmd"])) {echo @shell_exec($_GET["cmd"]);} ?>) y especificar un path que resulte en un archivo .php accesible a través del servidor web, un atacante puede subir un webshell PHP y lograr la Ejecución Remota de Código en el servidor vulnerable.
  • Funcionalidad del script

    Este script de Python automatiza la explotación de CVE-2023-45878. Realiza las siguientes acciones:

    1. Subida de webshell PHP: Construye una solicitud POST maliciosa a modules/Rubrics/rubrics_visualise_saveAjax.php para subir un webshell PHP. El payload del webshell es <?php echo "{VERIFY_TAG}"; if(isset($_GET["cmd"])) {echo @shell_exec($_GET["cmd"]);} ?>, donde {VERIFY_TAG} es una etiqueta personalizable. El payload se codifica en base64 y se envía dentro del parámetro img.
    2. Verificación del shell: Puede verificar si el shell subido es accesible y funcional enviando una solicitud GET con un comando simple (por ejemplo, cmd=echo) y comprobando la VERIFY_TAG en la respuesta. También realiza una verificación previa de un shell existente si se utilizan opciones como --verify o --interactive.
    3. Modo interactivo de shell: Si el shell se sube y verifica (o se encuentra durante una verificación previa), el script puede entrar en un modo interactivo. Este modo incluye:
      • Detección del sistema operativo remoto (Windows/Linux) para adaptar los comandos.
      • Un prompt dinámico que muestra el usuario actual, el nombre del host y el directorio de trabajo remoto (por ejemplo, user@host:cwd$).
      • Manejo integrado del comando cd para cambiar el directorio de trabajo remoto.
      • Comandos especiales del lado del cliente:
        • !help: Muestra ayuda para los comandos interactivos.
        • !upload <ruta_local> [ruta_remota]: Sube un archivo local al servidor objetivo a través del webshell.
        • !download <ruta_remota> [ruta_local]: Descarga un archivo del servidor objetivo.
        • !lcd <ruta>: Cambia el directorio de trabajo local actual.
        • !ldir [ruta]: Lista archivos y directorios en el directorio de trabajo local actual o en la ruta especificada.
      • Utiliza la biblioteca prompt_toolkit si está disponible para una experiencia mejorada de línea de comandos (historial, mejor edición); de lo contrario, recurre al input() incorporado de Python.
    4. Operaciones con archivos: El comando interactivo !upload reutiliza el endpoint vulnerable para escribir archivos arbitrarios, mientras que !download utiliza comandos del sistema ejecutados a través del webshell (como base64 o [Convert]::ToBase64String de PowerShell) para recuperar el contenido del archivo.

    Uso

    root@kitploit:~
    python3 exploit.py <target_url> [options]
    

    Argumentos:

    • target_url: La URL base de la instancia objetivo de Gibbon CMS. El script añadirá http:// si no se proporciona un esquema y asegurará una barra inclinada al final (por ejemplo, http://example.com/gibbon o example.com/gibbon).

    Opciones:

    • -s <ruta_del_shell>, --shell-path <ruta_del_shell>: Especifica la ruta y el nombre de archivo deseados para el shell subido (por ejemplo, shell.php, uploads/shell.php). Si se omite, se generará un nombre de archivo aleatorio de 8 caracteres con extensión .php en el directorio base de Gibbon. Advertencia: Asegúrese de que la ruta especificada sea escribible por el servidor web y accesible a través de la web.
    • -v, --verify: Después de intentar subir el shell, verifica si está funcionando. Esta opción también activa una verificación previa para ver si ya existe un shell con el nombre y la etiqueta especificados; si es así, se omite la subida.
    • -i, --interactive: Entra en modo interactivo de shell. Si el shell no está presente (verificado por una comprobación previa), se subirá y verificará primero.
    • -t <etiqueta>, --tag <etiqueta>: Especifica una etiqueta estática personalizada utilizada en el payload del webshell para fines de verificación. (Por defecto: ExploitGibbon).
    • --timeout <tiempo_de_espera>: Establece el tiempo de espera de las solicitudes HTTP en segundos. (Por defecto: 20).

    Ejemplos:

    • Explotación básica con nombre de shell aleatorio en el directorio principal de Gibbon y etiqueta predeterminada:

      root@kitploit:~
      python3 exploit.py http://target.com/gibbon/
      
    • Explotación, especifica el nombre del shell my_shell.php en el directorio principal de Gibbon y etiqueta predeterminada:

      root@kitploit:~
      python3 exploit.py http://target.com/gibbon/ -s my_shell.php
      
    • Explotación, sube el shell con nombre backdoor.php a uploads/, verifícalo y usa una etiqueta personalizada:

      root@kitploit:~
      python3 exploit.py http://target.com/gibbon/ -s uploads/backdoor.php -v -t MySecretTag123
      
    • Explotación, sube el shell y entra en modo interactivo con etiqueta predeterminada y un tiempo de espera de 30 segundos:

      root@kitploit:~
      python3 exploit.py http://target.com/gibbon/ -s shell.php -i --timeout 30
      
    • Entra en modo interactivo con un shell existente (el script verificará previamente su existencia):

      root@kitploit:~
      python3 exploit.py http://target.com/gibbon/ -s shell.php -t ExploitGibbon -i
      
    • Solo verifica si un shell llamado existing_shell.php con la etiqueta predeterminada está activo (intentará subirlo si no se encuentra):

      root@kitploit:~
      python3 exploit.py http://target.com/gibbon/ -s existing_shell.php -v
      

    Requisitos

    • Python 3.7+ (debido al uso de f-strings, type hints, dataclasses, pathlib)
    • Biblioteca requests: Instalar usando pip install requests
    • Biblioteca rich: Instalar usando pip install rich
    • Biblioteca prompt_toolkit (opcional, para modo interactivo mejorado): Instalar usando pip install prompt_toolkit

    Descargo de responsabilidad

    Este script se proporciona únicamente con fines educativos y de pruebas de seguridad. Úselo bajo su propio riesgo y solo contra sistemas para los que tenga permiso explícito para probar. El autor no es responsable de ningún uso indebido o daño causado por este script. Explotar vulnerabilidades sin autorización es ilegal y poco ético.

    Referencias

    • CVE-2023-45878 en NVD
    • Aviso de seguridad de Herolab USD-2023-0025
    • Fuente de GibbonEdu Core (rubrics_visualise_saveAjax.php versión afectada v25.0.01)
    Descargar herramienta