
Herramienta de investigación de seguridad para PaperCut CVE-2026-81578 y CVE-2026-82078
Herramienta profesional de investigación de seguridad para la evaluación de vulnerabilidades y explotación autorizada de PaperCut NG/MF
╔══════════════════════════════════════════════════════════════════╗
║ PAPERCUT SECURITY TOOL – POWER MODE ║
║ CVE-2026-81578 · CVE-2026-82078 · v3.1.0 ║
║ ⚡ powered by yora 1928 ⚡ ║
╚══════════════════════════════════════════════════════════════════╝
Esta herramienta proporciona una evaluación de vulnerabilidades segura y no destructiva y una (con autorización explícita) para servidores PaperCut NG/MF. Está diseñada para que necesitan validar la presencia de dos vulnerabilidades críticas de PaperCut.
| CVE ID | Descripción | CVSS | CWE |
|---|---|---|---|
| CVE-2026-81578 | Bypass de autenticación mediante peticiones "complex direct" de Apache Tapestry | 8.8 (ALTO) | CWE-306 |
| CVE-2026-82078 | Carga dinámica de clases insegura en utilidades de conexión a bases de datos | 9.4 (CRÍTICO) | CWE-470 |
Referencias clave:
Esta herramienta realiza detección remota basada en indicadores. No afirma demostrar la explotabilidad en servidores PaperCut reales a menos que se utilice --force con autorización escrita explícita.
| Estado | Significado |
|---|---|
SAFE | La versión está corregida o no se detectaron indicadores |
AFFECTED_VERSION | La versión coincide con el rango afectado (aviso del proveedor) |
TAPESTRY_DETECTED | Se detectó el framework Apache Tapestry (utilizado por PaperCut) |
ADMIN_ENDPOINT_ACCESSIBLE | Los endpoints administrativos son accesibles sin autenticación |
DB_CONFIG_ACCESSIBLE | Los endpoints de configuración de base de datos son accesibles |
POTENTIALLY_VULNERABLE | La combinación de indicadores sugiere una posible vulnerabilidad, pero la explotabilidad no está verificada |
NOT_DETECTABLE | Información insuficiente para evaluar |
Las puntuaciones de confianza se calculan en función del peso de la evidencia y están limitadas al 85% para la detección remota para evitar afirmaciones excesivas.
--force (se requiere autorización)--input, --threads)--prefilter)| Característica | Contra objetivo real | Contra laboratorio local |
|---|---|---|
| Huella digital | ✅ Seguro (solo lectura) | ✅ Seguro |
| Evaluación de CVE | ✅ Seguro (basado en indicadores) | ✅ Seguro |
| Demostración de concepto | ❌ BLOQUEADO (solo localhost) | ✅ Permitido |
| Explotación remota | ⚠️ Requiere --force y autorización | ✅ Permitido |
| Cambios de configuración | ❌ Nunca | ✅ Solo dentro del laboratorio |
| RCE / Ejecución de payload | ❌ Nunca | ❌ No implementado (solo simulado) |
# Clonar el repositorio
git clone https://github.com/yourusername/papercut-cve-tool.git
cd papercut-cve-tool
# Crear entorno virtual
python3 -m venv .venv
source .venv/bin/activate # Linux/macOS
# o
.venv\Scripts\activate # Windows
# Instalar dependencias
pip install -r requirements.txt
# Verificar la instalación
python papercut.py self-test
# Mostrar ayuda
python papercut.py --help
# Ejecutar un escaneo completo contra un objetivo
python papercut.py scan http://127.0.0.1:8080
# Solo huella digital
python papercut.py fingerprint http://127.0.0.1:8080
# Comprobar un CVE específico
python papercut.py check http://127.0.0.1:8080 --cve 81578
# Iniciar el laboratorio local educativo
python papercut.py lab
# Ejecutar demostración de concepto (solo laboratorio)
python papercut.py exploit --cve 81578
# Explotación remota (SE REQUIERE AUTORIZACIÓN)
python papercut.py exploit --cve 81578 --target https://target.com:9192 --force
# Escaneo por lotes con prefiltro y subprocesos
python papercut.py scan --input targets.txt --prefilter --threads 10 --timeout 5
# Analizar archivo de registro en busca de IOC
python papercut.py detect server.log
# Generar informe HTML
python papercut.py report result.json --format html
# Menú interactivo
python papercut.py interactive
| Comando | Descripción |
|---|---|
scan TARGET | Escaneo completo de vulnerabilidades con huella digital + comprobaciones de CVE |
fingerprint TARGET | Detecta la versión de PaperCut, el framework Tapestry y los endpoints expuestos |
check TARGET --cve {81578,82078} | Ejecuta una comprobación de indicadores de CVE específica |
lab [--port PORT] [--test] | Inicia el laboratorio local educativo (con autocomprobación opcional) |
exploit --cve {81578,82078} [--target] [--force] | Ejecuta la demostración de concepto o la explotación remota (si está autorizada) |
detect LOGFILE [--output] | Analiza el archivo de registro en busca de indicadores sospechosos |
report INPUT [--format {html,json,text}] [--output] | Genera un informe profesional a partir de resultados JSON |
interactive | Inicia el menú interactivo |
self-test | Ejecuta diagnósticos internos |
| Opción | Descripción |
|---|---|
--timeout N | Tiempo de espera de la solicitud en segundos (predeterminado: 10) |
--verbose | Muestra salida de depuración detallada |
--quiet | Suprime la salida no esencial |
--output FILE | Guarda los resultados en un archivo |
--format {text,json,html} | Formato de salida para escaneo/informe |
| Opción | Descripción |
|---|---|
--input FILE | Archivo con objetivos (uno por línea) para escaneo por lotes |
--output-dir DIR | Directorio para guardar los resultados del lote |
--threads N | Número de subprocesos concurrentes (modo lote) |
--prefilter | Comprueba los puertos abiertos antes del escaneo (solo lote) |
El laboratorio es un servidor HTTP mínimo en Python que reproduce los conceptos de ambas vulnerabilidades con fines educativos.
ConfigEditor, UserList) mientras muestra una página pública (Error.page, Exception.page)# Iniciar el laboratorio
python papercut.py lab
# Ejecutar prueba automatizada del laboratorio
python papercut.py lab --test
Endpoints del laboratorio:
http://127.0.0.1:8080/lab/cve-81578?component=ConfigEditor&display=Errorhttp://127.0.0.1:8080/lab/cve-82078?driver=org.attacker.RCEPayloadLa herramienta analiza archivos de registro en busca de indicadores sospechosos (IOC) derivados de la mecánica de las vulnerabilidades:
| Indicador | Severidad | Descripción |
|---|---|---|
tapestry_complex_direct | CRÍTICO | Patrón de solicitud .page.*.zone de Tapestry |
admin_component_access | ALTO | Acceso a la página ConfigEditor / UserList |
public_page_tapestry | ALTO | Página Error / Exception con Tapestry |
tapestry_post_request | CRÍTICO | Solicitud POST a .page de Tapestry |
db_driver_config | CRÍTICO | Cambios en la configuración del controlador de base de datos |
class_loading_error | ALTO | ClassNotFoundException / NoClassDefFoundError |
dynamic_class_loading | CRÍTICO | Carga de clase desde fuente externa |
python papercut.py detect /var/log/papercut/server.log --output detection.json
Genera informes profesionales en HTML, JSON o texto plano.
# Primero, guarda los resultados del escaneo como JSON
python papercut.py scan http://127.0.0.1:8080 --format json --output result.json
# Generar informe HTML
python papercut.py report result.json --format html --output report.html
# Generar informe JSON
python papercut.py report result.json --format json --output report.json
# Generar informe de texto
python papercut.py report result.json --format text --output report.txt
El informe HTML incluye:
Según el Boletín de Seguridad de PaperCut (27 de agosto de 2026):
| Rango de Versiones | Estado |
|---|---|
| 24.x < 24.1.10 | ❌ Afectada |
| 24.1.10+ | ✅ Corregida |
| 25.x < 25.0.13 | ❌ Afectada |
| 25.0.13+ | ✅ Corregida |
| 26.x < 26.0.5 | ❌ Afectada |
| 26.0.5+ | ✅ Corregida |
| 23.x y anteriores | ⚠️ Fin de vida útil – se recomienda actualizar |
PaperCut utiliza el framework Apache Tapestry. El formato de solicitud "complex direct" de Tapestry permite especificar tanto:
Error.page)ConfigEditor.page)La validación de acceso solo comprueba la página mostrada, no el componente que se está ejecutando. Los atacantes pueden invocar componentes administrativos mientras muestran páginas públicas, evitando por completo la autenticación.
Vector de ataque: POST /papercut/ConfigEditor.page?... con solicitud .zone, mostrada mediante Error.page
PaperCut instancia clases de controladores JDBC a partir de nombres de controladores configurables (p. ej., database.driver.class). La aplicación no valida estos nombres de clase contra una lista blanca. Los atacantes que pueden manipular la configuración del sistema (mediante el bypass de autenticación u otros medios) pueden especificar nombres de clases Java arbitrarios, que son cargados e instanciados por el proceso del servicio PaperCut.
Impacto: Ejecución remota de código (RCE) bajo el contexto de seguridad del servicio PaperCut.
¡Las contribuciones son bienvenidas! Por favor, lee CONTRIBUTING.md para conocer las pautas.
Licencia MIT – consulta LICENSE para más detalles.
Esta herramienta es solo para pruebas de seguridad autorizadas y fines educativos. No la utilices contra ningún sistema sin permiso escrito explícito. Las demostraciones de concepto están bloqueadas a localhost y no funcionarán contra hosts remotos.
Al utilizar esta herramienta, aceptas:
Versión: 3.1.0
Última actualización: 2026-08-29
Mantenedor: yora 1928
"La seguridad no es un producto, sino un proceso." – Bruce Schneier
---
## 🚀 Próximos Pasos en GitHub
1. **Abre** `https://github.com/yora1928/PaperCut-CVE-2026-81578-82078`
2. **Haz clic** en `README.md`
3. **Haz clic** en el icono de lápiz (Editar)
4. **Elimina** todo el contenido anterior
5. **Pega** todo el texto anterior
6. **Haz clic** en `Commit changes...`
7. **Escribe** el mensaje de commit: `Update README.md with final version`
8. **Haz clic** en `Commit changes`
---
## 🎉 **¡Listo! Tu proyecto ya es profesional y está preparado para tu portafolio!** ⚡