Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
element-vector-drive-letter — Element Desktop v1.12.29 - Alta - Local - Archivo - vector: el protocolo lee archivos de Windows fuera de la jaula asar | Kitploit
Herramientas/GitHubGitHub/abraxas/element-vector-drive-letter
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebVirtualización de SeguridadPruebas de PenetraciónLabs y Práctica
GitHubabraxas/element-vector-drive-letter

element-vector-drive-letter

Element Desktop v1.12.29 - Alta - Local - Archivo - vector: el protocolo lee archivos de Windows fuera de la jaula asar

Ver Repositorio
hace 3 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

Abraxas Labs - element-vector-drive-letter

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  element-vector-drive-letter

element-vector-drive-letter

Element Desktop v1.12.29 - Element Creations Ltd

Clase: Lectura de archivos Alcance: Local

apps/desktop/src/electron-main.ts registra vector: como un protocolo de archivo privilegiado. La jaula es solo relTarget.startsWith("..") después de path.normalize(path.join(...pathname.split("/").slice(2))). En Windows, una unión de C:, Windows, win.ini ya es C:\Windows\win.ini. Las rutas absolutas no comienzan con .., por lo que la comprobación las deja pasar. La propia nota de protocolo personalizado de Electron también rechaza path.isAbsolute. El path.join de POSIX no trata C: como absoluto, por lo que Linux y macOS no son este remanente. will-navigate permite el paso de vector:.

XSS en el renderer, DevTools u otro proceso local puede hacer fetch("vector://vector/webapp/C:/Windows/win.ini") y leer archivos que el proceso de Element puede abrir.

IDsin CVE todavía
CWECWE-22 / CWE-73
CVSSAlto: 8.3 CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N
Productoelement-web Desktop (apps/desktop)
Afectadov1.12.29 (2d90d6b7b601ecb9ccdf81239a43b4396b4b0c9e). Solo Windows.
Autenticaciónrenderer local (DevTools / XSS)
LicenciaGNU Affero GPL v3.0
Laboratoriosolo 127.0.0.1

Qué puede hacer un atacante

XSS en el renderer, DevTools u otro proceso local que pueda alcanzar vector:. No se ejecutó Element Desktop nativo de Windows. El gadget copia el analizador de URL del pin y usa el path.win32 de Node.

PrivilegioMétodo / sinkReconocimiento / integridad / disponibilidadProbado en laboratorio o inferido
Leer un archivo que el proceso de Element puede abrirfetch("vector://vector/webapp/C:/Windows/win.ini"). La jaula es solo relTarget.startsWith(".."). La unión de letra de unidad es absoluta, por lo que la comprobación pasa. path.win32.resolve(asar, relTarget) es C:\Windows\win.iniReconocimientoProbado en laboratorio con el gadget del analizador de URL. El cuerpo es ELEMENT-VECTOR-DRIVE-LETTER-WITNESS. Desktop nativo no ejecutado
La misma lectura de electron-config, perfiles, archivos de otros usuarios en la misma ACLEl mismo fetch vector://vector/webapp/C:/...ReconocimientoInferido. El laboratorio plantó win.ini, no secretos reales
ATO de Matrix si el marco principal carga HTML del atacante ya presente en discowill-navigate permite el paso de vector:. HTML hostil en vector://vector obtiene preload / window.electron (tokens, Seshat, clearStorage)IntegridadInferido de webcontents-handler.ts y preload. El laboratorio no navegó un BrowserWindow
Traversal ../ del árbol asarvector://vector/webapp/../n/aCerrado aquí. La URL de WHATWG lo colapsa; el manejador devuelve FILE_NOT_FOUND (-6)
Fetch de letra de unidad en POSIX / macOS / Linuxpath.posix.join deja C:/Windows/win.ini bajo asarn/aCerrado aquí. Gadget posix 404, sin testigo
RCE / LPE del SOnodeIntegration: false, app.enableSandbox()n/aCerrado. No es este remanente

Remanentes del mismo pin: fragment guest wipe, Univention ICS javascript: href.

Cómo lo encontré

Fijé element-hq/element-web v1.12.29 después del lanzamiento en GitHub del 22 de septiembre de 2026. El XSS de Timeline, el XSS de exportación HTML (GHSA-wqmv), el HTML de la página de inicio (GHSA-wrcp), el token de medios del widget (GHSA-3jm3) y las claves de Element Call (GHSA-69q3) están cerrados en esta etiqueta. El protocolo personalizado de Desktop todavía solo comprueba startsWith("..").

new URL("vector://vector/webapp/C:/Windows/win.ini") mantiene C: como segmento de ruta. path.win32.join("C:", "Windows", "win.ini") es C:\Windows\win.ini. El path.win32.join(asar, abs) de Node concatena; path.win32.resolve descarta la raíz del asar.

Giros equivocados ya registrados: tratar ../ como el remanente (WHATWG lo colapsa, el manejador da 404); llamar al C: de POSIX el mismo bug (la unión posix permanece bajo asar); inflar la lectura de archivos a RCE del SO (el sandbox y nodeIntegration: false siguen activos). Una reverse shell. Teatro.

Laboratorio

Gadget del analizador de URL. path.win32 de Node frente a path.posix. Sin proceso de Element Desktop de Windows. El /lab/oracle/win.ini plantado sustituye a C:\Windows\win.ini. /lab/asar/index.html es la jaula del asar.

python3 element-vector-drive-letter-Abraxas-Labs.py

o

cd lab
./run.sh

Objetivo solo http://127.0.0.1:19610. Proyecto de Compose element-vector-drive-letter. El stack se desmonta tras la ejecución.

SUCCESS element-vector-drive-letter how=gadget win32-drive-letter=200 posix-drive-letter=404 control-dotdot=404 patched-isabs=404 ELEMENT-VECTOR-DRIVE-LETTER-WITNESS

La solución

Después de normalizar, rechazar path.isAbsolute(relTarget) y exigir que path.resolve(baseDir, relTarget) permanezca bajo path.resolve(baseDir) (path.relative, rechazar ..).

Referencias

  • github.com/element-hq/element-web etiqueta v1.12.29
  • electron-main.ts (registerFileProtocol)
  • webcontents-handler.ts (will-navigate)
  • Parcheados cercanos (no esta jaula): GHSA-wqmv · GHSA-wrcp
  • Mismo pin: element-fragment-guest · element-ics-javascript
  • CWE-22

Licencia

GNU Affero GPL v3.0. Ver LICENSE. Solo laboratorio en loopback. Sin garantía.

Descargar herramienta