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
LocalPotato_CVE-2023-21746 — Exploit de prueba de concepto para escalada de privilegios local en Windows (CVE-2023-21746) que abusa de la autenticación local NTLM para obtener privilegios SYSTEM mediante acceso a recursos compartidos SMB y secuestro de DLL. | Kitploit
Herramientas/GitHubGitHub/muhammad-ali007/localpotato_cve-2023-21746
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónMovimiento LateralPost-ExplotaciónPruebas de PenetraciónDesarrollo de PayloadsExplotación de Binarios

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
GitHub
muhammad-ali007/localpotato_cve-2023-21746

LocalPotato_CVE-2023-21746

Exploit de prueba de concepto para escalada de privilegios local en Windows (CVE-2023-21746) que abusa de la autenticación local NTLM para obtener privilegios SYSTEM mediante acceso a recursos compartidos SMB y secuestro de DLL.

Ver Repositorio
32hace 3 añosAún no revisado

Una vulnerabilidad de escalada de privilegios local (LPE) en Windows fue reportada a Microsoft el 9 de septiembre de 2022 por Andrea Pierini (@decoder_it) y Antonio Cocomazzi (@splinter_code). La vulnerabilidad permitiría a un atacante con una cuenta de bajos privilegios en un host leer/escribir archivos arbitrarios con privilegios de SYSTEM.

Si bien la vulnerabilidad en sí misma no permitiría directamente ejecutar comandos como SYSTEM, podemos combinarla con varios vectores para lograr este resultado. Convenientemente, el 13 de febrero, BlackArrowSec publicó otro PoC de escalada de privilegios que abusa del servicio StorSvc, permitiendo a un atacante ejecutar código como SYSTEM siempre que pueda escribir un archivo DLL en cualquier directorio del PATH.

El PoC de LocalPotato aprovecha una falla en un caso especial de autenticación NTLM llamada autenticación local NTLM para engañar a un proceso privilegiado para que autentique una sesión que el atacante inicia contra el servidor SMB local. Como resultado, el atacante termina teniendo una conexión que le otorga acceso a cualquier recurso compartido con los privilegios del proceso engañado, incluidos recursos especiales como C$ o ADMIN$.

El proceso seguido por el exploit es el siguiente:

  • El atacante hará que un proceso privilegiado se conecte a un servidor malicioso bajo su control. Esto funciona de manera similar a exploits Potato anteriores, donde un usuario sin privilegios puede forzar al sistema operativo a crear conexiones que utilizan un usuario privilegiado (generalmente SYSTEM).
  • El servidor malicioso instanciará un Contexto de Seguridad A para la conexión privilegiada, pero no lo enviará de inmediato. En cambio, el atacante lanzará un cliente malicioso que simultáneamente inicia una conexión contra el servidor SMB local (Compartir archivos de Windows) con sus credenciales actuales sin privilegios. El cliente enviará el mensaje Tipo1 para iniciar la conexión, y el servidor responderá enviando un mensaje Tipo2 con el ID para un nuevo Contexto de Seguridad B.
  • El atacante intercambiará los IDs de Contexto de ambas conexiones para que el proceso privilegiado reciba el contexto de la conexión del servidor SMB en lugar del suyo propio. Como resultado, el cliente privilegiado asociará su usuario (SYSTEM) con el Contexto de Seguridad B de la conexión SMB creada por el atacante. Como resultado, ¡el cliente del atacante ahora puede acceder a cualquier recurso compartido de red con privilegios de SYSTEM!

Al tener una conexión privilegiada a los recursos compartidos SMB, el atacante puede leer o escribir archivos en la máquina objetivo en cualquier ubicación. Si bien esto no nos permitirá ejecutar comandos directamente contra la máquina vulnerable, lo combinaremos con un vector de ataque diferente para lograr ese fin.

Tenga en cuenta que la vulnerabilidad está en el protocolo NTLM, no en el servidor SMB, por lo que este mismo vector de ataque podría usarse teóricamente contra cualquier servicio que utilice autenticación a través de NTLM. En la práctica, sin embargo, se deben abordar algunas limitaciones al seleccionar el protocolo a atacar. El PoC utiliza el servidor SMB para evitar algunas protecciones adicionales existentes para otros protocolos contra vectores de ataque similares e incluso implementa una derivación rápida para que el exploit funcione contra el servidor SMB. Publicación del autor original del exploit - (https://decoder.cloud/2023/02/13/localpotato-when-swapping-the-context-leads-you-to-system/)

Hasta ahora, hemos utilizado LocalPotato para escribir archivos arbitrarios en la máquina objetivo. Para obtener un shell privilegiado, todavía necesitamos descubrir cómo usar la escritura arbitraria para ejecutar un comando.

Recientemente, se encontró otro vector de escalada de privilegios, donde un atacante podría secuestrar una DLL faltante para ejecutar comandos arbitrarios con privilegios de SYSTEM. El único problema con este vector era que un atacante necesitaría escribir una DLL en el PATH del sistema para activarlo. De forma predeterminada, el PATH de Windows solo incluye directorios a los que solo las cuentas privilegiadas pueden escribir. Si bien podría ser posible encontrar máquinas donde la instalación de aplicaciones específicas haya alterado la variable PATH y hecho que la máquina sea vulnerable, el vector de ataque solo se aplica a escenarios particulares. Combinar este ataque con LocalPotato nos permite superar esta restricción y tener un exploit de escalada de privilegios completamente funcional.

StorSvc y secuestro de DLL Según lo descubierto por BlackArrowSec (https://github.com/blackarrowsec/redteam-research/tree/26e6fc0c0d30d364758fa11c2922064a9a7fd309/LPE via StorSvc), un atacante puede enviar una llamada RPC al método "SvcRebootToFlashingMode" proporcionado por el servicio "StorSvc", lo que a su vez terminará provocando un intento de cargar una DLL faltante llamada "SprintCSP.dll". Si no está familiarizado con RPC, piense en ello como una API que expone funciones para que puedan usarse de forma remota. En este caso, el servicio StorSvc expone el método SvcRebootToFlashingMode, al que cualquier persona con acceso a la máquina puede llamar. Dado que StorSvc se ejecuta con privilegios de SYSTEM, crear SprintCSP.dll en algún lugar del PATH hará que se cargue cada vez que se realice una llamada a SvcRebootToFlashingMode.

Compilación del exploit Enlace del exploit - (https://github.com/decoder-it/LocalPotato) Para usar este exploit, primero deberá compilar ambos archivos proporcionados:

  • SprintCSP.dll: Esta es la DLL faltante que vamos a secuestrar. Necesitaremos cambiar el comando para ejecutar una reverse shell.
  • RpcClient.exe: Este programa activará la llamada RPC a SvcRebootToFlashingMode. Dependiendo de la versión de Windows a la que se dirija, es posible que deba editar un poco el código del exploit, ya que diferentes versiones de Windows utilizan diferentes identificadores de interfaz para exponer SvcRebootToFlashingMode. Los proyectos para ambos archivos se pueden encontrar en el directorio "LPE via StorSvc".

Comencemos con "RpcClient.exe". Como se mencionó anteriormente, necesitaremos cambiar el exploit según la versión de Windows de la máquina objetivo. Para hacer esto, necesitaremos cambiar las primeras líneas de "LPE via StorSvc\RpcClient\RpcClient\storsvc_c.c" para que se seleccione el sistema operativo correcto. Esto configurará el exploit para usar el identificador de interfaz RPC correcto. Ahora que el código ha sido corregido, abramos un símbolo del sistema de desarrollador y compilemos el proyecto ejecutando el siguiente comando: Comandos: C:\LPE via StorSvc\RpcClient> msbuild RpcClient.sln C:\LPE via StorSvc\RpcClient> move x64\Debug\RpcClient.exe C:\Users\user\Desktop\ (El ejecutable compilado se encontrará en su escritorio.)

Ahora, para compilar "SprintCSP.dll", solo necesitamos modificar la función "DoStuff()" en "C:\LPE via StorSvc\SprintCSP\SprintCSP\main.c" para que ejecute un comando que nos otorgue acceso privilegiado a la máquina. Para simplificar, haremos que la DLL agregue nuestro usuario actual al grupo de Administradores. También podemos obtener una reverse shell desde ese objetivo a nuestra máquina. Ahora compilemos la DLL ejecutando el siguiente comando y movamos el resultado de vuelta a nuestro escritorio: Comandos: C:\LPE via StorSvc\SprintCSP> msbuild SprintCSP.sln C:\LPE via StorSvc\SprintCSP> move x64\Debug\SprintCSP.dll C:\Users\user\Desktop\

Ahora estamos listos para lanzar el exploit. Asegúrese de tener los archivos "LocalPotato.exe", "RpcClient.exe" y "SprintCSP.dll".

  • Comencemos verificando que nuestro usuario actual no sea parte del grupo de Administradores.
  • Para explotar con éxito "StorSvc", necesitamos copiar "SprintCSP.dll" a cualquier directorio en el PATH actual. Podemos verificar el PATH ejecutando el siguiente comando: C:> reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" -v Path
  • Apuntaremos al directorio %SystemRoot%\system32, que se expande a "C:\windows\system32". Sin embargo, debería poder usar cualquiera de los directorios.
  • Usando LocalPotato, podemos copiar SprintCSP.dll en system32 incluso si estamos usando un usuario sin privilegios: C:\Users\user\Desktop> LocalPotato.exe -i SprintCSP.dll -o \Windows\System32\SprintCSP.dll
  • Con nuestra DLL en su lugar, ahora podemos ejecutar "RpcClient.exe" para activar la llamada a "SvcRebootToFlashingMode", ejecutando efectivamente la carga útil en nuestra DLL. C:\Users\user\Desktop> RpcClient.exe
  • Para verificar si nuestro exploit funcionó como se esperaba, podemos comprobar si nuestro usuario ahora es parte del grupo de Administradores. C:> net user user

Detección y Mitigación

Detección Ahora que hemos entendido cómo funciona el exploit localpotato y cómo se puede encadenar con el servicio StorSrv para ejecutar código como SYSTEM, es momento de ver cómo se puede detectar esto dentro del sistema y cómo prevenir tales ataques.

Regla YARA: Como este ataque implica un ejecutable que se ejecuta en la terminal de línea de comandos con argumentos, dos formas comunes de detectar esta actividad serían mediante la herramienta de coincidencia de patrones YARA para detectar los patrones de archivos y examinando los eventos generados por la ejecución de esta herramienta de hackeo localpotato.exe. Como el ataque utiliza la herramienta de hackeo conocida como localpotato.exe, podemos crear una regla YARA para detectar la presencia de esta herramienta dentro del sistema usando YARA u otras herramientas de detección como THOR para escanear el host. (La regla YARA se adjunta en este repositorio; esta regla mínima busca patrones de cadenas comunes en el ejecutable localpotato).

Regla Sigma: SIGMA es un lenguaje de firma genérico que se utiliza para escribir reglas de detección basadas en los patrones encontrados en los Registros de Eventos. Para detectar localpotato en la red, se espera tener habilitada la monitorización centralizada de registros. La siguiente regla SIGMA está tomada del repositorio oficial de SIGMA (https://github.com/SigmaHQ/sigma/blob/master/rules/windows/process_creation/proc_creation_win_hktl_localpotato.yml).

  • Detectando LocalPotato (la regla se adjunta en el repositorio)
  • Detectando el secuestro de Storsvc y SprintCSP.dll Aprendimos que la vulnerabilidad localpotato se combina con Storsvc para secuestrar SprintCSP.dll y ejecutarse como SYSTEM. La siguiente regla SIGMA adjunta, tomada del GitHub oficial, se puede utilizar para detectar esta actividad.

Podemos usar estas reglas sigma para convertirlas en la herramienta de Detección/Monitoreo existente y buscar en los Registros de Eventos para cazar posibles ataques.

Mitigación

  • Actualizaciones de parches: El exploit localpotato apunta a una vulnerabilidad en el sistema operativo Windows. Asegúrese de que todos los sistemas estén actualizados con los últimos parches de seguridad para evitar que los atacantes exploten esta vulnerabilidad. Esta vulnerabilidad no afecta al SO parcheado.
  • Principio de Mínimos Privilegios: Una forma de evitar que los atacantes exploten localpotato es implementar el principio de mínimo privilegio. Esto significa limitar el acceso de los usuarios solo a los recursos que necesitan para realizar sus funciones laborales. Al hacerlo, es menos probable que los atacantes obtengan los privilegios elevados necesarios para ejecutar el exploit.
  • Monitorear actividad sospechosa: Utilice herramientas como "Splunk" para monitorear actividad sospechosa en su red. Busque signos de un ataque localpotato, como actividad de proceso inusual o intentos de ejecutar código malicioso.
Descargar herramienta