
Herramienta de escalada de privilegios para Windows que explota los privilegios SeImpersonate mediante suplantación de tuberías con nombre (Named Pipe), compatible con múltiples métodos de ejecución (CreateProcessWithTokenW, CreateProcessAsUserW, CreateUser, BindShell) para obtener acceso SYSTEM.
En primer lugar - créditos a @splinter_code y @decoder_it por RoguePotato ya que este código se basa en gran medida en él.
Esta es solo otra Potato para obtener SYSTEM mediante privilegios SeImpersonate. Pero esta se diferencia en cuanto a
CreateProcessWithTokenW para generar un nuevo proceso. En su lugar, puedes elegir entre CreateProcessWithTokenW, CreateProcessAsUserW, CreateUser y BindShell.Por lo tanto, este proyecto es capaz de abrir un servidor NamedPipe, suplantar a cualquier usuario que se conecte a él y luego realizar una de las opciones mencionadas anteriormente. Si en el futuro se publican nuevos desencadenantes de autenticación SYSTEM, esta herramienta aún se puede usar para elevar privilegios; solo necesitas usar otro nombre de pipe en ese caso.
Ejemplos:
c:\temp\MultiPotato> MultiPotato.exe -t CreateUser
Tienes por defecto 60 segundos (modificable mediante THEAD_TIMEOUT) para permitir que la cuenta SYSTEM o cualquier otra cuenta se autentique. Esto se puede hacer, por ejemplo, a través de una función MS-EFSRPC sin parchear. Por defecto, MultiPotato escucha en el nombre de pipe \\.\pipe\pwned/pipe/srvsvc que está diseñado para usarse en combinación con MS-EFSRPC. Para otros desencadenantes de autenticación SYSTEM puedes ajustar este valor mediante el parámetro -p.
c:\temp\MultiPotato> PetitPotamModified.exe localhost/pipe/pwned localhost
Usar PetitPotam.py como desencadenante desde un sistema remoto con un usuario válido de bajos privilegios también es posible, por supuesto.
c:\temp\MultiPotato> MultiPotato.exe -t CreateProcessAsUserW -p "pwned\pipe\spoolss" -e "C:\temp\stage2.exe"
Y desencadénalo mediante
c:\temp\MultiPotato>MS-RPRN.exe \\192.168.100.150 \\192.168.100.150/pipe/pwned
Importante: En mis pruebas con MS-RPRN, no pude usar localhost o 127.0.0.1 como objetivo; tiene que ser la dirección IP de red o el FQDN. Además, el Servicio de Impresión debe estar habilitado para que esto funcione.
c:\temp\MultiPotato> MultiPotato.exe -t BindShell -p "pwned\pipe\spoolss"
Recientemente tuve una prueba de penetración en la que pude comprometer un servidor MSSQL mediante inyección SQL y XP_CMDShell. Pero todas las Potatoes públicas fallaron en ese sistema objetivo para elevar privilegios de cuenta de servicio a SYSTEM. El desencadenante de autenticación SYSTEM no era el problema; en cambio, CreateProcessWithTokenW fallaba todo el tiempo con el código NTSTATUS 5 - acceso denegado. Esto no tenía mucho sentido para mí y puede ser un caso límite. Una razón para ello podría ser la protección local del endpoint que pudo haber bloqueado la creación del proceso después de suplantar a SYSTEM.
Por lo tanto, busqué alternativas y pregunté a algunas personas en Twitter al respecto. Nuevamente, créditos a @splinter_code por explicarme cómo hacerlo mediante CreateProcessAsUserW, que funcionó bien en el servidor MSSQL comprometido para obtener un callback C2 de SYSTEM.