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-2020-0753-and-CVE-2020-0754 — Informe y POC para CVE-2020-0753, CVE-2020-0754 y seis vulnerabilidades DOS de Windows corregidas. | Kitploit
Herramientas/GitHubGitHub/afang5472/cve-2020-0753-and-cve-2020-0754
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónPapers e InvestigaciónAprendizaje y EducaciónExplotación de Binarios
GitHubafang5472/cve-2020-0753-and-cve-2020-0754

CVE-2020-0753-and-CVE-2020-0754

Informe y POC para CVE-2020-0753, CVE-2020-0754 y seis vulnerabilidades DOS de Windows corregidas.

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
Ver Repositorio
1481hace 6 añosAún no revisado

Writeup y PoC para CVE-2020-0753, CVE-2020-0754 y seis vulnerabilidades DOS de Windows corregidas

Explotación del bug de condición de carrera en FileSystem - análisis de CVE-2020-0753 y CVE-2020-0754

El servicio de Informe de Errores de Windows (WER) ha corregido 2 errores de Elevación de Privilegios en el último Patch Tuesday. A estos dos errores se les han asignado las identificaciones CVE-2020-0753 y CVE-2020-0754. Ambos errores aprovechan un bug de condición de carrera en las operaciones de FileSystem del servicio. Sin embargo, estos dos errores no son tan fáciles de explotar debido a las pequeñas ventanas de carrera y las ubicaciones inciertas de descarga de archivos. Aquí compartimos nuestras técnicas para explotarlos.

La causa raíz de los dos bugs de carrera se detalla en nuestros informes. La causa real se puede expresar como Predecible es Vulnerable. Cuando el servicio WER procesa archivos temporales, manipula la ubicación de archivo C:\ProgramData\Microsoft\Windows\WER\Temp, que es un directorio habilitado para lectura/escritura para Usuarios Autenticados. Esto significa que un usuario normal de nivel medio (medium-IL) puede sobrescribir un archivo creado por el servicio WER, e incluso convertirlo en un enlace de FileSystem para dañar/eliminar otros archivos a los que de otra manera no podría acceder.

Para mantener seguras las operaciones de archivos, el servicio WER se basa en una API estándar llamada GetTempFileNameW y la envuelve con wersvc.dll->UtilGetTempFile. Esta API ayuda a WerSvc a generar un nombre de archivo aleatorio no ocupado en la forma "WER****.tmp",

la parte aleatoria del nombre del archivo se genera con un número hexadecimal de 4 bytes, desde 0000 hasta FFFF. Si un número ya ha sido tomado para crear un archivo, la API elegirá otro nombre de archivo aleatorio.

La estrategia tiene claramente un fallo si uno crea 65535 archivos con nombres desde WER0000.tmp hasta

WERFFFE.tmp. La API elegirá un número aleatorio y probará si el nombre de archivo existe, por ejemplo WERA560.tmp. Encontrará que el archivo ya existe, por lo que continuará probando desde WERA560.tmp hasta WERFFFF.tmp. Durante la prueba, aparece una ventana de preparación porque hemos encontrado una forma de hacer que WerSvc se atasque en la llamada a GetTempFileNameW durante 4-5 segundos, lo que supone una brecha de tiempo bastante grande. Mientras tanto, forzamos al servicio a crear un archivo temporal con un nombre de archivo fijo, que es

WERFFFF.tmp.

Después de que el servicio crea el archivo temporal llamado WERFFFF.tmp, la API cierra automáticamente el manejador que tiene sobre el archivo y devuelve el nombre del archivo al servicio para realizar más operaciones sobre él. Esta es precisamente la posición que introduce el bug. Se cumplen tres condiciones:

  1. El archivo creado por el servicio está en una posición controlable por el usuario normal.
  2. El servicio cierra todos los manejadores del archivo.
  3. El servicio usará el archivo más tarde (escribir o eliminar).

Aquí el servicio escribirá contenido en el archivo y lo eliminará. Tanto la escritura como la eliminación causarán escalada de privilegios al aprovechar enlaces de FileSystem y ciertas técnicas de explotación.

Para convertir el bug en eliminación arbitraria de archivos, aprovechamos creativamente múltiples uniones de directorio (directory junctions) para completar la explotación. Nuestro exploit contiene los siguientes pasos:

  • colocamos todos los WER***.tmp en $pwd\1\, y creamos un junction $pwd\2\ -> $pwd\1\;
  • creamos un proceso para activar continuamente esta función con la ruta $pwd\2\, y creamos otro proceso para ejecutar continuamente el comando SetOplock $pwd\1\WERFFFF.tmp;
  • Una vez que se activa el Oplock, creamos un junction $pwd\2\ -> \RPC CONTROL\, y luego creamos un enlace simbólico de objeto \RPC CONTROL\WERFFFF.tmp -> $target y \RPC CONTROL\WERFFFF.tmp.etl -> $target
  • Liberamos el oplock, y el archivo objetivo será eliminado con privilegios de sistema.

La explotación detallada y el PoC se proporcionan en WERReport-CVE-2020-0753.

Al explotar el fallo en GetTempFileNameW, obtenemos una ubicación predecible en la que operará el servicio; al hacer uso de uniones de FileSystem de múltiples niveles, hacemos que la condición de carrera sea explotable de manera confiable.

Mientras tanto, notamos que este tipo de bug de carrera también puede causar un posible problema de sobrescritura de archivos, lo que probablemente conduce a bugs de Escalada de Privilegios bajo ciertas circunstancias.

De la corrupción arbitraria de archivos con control parcial a la escalada de privilegios

Para explicar la razón por la cual la corrupción arbitraria de archivos (si puedes controlar una parte muy pequeña del contenido del archivo: menos de 63 bytes) puede convertirse en EoP, debemos prestar atención al mecanismo de funcionamiento de Windows Defender.

Windows Defender tiene una base de datos de firmas de malware. Si algún archivo contiene alguna firma de malware, Defender considerará que es malware y lo eliminará. Sin embargo, esta característica resulta en una superficie de ataque adicional. Por ejemplo, en WCTF2019 @icchy de tokyowesterns diseñó un desafío de Windows CTF llamado "Gyotaku The Flag", que utiliza esta característica como un oráculo para filtrar información.

Aquí aprovechamos esta característica de Windows Defender para eliminar archivos arbitrarios si tenemos una corrupción arbitraria de archivos con control parcial del contenido del archivo. Simplemente podemos escribir una firma de malware en un archivo y desencadenar un escaneo predeterminado de Windows Defender. El archivo será colocado en el área de aislamiento de Defender, que puede ser eliminada por un usuario normal (es decir, un usuario no administrador de nivel medio (medium-IL)) simplemente desencadenando la operación de escaneo 2 veces.

Por lo tanto, un bug de corrupción arbitraria de archivos puede convertirse en eliminación arbitraria de archivos siempre que se pueda insertar una cadena de firma de malware en el archivo objetivo utilizando el bug.

  • Paso 1: Corrompe el archivo objetivo con un bug, inserta una cadena de característica reconocible por Windows Defender.
  • Paso 2: Desencadena que Windows Defender escanee el archivo objetivo, causando que el archivo sea aislado.
  • Paso 3: Desencadena el escaneo nuevamente, el archivo objetivo se elimina.

Al aprovechar esta técnica, obtenemos una eliminación arbitraria de archivos con la ayuda de Defender.

La eliminación arbitraria de archivos puede explotarse mucho más fácilmente para obtener más privilegios.

Seis vulnerabilidades DOS de FileSystem corregidas en Microsoft OneDrive

Microsoft OneDrive es el paquete de aplicaciones que proporciona el servicio de almacenamiento personal en la nube. Esta aplicación se ha integrado en Windows como una opción de instalación predeterminada desde Windows 8. Durante nuestra investigación, se encontraron y enviaron a MSRC 6 vulnerabilidades en las tareas programadas de mantenimiento de OneDrive.


Aquí hay una tabla de vulnerabilidades que vamos a exponer en las tareas programadas relevantes de Microsoft OneDrive:

Los 6 bugs son causados porque el servicio maneja incorrectamente hardlinks y symlinks, mientras opera en ubicaciones que el usuario normal puede controlar. Durante la explotación de estos bugs, una dificultad surge porque el nombre del archivo generalmente contiene un PID del proceso actual o una marca de tiempo que indica cuándo se opera el archivo. Ambos se pueden resolver estableciendo un oplock en un archivo DLL único que el servicio intentará cargar cuando se active para ejecutarse, donde tenemos la capacidad de obtener todo lo necesario para predecir el nombre del archivo que el servicio intentará operar más tarde. Se proporciona un PoC de ejemplo en el directorio FileSyncConfigTemp_hardlink.

Impactos de las vulnerabilidades

Las 6 vulnerabilidades mencionadas anteriormente se proporcionan con un informe completo y un programa PoC. Aunque la mayoría de los bugs causan corrupción arbitraria de archivos en primer lugar, este tipo de bug aún causa un bloqueo del sistema (al sobrescribir archivos críticos de configuración del sistema), y todos ellos requerirían la reinstalación de Windows. Por lo tanto, cumplen con el estándar del tipo de bug de Denegación de Servicio del Sistema Windows.

Además, este tipo de bug puede causar realmente Elevación de Privilegios bajo cierto contexto. Hemos discutido la técnica de explotación que puede aprovechar un problema de sobrescritura arbitraria de archivos para lograr una primitiva de eliminación arbitraria de archivos, por lo que la Elevación de Privilegios es alcanzable.

Créditos de las vulnerabilidades

Fangming Gu

Zhiniang Peng de Qihoo 360 Core Security

Cronología

Feb 02 2020: Vulnerabilidades reportadas.

Feb 08 2020: MSRC investigó y respondió acerca de los 6 bugs de OneDrive que enviamos. Su conclusión es que no se corrigen debido a Demasiada interacción del usuario requerida/demasiado difícil construir un exploit confiable.

Feb 08 2020: Respondimos: No hay necesidad de interacción del usuario. Solo necesitas esperar a que se ejecute la tarea programada. Por lo tanto, este escenario es típico.

Feb 11 2020: MSRC respondió: ¿Cómo obtienes el archivo específico en la máquina del usuario? ¿Y estás colocando cada permutación de ese archivo en esa carpeta? ¿Tiene que coincidir exactamente con Fecha/Hora/PID? Por estas razones, parece que requiere demasiado esfuerzo del usuario.

Feb 11 2020: Respondimos: Nuestro PoC es una versión simplificada. Para reducir el esfuerzo de predecir el nombre del archivo. En realidad, solo necesitas establecer un oplock. Luego puedes obtener todos los {pid},{hour},{data}. Por lo tanto, no hay necesidad de interacción del usuario.

Feb 12 2020: Preguntando si podemos publicar el writeup de esas 6 vulnerabilidades.

Feb 13 2020: MSRC respondió: Puedes publicar un writeup.

Feb 22 2020: Detalles publicados.

Actualización de estado: Todas las 6 vulnerabilidades han recibido una corrección en el Patch Tuesday de marzo de 2020.

Descargar herramienta
Programa vulnerableTipoPoC proporcionado
FileSyncConfig.exeHardLinksí
FileSyncHelper.exeHardLinksí
OneDriveFileSyncConfig.exeSymLinksí
OneDriveSetup.exeHardLinksí
OneDriveSetup.exeHardLinksí
OneDriveStandaloneUpdater.exeHardLinksí